<?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>219510</bug_id>
          
          <creation_ts>2020-12-03 14:48:58 -0800</creation_ts>
          <short_desc>Web Inspector: REGRESSION(r266467): viewing a WebSocket created before Web Inspector was opened doesn&apos;t show any message frames</short_desc>
          <delta_ts>2020-12-17 10:26:34 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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="Devin Rousso">hi</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>pangle</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711840</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-12-03 14:48:58 -0800</bug_when>
    <thetext># STEPS TO REPRODUCE
1. inspect &lt;http://devinrousso.com:8080/dots/&gt;
2. select the &quot;websocket&quot; resource
3. click on &quot;Play AI&quot; and then click anywhere in the grid

# EXPECTED
there would be message frames of the format `{&quot;type&quot;:&quot;move&quot;,&quot;player&quot;:1,&quot;line&quot;:{&quot;r&quot;:3,&quot;c&quot;:6,&quot;side&quot;:&quot;b&quot;},&quot;current&quot;:2}` 

# ACTUAL
nothing is shown after &quot;WebSocket Connection Established&quot;

# NOTES
[Error] Assertion Failed
	_webSocketFrameReceivedOrSent (NetworkManager.js:750)
	webSocketFrameSent (NetworkManager.js:728)
	webSocketFrameSent (NetworkObserver.js:109)
	_dispatchEvent (Connection.js:210)
	dispatch (Connection.js:79)
	dispatchMessageFromTarget (TargetManager.js:176)
	dispatchMessageFromTarget (TargetObserver.js:47)
	_dispatchEvent (Connection.js:210)
	dispatch (Connection.js:79)
	dispatch (InspectorBackend.js:232)
	(anonymous function) (MessageDispatcher.js:42)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711841</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-03 14:49:13 -0800</bug_when>
    <thetext>&lt;rdar://problem/71953639&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715248</commentid>
    <comment_count>2</comment_count>
      <attachid>416367</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-16 15:37:07 -0800</bug_when>
    <thetext>Created attachment 416367
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715251</commentid>
    <comment_count>3</comment_count>
      <attachid>416367</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-12-16 15:45:58 -0800</bug_when>
    <thetext>Comment on attachment 416367
Patch v1.0

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

LGTM, let&apos;s wait for Youenn to take a peek too.

&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:163
&gt; +    // Dummy implementation of inspector related APIs.

Comment is probably not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715252</commentid>
    <comment_count>4</comment_count>
      <attachid>416367</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-16 15:54:03 -0800</bug_when>
    <thetext>Comment on attachment 416367
Patch v1.0

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

&gt;&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:163
&gt;&gt; +    // Dummy implementation of inspector related APIs.
&gt; 
&gt; Comment is probably not needed.

I could go either way with this - this comment was removed in r266467, and actually appears meant to describe not only `requestIdentifier()` but also `hasCreatedHandshake()` and `isConnected()`, although I suppose it&apos;s pretty obvious these are stubs given their values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715253</commentid>
    <comment_count>5</comment_count>
      <attachid>416367</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-12-16 15:56:29 -0800</bug_when>
    <thetext>Comment on attachment 416367
Patch v1.0

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

r=me as well, nice work!

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:74
&gt; -        m_identifier = page-&gt;progress().createUniqueIdentifier();
&gt; +        m_requestIdentifier = page-&gt;progress().createUniqueIdentifier();

This doesn&apos;t appear to have been touched in r266467.  Is this renaming just for clarity?

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.h:212
&gt; +    unsigned m_requestIdentifier { 0 }; // m_identifier == 0 means that we could not obtain a request identifier.

NIT: Should the comment also change `m_identifier` to `m_requestIdentifier`?

&gt;&gt; Source/WebCore/Modules/websockets/WorkerThreadableWebSocketChannel.h:163
&gt;&gt; +    // Dummy implementation of inspector related APIs.
&gt; 
&gt; Comment is probably not needed.

Yeah I&apos;d just move it below the FIXME comment.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:66
&gt; +                    data: &quot;Hello World! ÐÑÐ¸Ð²ÐµÑ ÐÐ¸Ñ!&quot;,

What are these characters?

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:78
&gt; +

Style: unnecessary newline

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:86
&gt; +                    resolve();

NIT: Just in case, please remove this event listener so that if more test cases are added later it won&apos;t interfere with the output.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715254</commentid>
    <comment_count>6</comment_count>
      <attachid>416367</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-16 16:07:59 -0800</bug_when>
    <thetext>Comment on attachment 416367
Patch v1.0

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

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:74
&gt;&gt; +        m_requestIdentifier = page-&gt;progress().createUniqueIdentifier();
&gt; 
&gt; This doesn&apos;t appear to have been touched in r266467.  Is this renaming just for clarity?

Yes, the rename is for clarity so that it is clear that the `m_requestIdentifier` is not the same as the `m_identifier`.

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:66
&gt;&gt; +                    data: &quot;Hello World! ÐÑÐ¸Ð²ÐµÑ ÐÐ¸Ñ!&quot;,
&gt; 
&gt; What are these characters?

This is the same data from http/tests/websocket/tests/hybi/inspector/send-and-receive.html - Those characters are supposed to be `Hello World!` in Russian. I&apos;m going to drop them, as the non-ascii case is already tested elsewhere, and the encoding of these appear to be more trouble than they are worth to have in more than one place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715258</commentid>
    <comment_count>7</comment_count>
      <attachid>416369</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-16 16:21:52 -0800</bug_when>
    <thetext>Created attachment 416369
Patch v1.1 - BJ and Devin review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715337</commentid>
    <comment_count>8</comment_count>
      <attachid>416369</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-17 01:10:55 -0800</bug_when>
    <thetext>Comment on attachment 416369
Patch v1.1 - BJ and Devin review notes

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

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:74
&gt; +        m_requestIdentifier = page-&gt;progress().createUniqueIdentifier();

Is it necessary to be a progress identifier so that it might not be ambiguous with other resource loads?
If so, we should do the same strategy in the new code path (WebKit::WebSocketChannel) to resolve the same bug in the new code path.
New code path can be enabled by enabling IsNSURLSessionWebSocketEnabled flag.

Ideally we would reuse identifier() here, or do m_requestIdentifier = identifier().toUInt64() if we want to have null identifiers in case of no page.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:207
&gt;      if (m_document) {

As a side note, we call InspectorInstrumentation::didXX methods in various places with different pre conditions.
Here m_document, below m_document &amp;&amp; m_requestIdentifier, or m_requestIdentifier &amp;&amp; InspectorInstrumentation::hasFrontends(), sometimes no check.
Should we try to use the same check everywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715385</commentid>
    <comment_count>9</comment_count>
      <attachid>416369</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-17 08:21:18 -0800</bug_when>
    <thetext>Comment on attachment 416369
Patch v1.1 - BJ and Devin review notes

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

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:74
&gt;&gt; +        m_requestIdentifier = page-&gt;progress().createUniqueIdentifier();
&gt; 
&gt; Is it necessary to be a progress identifier so that it might not be ambiguous with other resource loads?
&gt; If so, we should do the same strategy in the new code path (WebKit::WebSocketChannel) to resolve the same bug in the new code path.
&gt; New code path can be enabled by enabling IsNSURLSessionWebSocketEnabled flag.
&gt; 
&gt; Ideally we would reuse identifier() here, or do m_requestIdentifier = identifier().toUInt64() if we want to have null identifiers in case of no page.

Yeah, the identifier needs to not be ambiguous with other resource loads. I&apos;ll correct `WebKit::WebSocketChannel` by getting the progressIdentifier from its `m_inspector`&apos;s `m_progressIdentifier`. I&apos;m also going to change this member name from `m_requestIdentifer` to `m_progressIdentifier` in order to be slightly consistent.

&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:207
&gt;&gt;      if (m_document) {
&gt; 
&gt; As a side note, we call InspectorInstrumentation::didXX methods in various places with different pre conditions.
&gt; Here m_document, below m_document &amp;&amp; m_requestIdentifier, or m_requestIdentifier &amp;&amp; InspectorInstrumentation::hasFrontends(), sometimes no check.
&gt; Should we try to use the same check everywhere?

That&apos;s a great question. Looking at what checks are implemented for `WebKit::WebSocketChannel`, all calls are actually handled through and intermediate `WebCore::WebSocketChannelInspector` which checks for the presence of a progress identifier and the document. The one check of `InspectorInstrumentation::hasFrontends()` makes sense in order to avoid additional work of getting the request header when we aren&apos;t inspecting. My first instinct here is that `WebCore::WebSocketChannel` should adopt the same use of `WebCore::WebSocketChannelInspector` as `WebKit::WebSocketChannel`. If so, that&apos;s probably best handled as a follow-up enhancement since it isn&apos;t directly related to the issue at hand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715386</commentid>
    <comment_count>10</comment_count>
      <attachid>416369</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-17 08:32:54 -0800</bug_when>
    <thetext>Comment on attachment 416369
Patch v1.1 - BJ and Devin review notes

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

&gt;&gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:207
&gt;&gt;&gt;      if (m_document) {
&gt;&gt; 
&gt;&gt; As a side note, we call InspectorInstrumentation::didXX methods in various places with different pre conditions.
&gt;&gt; Here m_document, below m_document &amp;&amp; m_requestIdentifier, or m_requestIdentifier &amp;&amp; InspectorInstrumentation::hasFrontends(), sometimes no check.
&gt;&gt; Should we try to use the same check everywhere?
&gt; 
&gt; That&apos;s a great question. Looking at what checks are implemented for `WebKit::WebSocketChannel`, all calls are actually handled through and intermediate `WebCore::WebSocketChannelInspector` which checks for the presence of a progress identifier and the document. The one check of `InspectorInstrumentation::hasFrontends()` makes sense in order to avoid additional work of getting the request header when we aren&apos;t inspecting. My first instinct here is that `WebCore::WebSocketChannel` should adopt the same use of `WebCore::WebSocketChannelInspector` as `WebKit::WebSocketChannel`. If so, that&apos;s probably best handled as a follow-up enhancement since it isn&apos;t directly related to the issue at hand.

Meant to add that for all of these InspectorInstrumentation calls, they immediately return if there are no frontends.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715390</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-17 08:40:17 -0800</bug_when>
    <thetext>OK, let&apos;s go then, we should at least fix the current code path.
It would be nice to do some clean-up.
And we also need to update the code to support the new code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715393</commentid>
    <comment_count>12</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-17 08:43:57 -0800</bug_when>
    <thetext>(In reply to Patrick Angle from comment #9)
&gt; Comment on attachment 416369 [details]
&gt; Patch v1.1 - BJ and Devin review notes
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416369&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:74
&gt; &gt;&gt; +        m_requestIdentifier = page-&gt;progress().createUniqueIdentifier();
&gt; &gt; 
&gt; &gt; Is it necessary to be a progress identifier so that it might not be ambiguous with other resource loads?
&gt; &gt; If so, we should do the same strategy in the new code path (WebKit::WebSocketChannel) to resolve the same bug in the new code path.
&gt; &gt; New code path can be enabled by enabling IsNSURLSessionWebSocketEnabled flag.
&gt; &gt; 
&gt; &gt; Ideally we would reuse identifier() here, or do m_requestIdentifier = identifier().toUInt64() if we want to have null identifiers in case of no page.
&gt; 
&gt; Yeah, the identifier needs to not be ambiguous with other resource loads.
&gt; I&apos;ll correct `WebKit::WebSocketChannel` by getting the progressIdentifier
&gt; from its `m_inspector`&apos;s `m_progressIdentifier`. I&apos;m also going to change
&gt; this member name from `m_requestIdentifer` to `m_progressIdentifier` in
&gt; order to be slightly consistent.

Thanks!

It would be nice to do a patch that makes the identifiers consistent.
Either we can update inspector code to not require web socket identifiers to not clash with load identifiers.
Or we could introduce a thread-safe ProgressIdentifier and use it for both WebSocket and regular loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715399</commentid>
    <comment_count>13</comment_count>
      <attachid>416424</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-17 09:03:23 -0800</bug_when>
    <thetext>Created attachment 416424
Patch v1.2 - Youenn review notes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715401</commentid>
    <comment_count>14</comment_count>
      <attachid>416424</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-12-17 09:07:54 -0800</bug_when>
    <thetext>Comment on attachment 416424
Patch v1.2 - Youenn review notes

LGTM.
It would be good to check the test is passing with the new code path.
This can be done locally by changing WKPreferencesSetIsNSURLSessionWebSocketEnabled(preferences, false) to WKPreferencesSetIsNSURLSessionWebSocketEnabled(preferences, true) in TestController.cpp than running the new test with WTR.
If it does not pass, let me know and I&apos;ll look at the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715411</commentid>
    <comment_count>15</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-12-17 09:25:49 -0800</bug_when>
    <thetext>Just verified the test passes when enabling the NSURLSession WebSockets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715438</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-17 10:26:33 -0800</bug_when>
    <thetext>Committed r270937: &lt;https://trac.webkit.org/changeset/270937&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416424.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416367</attachid>
            <date>2020-12-16 15:37:07 -0800</date>
            <delta_ts>2020-12-16 16:21:50 -0800</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-219510-20201216183706.patch</filename>
            <type>text/plain</type>
            <size>18608</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uZjdlYjI4MmEwMGUzMDU2Mjg2MTZmMjQzZjI3N2Vi
ZDgyZTQ1NmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEyLTE2ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
RUdSRVNTSU9OKHIyNjY0NjcpOiB2aWV3aW5nIGEgV2ViU29ja2V0IGNyZWF0ZWQgYmVmb3JlIFdl
YiBJbnNwZWN0b3Igd2FzIG9wZW5lZCBkb2Vzbid0IHNob3cgYW55IG1lc3NhZ2UgZnJhbWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRl
c3Q6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2Fk
Lmh0bWwKKworICAgICAgICBSZXN0b3JlZCBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIHIyNjY0Njcg
c28gdGhhdCB0aGUgYHJlcXVlc3RJZGVudGlmaWVyYCAocHJldmlvdXNseSBgY2hhbm5lbElkZW50
aWZpZXJgKSBpcworICAgICAgICBhdmFpbGFibGUgZnJvbSBgV2ViU29ja2V0Q2hhbm5lbGAuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmRpZE9wZW5Tb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6ZGlkRmFpbFNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpzZW5kRnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2Nr
ZXRGb3JSZXF1ZXN0SWQpOgorCiAyMDIwLTEyLTE0ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NTSU9OKDI3MDQzNSkgW0dTdHJlYW1lcl0gTWFueSBt
ZWRpYSBzb3VyY2UgdGVzdHMgZmFpbGluZyBhbmQgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjODNm
NTY1OGE2ZmIwMTYxNTYwZTk3OWE2MjE3NmZhYWJiZTYwYTU2Li42NmM0OWM2MWYwNDQzZGUxM2U1
OGVlNzQ3MzRhNjEyMjk5OGQ4NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEy
LTE2ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OKHIyNjY0NjcpOiB2aWV3aW5nIGEgV2ViU29ja2V0IGNyZWF0ZWQg
YmVmb3JlIFdlYiBJbnNwZWN0b3Igd2FzIG9wZW5lZCBkb2Vzbid0IHNob3cgYW55IG1lc3NhZ2Ug
ZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk1MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXN0b3JlZCBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIHIyNjY0Njcgc28gdGhhdCB0aGUgYHJlcXVl
c3RJZGVudGlmaWVyYCAocHJldmlvdXNseSBgY2hhbm5lbElkZW50aWZpZXJgKSBpcworICAgICAg
ICBhdmFpbGFibGUgZnJvbSBgV2ViU29ja2V0Q2hhbm5lbGAuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDIwLTEyLTE0ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFNo
b3VsZCBlbmFibGUgV2ViUHJvY2Vzc0NhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmlu
ZGV4IGMzOTdmYWEwNmFkODY3NjZiYjZhOTRjNDFjOTg0ZGZmMmY2YzIxOTcuLmIwNGU5OGE3ZjYw
YTBhNGI3MDY1YjU0OGMzYTllNGE4MDQ2ZTlmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwogCisgICAgdmlydHVhbCB1bnNp
Z25lZCByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
Q3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb25uZWN0
ZWQoKSBjb25zdCA9IDA7CiAgICAgdXNpbmcgQ29va2llR2V0dGVyID0gRnVuY3Rpb248U3RyaW5n
KGNvbnN0IFVSTCYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBmMDA0MGEyNDYwM2Q0NGUyYzI1YjFjZDRh
MjIzNjc5NzNhZjVhMjAxLi5mNWQ3YzM2YjAwZGU0ZDc2MWMxNDk5MDJhMjBiODU3ODAxZGRlYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC03MSw5ICs3MSw5IEBAIFdlYlNvY2tldENoYW5uZWw6OldlYlNv
Y2tldENoYW5uZWwoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBj
CiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIGlmIChQYWdlKiBwYWdl
ID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVz
cygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmll
ciA9IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogCi0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGN0b3IsIGlkZW50aWZpZXIgJXUiLCB0aGlz
LCBtX2lkZW50aWZpZXIpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBj
dG9yLCByZXF1ZXN0IGlkZW50aWZpZXIgJXUiLCB0aGlzLCBtX3JlcXVlc3RJZGVudGlmaWVyKTsK
IH0KIAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQpAQCAtMTAwLDggKzEw
MCw4IEBAIFdlYlNvY2tldENoYW5uZWw6OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6
Y29ubmVjdChjb25zdCBVUkwmIHJlcXVlc3RlZFVSCiAgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5y
ZXNldCgpOwogICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRl
RnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKLSAgICBpZiAobV9pZGVudGlmaWVy
KQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldCht
X2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIHZhbGlkYXRlZFVSTC0+dXJsKTsKKyAgICBp
ZiAobV9yZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9yZXF1ZXN0SWRlbnRpZmll
ciwgdmFsaWRhdGVkVVJMLT51cmwpOwogCiAgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LT5m
cmFtZSgpOwogICAgIGF1dG8qIHBhZ2UgPSBtX2RvY3VtZW50LT5wYWdlKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29u
KQogICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGZhaWwoKSBy
ZWFzb249JyVzJyIsIHRoaXMsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1f
c3VzcGVuZGVkKTsKICAgICBpZiAobV9kb2N1bWVudCkgewotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQuZ2V0
KCksIG1faWRlbnRpZmllciwgcmVhc29uKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihtX2RvY3VtZW50LmdldCgpLCBtX3Jl
cXVlc3RJZGVudGlmaWVyLCByZWFzb24pOwogCiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2Fn
ZTsKICAgICAgICAgaWYgKG1faGFuZHNoYWtlKQpAQCAtMjM1LDggKzIzNSw4IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlzY29ubmVjdCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIGRpc2Nvbm5lY3QoKSIsIHRoaXMpOwotICAgIGlmIChtX2lkZW50aWZpZXIgJiYgbV9k
b2N1bWVudCkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNv
Y2tldChtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIpOworICAgIGlmIChtX3JlcXVlc3RJ
ZGVudGlmaWVyICYmIG1fZG9jdW1lbnQpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9yZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOwog
ICAgIGlmIChtX2hhbmRsZSkKQEAgLTI2MSwxMyArMjYxLDEzIEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAg
ICBBU1NFUlQoJmhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKG1faWRlbnRpZmllciAmJiBVTkxJS0VMWShJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgeworICAgIGlmIChtX3JlcXVlc3RJZGVu
dGlmaWVyICYmIFVOTElLRUxZKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRz
KCkpKSB7CiAgICAgICAgIGF1dG8gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgPSBbZG9j
dW1lbnQgPSBtX2RvY3VtZW50XSAoY29uc3QgVVJMJiB1cmwpIC0+IFN0cmluZyB7CiAgICAgICAg
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+Y29va2ll
SmFyKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKmRvY3VtZW50LCB1cmwpOwogICAg
ICAgICB9OwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdChtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIG1faGFu
ZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUpKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElk
ZW50aWZpZXIsIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpKSk7CiAgICAgfQogICAgIGF1dG8gaGFuZHNoYWtl
TWVzc2FnZSA9IG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7CiAgICAgT3B0
aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5OwpAQCAtMjg1LDggKzI4NSw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
T3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5k
bGUpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlU29j
a2V0U3RyZWFtKCkiLCB0aGlzKTsKLSAgICBpZiAobV9pZGVudGlmaWVyICYmIG1fZG9jdW1lbnQp
Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9k
b2N1bWVudC5nZXQoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAobV9yZXF1ZXN0SWRlbnRpZmll
ciAmJiBtX2RvY3VtZW50KQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENs
b3NlV2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElkZW50aWZpZXIpOwogICAg
IEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAmaGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7
CiAgICAgbV9jbG9zZWQgPSB0cnVlOwogICAgIGlmIChtX2Nsb3NpbmdUaW1lci5pc0FjdGl2ZSgp
KQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbFNvY2tl
dFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgU29jCiAgICAgICAgICAg
ICBtZXNzYWdlID0gbWFrZVN0cmluZygiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IGVycm9yIGNv
ZGUgIiwgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZXNz
YWdlID0gIldlYlNvY2tldCBuZXR3b3JrIGVycm9yOiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWVFcnJvcihtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIG1lc3NhZ2Up
OworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRG
cmFtZUVycm9yKG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElkZW50aWZpZXIsIG1lc3NhZ2Up
OwogICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpO
ZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgTE9HX0VSUk9S
KCIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfQpAQCAtNDQ2LDggKzQ0Niw4IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgICAgIGlmIChoZWFk
ZXJMZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1f
aGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKLSAg
ICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UobV9kb2N1
bWVudC5nZXQoKSwgbV9pZGVudGlmaWVyLCBtX2hhbmRzaGFrZS0+c2VydmVySGFuZHNoYWtlUmVz
cG9uc2UoKSk7CisgICAgICAgICAgICBpZiAobV9yZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZShtX2RvY3VtZW50LmdldCgpLCBtX3JlcXVlc3RJZGVudGlmaWVyLCBtX2hh
bmRzaGFrZS0+c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSk7CiAgICAgICAgICAgICBTdHJpbmcg
c2VydmVyU2V0Q29va2llID0gbV9oYW5kc2hha2UtPnNlcnZlclNldENvb2tpZSgpOwogICAgICAg
ICAgICAgaWYgKCFzZXJ2ZXJTZXRDb29raWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+cGFnZSgpICYmIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y29va2llSmFyKCkuY29va2llc0VuYWJsZWQoKm1fZG9jdW1lbnQpKQpAQCAtNTgxLDcgKzU4
MSw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIG1faWRlbnRpZmllciwgZnJhbWUp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
KG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElkZW50aWZpZXIsIGZyYW1lKTsKIAogICAgIHN3
aXRjaCAoZnJhbWUub3BDb2RlKSB7CiAgICAgY2FzZSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ29u
dGludWF0aW9uOgpAQCAtODE5LDcgKzgxOSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAg
ICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZShvcENv
ZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBt
X2lkZW50aWZpZXIsIGZyYW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNl
bmRXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBtX3JlcXVlc3RJZGVudGlmaWVyLCBm
cmFtZSk7CiAKICAgICBhdXRvIGRlZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuZGVmbGF0
ZShmcmFtZSk7CiAgICAgaWYgKCFkZWZsYXRlUmVzdWx0LT5zdWNjZWVkZWQoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggMzdlNzQ1ZTI5NDZhYzExMzk3YzI1MGM4YjNjZGJmOGUxZTFiN2FkMC4uZWNkYWE3NWFh
MzlkNGZlYTNiZjc0NDBlMTdkOTkxYThhMGI3MDE0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xMTQsNiArMTE0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChFeGNlcHRpb25Db2RlIGVycm9yQ29kZSkgb3ZlcnJpZGU7CiAKKyAgICB1
bnNpZ25lZCByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVxdWVz
dElkZW50aWZpZXI7IH0KICAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhIW1faGFuZHNoYWtlOyB9CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtl
OjpNb2RlOjpDb25uZWN0ZWQ7IH0KICAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtl
UmVxdWVzdChjb25zdCBDb29raWVHZXR0ZXImKSBjb25zdCBmaW5hbDsKQEAgLTIwOCw3ICsyMDks
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhIHsgZmFs
c2UgfTsKICAgICB1bnNpZ25lZCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50IHsgMCB9OwogCi0g
ICAgdW5zaWduZWQgbV9pZGVudGlmaWVyIHsgMCB9OyAvLyBtX2lkZW50aWZpZXIgPT0gMCBtZWFu
cyB0aGF0IHdlIGNvdWxkIG5vdCBvYnRhaW4gYSB2YWxpZCBpZGVudGlmaWVyLgorICAgIHVuc2ln
bmVkIG1fcmVxdWVzdElkZW50aWZpZXIgeyAwIH07IC8vIG1faWRlbnRpZmllciA9PSAwIG1lYW5z
IHRoYXQgd2UgY291bGQgbm90IG9idGFpbiBhIHJlcXVlc3QgaWRlbnRpZmllci4KIAogICAgIC8v
IFByaXZhdGUgbWVtYmVycyBvbmx5IGZvciBoeWJpLTEwIHByb3RvY29sLgogICAgIGJvb2wgbV9o
YXNDb250aW51b3VzRnJhbWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAppbmRleCBjMzM1ZDViNzExYjk3MjUzZjdhZGRhNmM5ZmYyMzAyMTA1MmYzYmUw
Li5kM2UxYjkwMWIxMDQwNzc2YmIwY2Y2MzRkZWNjMzlhMGY5MmRiYjU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMTYwLDYgKzE2MCw4IEBAIHByaXZhdGU6
CiAKICAgICBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrOwogCisgICAg
Ly8gRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgaW5zcGVjdG9yIHJlbGF0ZWQgQVBJcy4KKyAgICB1
bnNpZ25lZCByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIDA7IH0KICAg
ICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2ODQ3NT4gV2ViIEluc3BlY3Rvcjog
Q29ycmVjdGx5IGRpc3BsYXkgaWZyYW1lJ3MgYW5kIHdvcmtlcidzIFdlYlNvY2tldHMKICAgICBi
b29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQog
ICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwCmluZGV4IDU3NTM4MmU0MzkwZGQzMWRiZjQwNGZjNzI2NjJiMjIwNjA3MWM3
ZTguLjQ1ODgyZWJiMTE1ZDkxMDIxNzZjNjU1ODBiMTc4NmFjMGJlYjA3YzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtB
Z2VudC5jcHAKQEAgLTgzNyw3ICs4MzcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lk
PiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSgpCiAgICAgICAgICAgICBhdXRvJiBkb2N1
bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pigqd2ViU29ja2V0LT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpOwogICAgICAgICAgICAgYXV0byBjaGFubmVsID0gd2ViU29ja2V0LT5jaGFubmVsKCk7
CiAKLSAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKS50
b1VJbnQ2NCgpOworICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY2hhbm5lbC0+cmVxdWVz
dElkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGRpZENyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVy
LCB3ZWJTb2NrZXQtPnVybCgpKTsKIAogICAgICAgICAgICAgYXV0byBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZSA9IFtkb2N1bWVudCA9IG1ha2VXZWFrUHRyKGRvY3VtZW50KV0oY29uc3Qg
VVJMJiB1cmwpIC0+IFN0cmluZyB7CkBAIC0xMDE0LDcgKzEwMTQsNyBAQCBXZWJTb2NrZXQqIElu
c3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ViU29ja2V0Rm9yUmVxdWVzdElkKGNvbnN0IFByb3RvY29s
OjpOZXR3b3JrOgogICAgIExvY2tIb2xkZXIgbG9jayhXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHNNdXRleCgpKTsKIAogICAgIGZvciAoYXV0byogd2ViU29ja2V0IDogYWN0aXZlV2ViU29j
a2V0cyhsb2NrKSkgewotICAgICAgICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQo
d2ViU29ja2V0LT5jaGFubmVsKCktPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpKSA9PSByZXF1ZXN0
SWQpCisgICAgICAgIGlmIChJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJZCh3ZWJTb2NrZXQt
PmNoYW5uZWwoKS0+cmVxdWVzdElkZW50aWZpZXIoKSkgPT0gcmVxdWVzdElkKQogICAgICAgICAg
ICAgcmV0dXJuIHdlYlNvY2tldDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaAppbmRleCBhZDdmZjE4N2RiYjQzNTNi
OWVkM2JjNTdjNWJhMmM0YWE0ZThjZmVmLi5jNzI0MWNlZTRlYmIwMzUxMWRlYzFiN2NkYWU1OTc4
Y2VkN2VmMDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViU29ja2V0Q2hhbm5lbC5oCkBAIC05Nyw2ICs5Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4gdm9pZCBzZW5kTWVzc2FnZShUJiYsIHNpemVfdCBieXRlTGVuZ3RoKTsK
ICAgICB2b2lkIGVucXVldWVUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKKyAgICB1bnNpZ25l
ZCByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpOyB9CiAgICAgYm9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gIW1fdXJsLmlzTnVsbCgpOyB9CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuICFtX2hhbmRzaGFrZVJlc3BvbnNlLmlzTnVsbCgpOyB9CiAgICAgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoY29uc3QgQ29va2ll
R2V0dGVyJikgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYW5kc2hha2VSZXF1ZXN0OyB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMjBjNzEzZjA5OWQ4NWI3ZGY2OWY2ZDFiMTAxNjVkMjg2OGE3ZjQ3NS4uZTkyODhkNWIxYjBm
ZDg0YWZlZWFiNGMxZjI3ZWRjMDZkZTBkZjk0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIw
LTEyLTE2ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBSRUdSRVNTSU9OKHIyNjY0NjcpOiB2aWV3aW5nIGEgV2ViU29ja2V0IGNyZWF0
ZWQgYmVmb3JlIFdlYiBJbnNwZWN0b3Igd2FzIG9wZW5lZCBkb2Vzbid0IHNob3cgYW55IG1lc3Nh
Z2UgZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk1MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGVkIHRlc3QgdG8gY2hlY2sgdGhhdCBzZW50IGFuZCByZWNlaXZlZCBmcmFtZXMgYXJl
IGNvcnJlY3RseSBhc3NvY2lhdGVkIHdpdGggV2ViU29ja2V0cyB0aGF0IHdlcmUgb3BlbgorICAg
ICAgICBiZWZvcmUgdGhlIFdlYiBJbnNwZWN0b3Igd2FzIG9wZW5lZC4KKworICAgICAgICAqIGh0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZC5odG1sOgorCiAyMDIwLTEyLTE0ICBMYXVybyBNb3VyYSAgPGxtb3Vy
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NTSU9OKDI3MDQzNSkgW0dTdHJlYW1lcl0g
TWFueSBtZWRpYSBzb3VyY2UgdGVzdHMgZmFpbGluZyBhbmQgdGltaW5nIG91dApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3Iv
YmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0CmluZGV4IGU3
YjUxY2I2ZDU3Y2I1NmIxMjY3ZGI5MmJkZjcxYWY5ZmQxOTk2ZGUuLjg4ZDEyY2ExNTFlNjgzYmVj
ZTI5YjUzOGVmYTNhMjlmNjZkYjYwMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKQEAgLTksNCArOSw4IEBAIFBBU1M6IFJlc291
cmNlIFVSTCBzaG91bGQgYmUgIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW5zcGVjdG9yCiBQQVNTOiBSZXNvdXJjZSBzaG91bGQgaGF2ZSByZXF1ZXN0IGhlYWRlcnMu
CiBQQVNTOiBSZXNvdXJjZSBzaG91bGQgaGF2ZSByZXNwb25zZSBoZWFkZXJzLgogUmVzb3VyY2Ug
cmVhZHlTdGF0ZSBzaG91bGQgYmUgU3ltYm9sKG9wZW4pLgorUEFTUzogRnJhbWUgZGF0YSBzaG91
bGQgYmUgJ0hlbGxvIFdvcmxkISDQn9GA0LjQstC10YIg0JzQuNGAIScKK1BBU1M6IEZyYW1lIG91
dGdvaW5nIHNob3VsZCBiZSAndHJ1ZScKK1BBU1M6IEZyYW1lIGRhdGEgc2hvdWxkIGJlICdIZWxs
byBXb3JsZCEg0J/RgNC40LLQtdGCINCc0LjRgCEnCitQQVNTOiBGcmFtZSBvdXRnb2luZyBzaG91
bGQgYmUgJ2ZhbHNlJwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRt
bAppbmRleCBiNmUyNGQyNjdiNWQ1OTZlZTFhMGE0ZjQwN2NkMzY5YWI0M2ZmYzQxLi45NGE0YmRl
ZTEyODUxZmI2ZjE4MDhiYjk1YjZmZmExYjhlMjY2ZWQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5z
cGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKQEAgLTEsNiArMSw3IEBACiA8IWRvY3R5cGUgaHRtbD4K
IDxodG1sPgogPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiA8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vLi4vaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+
CiA8c2NyaXB0PgogZnVuY3Rpb24gbG9hZCgpCkBAIC04LDggKzksOCBAQCBmdW5jdGlvbiBsb2Fk
KCkKICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGNvbnN0IHVybCA9ICJ3
czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9lY2hvIjsK
LSAgICBsZXQgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOwotICAgIHdlYlNvY2tldC5h
ZGRFdmVudExpc3RlbmVyKCJvcGVuIiwgKGV2ZW50KSA9PiB7CisgICAgd2luZG93LnRlc3RXZWJT
b2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7CisgICAgd2luZG93LnRlc3RXZWJTb2NrZXQuYWRk
RXZlbnRMaXN0ZW5lcigib3BlbiIsIChldmVudCkgPT4gewogICAgICAgICAvLyBPbmx5IHJ1biB0
aGUgdGVzdHMgb25jZSB0aGUgd2Vic29ja2V0IGhhcyBjb25uZWN0ZWQuCiAgICAgICAgIHJ1blRl
c3QoKTsKICAgICB9KTsKQEAgLTYwLDcgKzYxLDMzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KCFpc0VtcHR5T2JqZWN0KHdlYlNvY2tldFJl
c291cmNlLnJlc3BvbnNlSGVhZGVycyksICJSZXNvdXJjZSBzaG91bGQgaGF2ZSByZXNwb25zZSBo
ZWFkZXJzLiIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFJlc291cmNlIHJlYWR5
U3RhdGUgc2hvdWxkIGJlICR7U3RyaW5nKHdlYlNvY2tldFJlc291cmNlLnJlYWR5U3RhdGUpfS5g
KTsKIAotICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgbGV0IGV4cGVjdGVkRnJh
bWVzID0gWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YTogIkhl
bGxvIFdvcmxkISDQn9GA0LjQstC10YIg0JzQuNGAISIsCisgICAgICAgICAgICAgICAgICAgIGlz
T3V0Z29pbmc6IHRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgICAgIGRhdGE6ICJIZWxsbyBXb3JsZCEg0J/RgNC40LLQtdGCINCc0LjR
gCEiLAorICAgICAgICAgICAgICAgICAgICBpc091dGdvaW5nOiBmYWxzZSwKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgd2ViU29ja2V0UmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcihXSS5XZWJTb2NrZXRSZXNvdXJjZS5FdmVudC5GcmFtZUFkZGVkLCBm
dW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGxldCBmcmFtZSA9IGV2ZW50LmRhdGE7
CisgICAgICAgICAgICAgICAgbGV0IGV4cGVjdGVkRnJhbWUgPSBleHBlY3RlZEZyYW1lc1t3ZWJT
b2NrZXRSZXNvdXJjZS5mcmFtZXMubGVuZ3RoIC0gMV07CisKKyAgICAgICAgICAgICAgICBpZiAo
IWV4cGVjdGVkRnJhbWUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZnJhbWUuZGF0YSwgZXhwZWN0ZWRGcmFt
ZS5kYXRhLCBgRnJhbWUgZGF0YSBzaG91bGQgYmUgJyR7ZXhwZWN0ZWRGcmFtZS5kYXRhfSdgKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGZyYW1lLmlzT3V0Z29p
bmcsIGV4cGVjdGVkRnJhbWUuaXNPdXRnb2luZywgYEZyYW1lIG91dGdvaW5nIHNob3VsZCBiZSAn
JHtleHBlY3RlZEZyYW1lLmlzT3V0Z29pbmd9J2ApOworCisgICAgICAgICAgICAgICAgaWYgKHdl
YlNvY2tldFJlc291cmNlLmZyYW1lcy5sZW5ndGggPT0gZXhwZWN0ZWRGcmFtZXMubGVuZ3RoKQor
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93LnRlc3RXZWJTb2NrZXQu
c2VuZChcIkhlbGxvIFdvcmxkISDQn9GA0LjQstC10YIg0JzQuNGAIVwiKSIpOworICAgICAgICAg
ICAgCiAgICAgICAgIH0KICAgICB9KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416369</attachid>
            <date>2020-12-16 16:21:52 -0800</date>
            <delta_ts>2020-12-17 09:03:21 -0800</delta_ts>
            <desc>Patch v1.1 - BJ and Devin review notes</desc>
            <filename>bug-219510-20201216192151.patch</filename>
            <type>text/plain</type>
            <size>18761</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uZjdlYjI4MmEwMGUzMDU2Mjg2MTZmMjQzZjI3N2Vi
ZDgyZTQ1NmQ5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEyLTE2ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
RUdSRVNTSU9OKHIyNjY0NjcpOiB2aWV3aW5nIGEgV2ViU29ja2V0IGNyZWF0ZWQgYmVmb3JlIFdl
YiBJbnNwZWN0b3Igd2FzIG9wZW5lZCBkb2Vzbid0IHNob3cgYW55IG1lc3NhZ2UgZnJhbWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRl
c3Q6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2Fk
Lmh0bWwKKworICAgICAgICBSZXN0b3JlZCBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIHIyNjY0Njcg
c28gdGhhdCB0aGUgYHJlcXVlc3RJZGVudGlmaWVyYCAocHJldmlvdXNseSBgY2hhbm5lbElkZW50
aWZpZXJgKSBpcworICAgICAgICBhdmFpbGFibGUgZnJvbSBgV2ViU29ja2V0Q2hhbm5lbGAuCisK
KyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpXZWJTb2NrZXRDaGFubmVsKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNvbm5lY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpkaXNjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OmRpZE9wZW5Tb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hh
bm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
Q2hhbm5lbDo6ZGlkRmFpbFNvY2tldFN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OnByb2Nlc3NGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjpzZW5kRnJhbWUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3
b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojpl
bmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50Ojp3ZWJTb2Nr
ZXRGb3JSZXF1ZXN0SWQpOgorCiAyMDIwLTEyLTE0ICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NTSU9OKDI3MDQzNSkgW0dTdHJlYW1lcl0gTWFueSBt
ZWRpYSBzb3VyY2UgdGVzdHMgZmFpbGluZyBhbmQgdGltaW5nIG91dApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBjODNm
NTY1OGE2ZmIwMTYxNTYwZTk3OWE2MjE3NmZhYWJiZTYwYTU2Li42NmM0OWM2MWYwNDQzZGUxM2U1
OGVlNzQ3MzRhNjEyMjk5OGQ4NzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTEy
LTE2ICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSRUdSRVNTSU9OKHIyNjY0NjcpOiB2aWV3aW5nIGEgV2ViU29ja2V0IGNyZWF0ZWQg
YmVmb3JlIFdlYiBJbnNwZWN0b3Igd2FzIG9wZW5lZCBkb2Vzbid0IHNob3cgYW55IG1lc3NhZ2Ug
ZnJhbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTk1MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZXN0b3JlZCBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIHIyNjY0Njcgc28gdGhhdCB0aGUgYHJlcXVl
c3RJZGVudGlmaWVyYCAocHJldmlvdXNseSBgY2hhbm5lbElkZW50aWZpZXJgKSBpcworICAgICAg
ICBhdmFpbGFibGUgZnJvbSBgV2ViU29ja2V0Q2hhbm5lbGAuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oOgorCiAyMDIwLTEyLTE0ICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtHVEtdIFNo
b3VsZCBlbmFibGUgV2ViUHJvY2Vzc0NhY2hlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCmlu
ZGV4IGMzOTdmYWEwNmFkODY3NjZiYjZhOTRjNDFjOTg0ZGZmMmY2YzIxOTcuLmIwNGU5OGE3ZjYw
YTBhNGI3MDY1YjU0OGMzYTllNGE4MDQ2ZTlmYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZCgp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzdW1lKCkgPSAwOwogCisgICAgdmlydHVhbCB1bnNp
Z25lZCByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaGFz
Q3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaXNDb25uZWN0
ZWQoKSBjb25zdCA9IDA7CiAgICAgdXNpbmcgQ29va2llR2V0dGVyID0gRnVuY3Rpb248U3RyaW5n
KGNvbnN0IFVSTCYpPjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCBmMDA0MGEyNDYwM2Q0NGUyYzI1YjFjZDRh
MjIzNjc5NzNhZjVhMjAxLi5mNWQ3YzM2YjAwZGU0ZDc2MWMxNDk5MDJhMjBiODU3ODAxZGRlYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCkBAIC03MSw5ICs3MSw5IEBAIFdlYlNvY2tldENoYW5uZWw6OldlYlNv
Y2tldENoYW5uZWwoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiBj
CiAgICAgLCBtX3NvY2tldFByb3ZpZGVyKHByb3ZpZGVyKQogewogICAgIGlmIChQYWdlKiBwYWdl
ID0gZG9jdW1lbnQucGFnZSgpKQotICAgICAgICBtX2lkZW50aWZpZXIgPSBwYWdlLT5wcm9ncmVz
cygpLmNyZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKKyAgICAgICAgbV9yZXF1ZXN0SWRlbnRpZmll
ciA9IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwogCi0gICAgTE9H
KE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGN0b3IsIGlkZW50aWZpZXIgJXUiLCB0aGlz
LCBtX2lkZW50aWZpZXIpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBj
dG9yLCByZXF1ZXN0IGlkZW50aWZpZXIgJXUiLCB0aGlzLCBtX3JlcXVlc3RJZGVudGlmaWVyKTsK
IH0KIAogV2ViU29ja2V0Q2hhbm5lbDo6fldlYlNvY2tldENoYW5uZWwoKQpAQCAtMTAwLDggKzEw
MCw4IEBAIFdlYlNvY2tldENoYW5uZWw6OkNvbm5lY3RTdGF0dXMgV2ViU29ja2V0Q2hhbm5lbDo6
Y29ubmVjdChjb25zdCBVUkwmIHJlcXVlc3RlZFVSCiAgICAgbV9oYW5kc2hha2UgPSBtYWtlVW5p
cXVlPFdlYlNvY2tldEhhbmRzaGFrZT4odmFsaWRhdGVkVVJMLT51cmwsIHByb3RvY29sLCB1c2Vy
QWdlbnQsIGNsaWVudE9yaWdpbiwgbV9hbGxvd0Nvb2tpZXMpOwogICAgIG1faGFuZHNoYWtlLT5y
ZXNldCgpOwogICAgIG1faGFuZHNoYWtlLT5hZGRFeHRlbnNpb25Qcm9jZXNzb3IobV9kZWZsYXRl
RnJhbWVyLmNyZWF0ZUV4dGVuc2lvblByb2Nlc3NvcigpKTsKLSAgICBpZiAobV9pZGVudGlmaWVy
KQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZVdlYlNvY2tldCht
X2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIHZhbGlkYXRlZFVSTC0+dXJsKTsKKyAgICBp
ZiAobV9yZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9yZXF1ZXN0SWRlbnRpZmll
ciwgdmFsaWRhdGVkVVJMLT51cmwpOwogCiAgICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LT5m
cmFtZSgpOwogICAgIGF1dG8qIHBhZ2UgPSBtX2RvY3VtZW50LT5wYWdlKCk7CkBAIC0yMDUsNyAr
MjA1LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29u
KQogICAgIFJFTEVBU0VfTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGZhaWwoKSBy
ZWFzb249JyVzJyIsIHRoaXMsIHJlYXNvbi51dGY4KCkuZGF0YSgpKTsKICAgICBBU1NFUlQoIW1f
c3VzcGVuZGVkKTsKICAgICBpZiAobV9kb2N1bWVudCkgewotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQuZ2V0
KCksIG1faWRlbnRpZmllciwgcmVhc29uKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihtX2RvY3VtZW50LmdldCgpLCBtX3Jl
cXVlc3RJZGVudGlmaWVyLCByZWFzb24pOwogCiAgICAgICAgIFN0cmluZyBjb25zb2xlTWVzc2Fn
ZTsKICAgICAgICAgaWYgKG1faGFuZHNoYWtlKQpAQCAtMjM1LDggKzIzNSw4IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlzY29ubmVjdCgpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIGRpc2Nvbm5lY3QoKSIsIHRoaXMpOwotICAgIGlmIChtX2lkZW50aWZpZXIgJiYgbV9k
b2N1bWVudCkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNv
Y2tldChtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIpOworICAgIGlmIChtX3JlcXVlc3RJ
ZGVudGlmaWVyICYmIG1fZG9jdW1lbnQpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9yZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgbV9jbGllbnQgPSBudWxscHRyOwogICAgIG1fZG9jdW1lbnQgPSBudWxscHRyOwog
ICAgIGlmIChtX2hhbmRsZSkKQEAgLTI2MSwxMyArMjYxLDEzIEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKICAg
ICBBU1NFUlQoJmhhbmRsZSA9PSBtX2hhbmRsZSk7CiAgICAgaWYgKCFtX2RvY3VtZW50KQogICAg
ICAgICByZXR1cm47Ci0gICAgaWYgKG1faWRlbnRpZmllciAmJiBVTkxJS0VMWShJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246Omhhc0Zyb250ZW5kcygpKSkgeworICAgIGlmIChtX3JlcXVlc3RJZGVu
dGlmaWVyICYmIFVOTElLRUxZKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFzRnJvbnRlbmRz
KCkpKSB7CiAgICAgICAgIGF1dG8gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgPSBbZG9j
dW1lbnQgPSBtX2RvY3VtZW50XSAoY29uc3QgVVJMJiB1cmwpIC0+IFN0cmluZyB7CiAgICAgICAg
ICAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+Y29va2ll
SmFyKCkuY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoKmRvY3VtZW50LCB1cmwpOwogICAg
ICAgICB9OwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxTZW5kV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdChtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIG1faGFu
ZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUpKSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElk
ZW50aWZpZXIsIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KFdURk1vdmUoY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpKSk7CiAgICAgfQogICAgIGF1dG8gaGFuZHNoYWtl
TWVzc2FnZSA9IG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VNZXNzYWdlKCk7CiAgICAgT3B0
aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFByb3h5OwpAQCAtMjg1LDggKzI4NSw4IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlk
T3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSkKIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlJiBoYW5k
bGUpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGRpZENsb3NlU29j
a2V0U3RyZWFtKCkiLCB0aGlzKTsKLSAgICBpZiAobV9pZGVudGlmaWVyICYmIG1fZG9jdW1lbnQp
Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9k
b2N1bWVudC5nZXQoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAobV9yZXF1ZXN0SWRlbnRpZmll
ciAmJiBtX2RvY3VtZW50KQorICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENs
b3NlV2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElkZW50aWZpZXIpOwogICAg
IEFTU0VSVF9VTlVTRUQoaGFuZGxlLCAmaGFuZGxlID09IG1faGFuZGxlIHx8ICFtX2hhbmRsZSk7
CiAgICAgbV9jbG9zZWQgPSB0cnVlOwogICAgIGlmIChtX2Nsb3NpbmdUaW1lci5pc0FjdGl2ZSgp
KQpAQCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkRmFpbFNvY2tl
dFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhhbmRsZSwgY29uc3QgU29jCiAgICAgICAgICAg
ICBtZXNzYWdlID0gbWFrZVN0cmluZygiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6IGVycm9yIGNv
ZGUgIiwgZXJyb3IuZXJyb3JDb2RlKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtZXNz
YWdlID0gIldlYlNvY2tldCBuZXR3b3JrIGVycm9yOiAiICsgZXJyb3IubG9jYWxpemVkRGVzY3Jp
cHRpb24oKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWVFcnJvcihtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIG1lc3NhZ2Up
OworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRG
cmFtZUVycm9yKG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElkZW50aWZpZXIsIG1lc3NhZ2Up
OwogICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpO
ZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICAgICAgTE9HX0VSUk9S
KCIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAgfQpAQCAtNDQ2LDggKzQ0Niw4IEBA
IGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgICAgIGlmIChoZWFk
ZXJMZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKG1f
aGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpIHsKLSAg
ICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UobV9kb2N1
bWVudC5nZXQoKSwgbV9pZGVudGlmaWVyLCBtX2hhbmRzaGFrZS0+c2VydmVySGFuZHNoYWtlUmVz
cG9uc2UoKSk7CisgICAgICAgICAgICBpZiAobV9yZXF1ZXN0SWRlbnRpZmllcikKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZShtX2RvY3VtZW50LmdldCgpLCBtX3JlcXVlc3RJZGVudGlmaWVyLCBtX2hh
bmRzaGFrZS0+c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSk7CiAgICAgICAgICAgICBTdHJpbmcg
c2VydmVyU2V0Q29va2llID0gbV9oYW5kc2hha2UtPnNlcnZlclNldENvb2tpZSgpOwogICAgICAg
ICAgICAgaWYgKCFzZXJ2ZXJTZXRDb29raWUuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKG1fZG9jdW1lbnQgJiYgbV9kb2N1bWVudC0+cGFnZSgpICYmIG1fZG9jdW1lbnQtPnBhZ2Uo
KS0+Y29va2llSmFyKCkuY29va2llc0VuYWJsZWQoKm1fZG9jdW1lbnQpKQpAQCAtNTgxLDcgKzU4
MSw3IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0ZyYW1lKCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVj
ZWl2ZVdlYlNvY2tldEZyYW1lKG1fZG9jdW1lbnQuZ2V0KCksIG1faWRlbnRpZmllciwgZnJhbWUp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1l
KG1fZG9jdW1lbnQuZ2V0KCksIG1fcmVxdWVzdElkZW50aWZpZXIsIGZyYW1lKTsKIAogICAgIHN3
aXRjaCAoZnJhbWUub3BDb2RlKSB7CiAgICAgY2FzZSBXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ29u
dGludWF0aW9uOgpAQCAtODE5LDcgKzgxOSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2Vu
ZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAg
ICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKICAgICBXZWJTb2NrZXRGcmFtZSBmcmFtZShvcENv
ZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRhLCBkYXRhTGVuZ3RoKTsKLSAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBt
X2lkZW50aWZpZXIsIGZyYW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNl
bmRXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgpLCBtX3JlcXVlc3RJZGVudGlmaWVyLCBm
cmFtZSk7CiAKICAgICBhdXRvIGRlZmxhdGVSZXN1bHQgPSBtX2RlZmxhdGVGcmFtZXIuZGVmbGF0
ZShmcmFtZSk7CiAgICAgaWYgKCFkZWZsYXRlUmVzdWx0LT5zdWNjZWVkZWQoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggMzdlNzQ1ZTI5NDZhYzExMzk3YzI1MGM4YjNjZGJmOGUxZTFiN2FkMC4uNTNhN2JhZmI4
MjljMGQ3ZDMxYWEzYjI5NGQ0NmE1NGQ0YzQ2YTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCkBAIC0xMTQsNiArMTE0
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlkRmFpbChFeGNlcHRpb25Db2RlIGVycm9yQ29kZSkgb3ZlcnJpZGU7CiAKKyAgICB1
bnNpZ25lZCByZXF1ZXN0SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcmVxdWVz
dElkZW50aWZpZXI7IH0KICAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAhIW1faGFuZHNoYWtlOyB9CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtl
OjpNb2RlOjpDb25uZWN0ZWQ7IH0KICAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtl
UmVxdWVzdChjb25zdCBDb29raWVHZXR0ZXImKSBjb25zdCBmaW5hbDsKQEAgLTIwOCw3ICsyMDks
NyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGREaXNjYXJkUmVjZWl2ZWREYXRhIHsgZmFs
c2UgfTsKICAgICB1bnNpZ25lZCBtX3VuaGFuZGxlZEJ1ZmZlcmVkQW1vdW50IHsgMCB9OwogCi0g
ICAgdW5zaWduZWQgbV9pZGVudGlmaWVyIHsgMCB9OyAvLyBtX2lkZW50aWZpZXIgPT0gMCBtZWFu
cyB0aGF0IHdlIGNvdWxkIG5vdCBvYnRhaW4gYSB2YWxpZCBpZGVudGlmaWVyLgorICAgIHVuc2ln
bmVkIG1fcmVxdWVzdElkZW50aWZpZXIgeyAwIH07IC8vIG1fcmVxdWVzdElkZW50aWZpZXIgPT0g
MCBtZWFucyB0aGF0IHdlIGNvdWxkIG5vdCBvYnRhaW4gYSByZXF1ZXN0IGlkZW50aWZpZXIuCiAK
ICAgICAvLyBQcml2YXRlIG1lbWJlcnMgb25seSBmb3IgaHliaS0xMCBwcm90b2NvbC4KICAgICBi
b29sIG1faGFzQ29udGludW91c0ZyYW1lIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggYzMzNWQ1YjcxMWI5NzI1M2Y3YWRkYTZjOWZmMjMwMjEw
NTJmM2JlMC4uMjQ2NDg3M2MyZmY0YWI3MmI5M2Y1MzUyNGM4Yjg4ZjJkZWM5YTE3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKQEAgLTE1OSw4ICsxNTksMTAgQEAg
cHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbChXb3JrZXJHbG9iYWxTY29wZSYsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmLCBjb25zdCBT
dHJpbmcmIHRhc2tNb2RlLCBTb2NrZXRQcm92aWRlciYpOwogCiAgICAgY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGVEaWRJbml0aWFsaXplVGFzazsKLQorICAgIAorICAgIHVuc2lnbmVkIHJlcXVlc3RJ
ZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gMDsgfQogICAgIC8vIEZJWE1FOiA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTY4NDc1PiBXZWIgSW5zcGVjdG9yOiBDb3JyZWN0bHkgZGlzcGxh
eSBpZnJhbWUncyBhbmQgd29ya2VyJ3MgV2ViU29ja2V0cworICAgIC8vIER1bW15IGltcGxlbWVu
dGF0aW9uIG9mIGluc3BlY3RvciByZWxhdGVkIEFQSXMuCiAgICAgYm9vbCBoYXNDcmVhdGVkSGFu
ZHNoYWtlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzQ29ubmVj
dGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KICAgICBSZXNvdXJjZVJlcXVlc3Qg
Y2xpZW50SGFuZHNoYWtlUmVxdWVzdChjb25zdCBDb29raWVHZXR0ZXImKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2hhbmRzaGFrZVJlcXVlc3Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA1NzUz
ODJlNDM5MGRkMzFkYmY0MDRmYzcyNjYyYjIyMDYwNzFjN2U4Li40NTg4MmViYjExNWQ5MTAyMTc2
YzY1NTgwYjE3ODZhYzBiZWIwN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC04MzcsNyArODM3
LDcgQEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yTmV0d29ya0FnZW50
OjplbmFibGUoKQogICAgICAgICAgICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVu
dD4oKndlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICAgICAgICAgIGF1
dG8gY2hhbm5lbCA9IHdlYlNvY2tldC0+Y2hhbm5lbCgpOwogCi0gICAgICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBjaGFubmVsLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKTsKKyAgICAgICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IGNoYW5uZWwtPnJlcXVlc3RJZGVudGlmaWVyKCk7CiAgICAgICAg
ICAgICBkaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgd2ViU29ja2V0LT51cmwoKSk7CiAK
ICAgICAgICAgICAgIGF1dG8gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUgPSBbZG9jdW1l
bnQgPSBtYWtlV2Vha1B0cihkb2N1bWVudCldKGNvbnN0IFVSTCYgdXJsKSAtPiBTdHJpbmcgewpA
QCAtMTAxNCw3ICsxMDE0LDcgQEAgV2ViU29ja2V0KiBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6Ondl
YlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBQcm90b2NvbDo6TmV0d29yazoKICAgICBMb2NrSG9s
ZGVyIGxvY2soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CiAKICAgICBm
b3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykpIHsKLSAgICAgICAg
aWYgKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHdlYlNvY2tldC0+Y2hhbm5lbCgpLT5p
ZGVudGlmaWVyKCkudG9VSW50NjQoKSkgPT0gcmVxdWVzdElkKQorICAgICAgICBpZiAoSWRlbnRp
ZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCktPnJlcXVlc3RJZGVu
dGlmaWVyKCkpID09IHJlcXVlc3RJZCkKICAgICAgICAgICAgIHJldHVybiB3ZWJTb2NrZXQ7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJT
b2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2Nr
ZXRDaGFubmVsLmgKaW5kZXggYWQ3ZmYxODdkYmI0MzUzYjllZDNiYzU3YzViYTJjNGFhNGU4Y2Zl
Zi4uYzcyNDFjZWU0ZWJiMDM1MTFkZWMxYjdjZGFlNTk3OGNlZDdlZjA5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENoYW5uZWwuaApAQCAt
OTcsNiArOTcsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQgc2Vu
ZE1lc3NhZ2UoVCYmLCBzaXplX3QgYnl0ZUxlbmd0aCk7CiAgICAgdm9pZCBlbnF1ZXVlVGFzayhG
dW5jdGlvbjx2b2lkKCk+JiYpOwogCisgICAgdW5zaWduZWQgcmVxdWVzdElkZW50aWZpZXIoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2lkZW50aWZpZXIudG9VSW50NjQoKTsgfQogICAgIGJvb2wg
aGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICFtX3VybC5pc051bGwo
KTsgfQogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiAhbV9oYW5k
c2hha2VSZXNwb25zZS5pc051bGwoKTsgfQogICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBj
bGllbnRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IENvb2tpZUdldHRlciYpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faGFuZHNoYWtlUmVxdWVzdDsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDIwYzcxM2YwOTlkODViN2RmNjlm
NmQxYjEwMTY1ZDI4NjhhN2Y0NzUuLmU5Mjg4ZDViMWIwZmQ4NGFmZWVhYjRjMWYyN2VkYzA2ZGUw
ZGY5NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0xMi0xNiAgUGF0cmljayBBbmdsZSAg
PHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVTU0lPTihy
MjY2NDY3KTogdmlld2luZyBhIFdlYlNvY2tldCBjcmVhdGVkIGJlZm9yZSBXZWIgSW5zcGVjdG9y
IHdhcyBvcGVuZWQgZG9lc24ndCBzaG93IGFueSBtZXNzYWdlIGZyYW1lcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NTEwCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0ZXN0IHRvIGNoZWNr
IHRoYXQgc2VudCBhbmQgcmVjZWl2ZWQgZnJhbWVzIGFyZSBjb3JyZWN0bHkgYXNzb2NpYXRlZCB3
aXRoIFdlYlNvY2tldHMgdGhhdCB3ZXJlIG9wZW4KKyAgICAgICAgYmVmb3JlIHRoZSBXZWIgSW5z
cGVjdG9yIHdhcyBvcGVuZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbDoK
KwogMjAyMC0xMi0xNCAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSRUdSRVNTU0lPTigyNzA0MzUpIFtHU3RyZWFtZXJdIE1hbnkgbWVkaWEgc291cmNlIHRlc3Rz
IGZhaWxpbmcgYW5kIHRpbWluZyBvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9y
L2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dAppbmRleCBlN2I1MWNiNmQ1N2NiNTZiMTI2N2RiOTJi
ZGY3MWFmOWZkMTk5NmRlLi43OTFiNzMyYmZmNzcwZWMxMDFkY2Q3NTNlODI4OWMzNWQ1M2JmYWY3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJp
L2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQtZXhwZWN0
ZWQudHh0CkBAIC05LDQgKzksOCBAQCBQQVNTOiBSZXNvdXJjZSBVUkwgc2hvdWxkIGJlICJ3czov
LzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3RvcgogUEFTUzogUmVz
b3VyY2Ugc2hvdWxkIGhhdmUgcmVxdWVzdCBoZWFkZXJzLgogUEFTUzogUmVzb3VyY2Ugc2hvdWxk
IGhhdmUgcmVzcG9uc2UgaGVhZGVycy4KIFJlc291cmNlIHJlYWR5U3RhdGUgc2hvdWxkIGJlIFN5
bWJvbChvcGVuKS4KK1BBU1M6IEZyYW1lIGRhdGEgc2hvdWxkIGJlICdIZWxsbyBXb3JsZCEnCitQ
QVNTOiBGcmFtZSBvdXRnb2luZyBzaG91bGQgYmUgJ3RydWUnCitQQVNTOiBGcmFtZSBkYXRhIHNo
b3VsZCBiZSAnSGVsbG8gV29ybGQhJworUEFTUzogRnJhbWUgb3V0Z29pbmcgc2hvdWxkIGJlICdm
YWxzZScKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKaW5kZXgg
YjZlMjRkMjY3YjVkNTk2ZWUxYTBhNGY0MDdjZDM2OWFiNDNmZmM0MS4uMjk0ZmM5NWRjMWViMDU5
ZTJiMDkxYWQzNTQ1OTU1YmE5MTQ4OTFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9i
ZWZvcmUtbG9hZC5odG1sCkBAIC04LDggKzgsOCBAQCBmdW5jdGlvbiBsb2FkKCkKICAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKIAogICAgIGNvbnN0IHVybCA9ICJ3czovLzEyNy4wLjAu
MTo4ODgwL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9lY2hvIjsKLSAgICBsZXQgd2Vi
U29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOwotICAgIHdlYlNvY2tldC5hZGRFdmVudExpc3Rl
bmVyKCJvcGVuIiwgKGV2ZW50KSA9PiB7CisgICAgd2luZG93LnRlc3RXZWJTb2NrZXQgPSBuZXcg
V2ViU29ja2V0KHVybCk7CisgICAgd2luZG93LnRlc3RXZWJTb2NrZXQuYWRkRXZlbnRMaXN0ZW5l
cigib3BlbiIsIChldmVudCkgPT4gewogICAgICAgICAvLyBPbmx5IHJ1biB0aGUgdGVzdHMgb25j
ZSB0aGUgd2Vic29ja2V0IGhhcyBjb25uZWN0ZWQuCiAgICAgICAgIHJ1blRlc3QoKTsKICAgICB9
KTsKQEAgLTYwLDcgKzYwLDM0IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KCFpc0VtcHR5T2JqZWN0KHdlYlNvY2tldFJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyksICJSZXNvdXJjZSBzaG91bGQgaGF2ZSByZXNwb25zZSBoZWFkZXJzLiIpOwog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFJlc291cmNlIHJlYWR5U3RhdGUgc2hvdWxk
IGJlICR7U3RyaW5nKHdlYlNvY2tldFJlc291cmNlLnJlYWR5U3RhdGUpfS5gKTsKIAotICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgbGV0IGV4cGVjdGVkRnJhbWVzID0gWworICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0YTogIkhlbGxvIFdvcmxkISIs
CisgICAgICAgICAgICAgICAgICAgIGlzT3V0Z29pbmc6IHRydWUsCisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGRhdGE6ICJIZWxsbyBX
b3JsZCEiLAorICAgICAgICAgICAgICAgICAgICBpc091dGdvaW5nOiBmYWxzZSwKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgXTsKKworICAgICAgICAgICAgbGV0IGhhbmRsZUZyYW1l
QWRkZWQgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQgZnJhbWUgPSBldmVudC5k
YXRhOworICAgICAgICAgICAgICAgIGxldCBleHBlY3RlZEZyYW1lID0gZXhwZWN0ZWRGcmFtZXNb
d2ViU29ja2V0UmVzb3VyY2UuZnJhbWVzLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgICAgIGlm
ICghZXhwZWN0ZWRGcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChmcmFtZS5kYXRhLCBleHBlY3RlZEZy
YW1lLmRhdGEsIGBGcmFtZSBkYXRhIHNob3VsZCBiZSAnJHtleHBlY3RlZEZyYW1lLmRhdGF9J2Ap
OworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoZnJhbWUuaXNPdXRn
b2luZywgZXhwZWN0ZWRGcmFtZS5pc091dGdvaW5nLCBgRnJhbWUgb3V0Z29pbmcgc2hvdWxkIGJl
ICcke2V4cGVjdGVkRnJhbWUuaXNPdXRnb2luZ30nYCk7CisKKyAgICAgICAgICAgICAgICBpZiAo
d2ViU29ja2V0UmVzb3VyY2UuZnJhbWVzLmxlbmd0aCA9PSBleHBlY3RlZEZyYW1lcy5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICAgICAgd2ViU29ja2V0UmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5XZWJTb2NrZXRSZXNvdXJjZS5FdmVudC5GcmFtZUFkZGVkLCBoYW5kbGVGcmFtZUFk
ZGVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICB3ZWJTb2NrZXRSZXNvdXJjZS5hZGRFdmVudExp
c3RlbmVyKFdJLldlYlNvY2tldFJlc291cmNlLkV2ZW50LkZyYW1lQWRkZWQsIGhhbmRsZUZyYW1l
QWRkZWQpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJ3aW5k
b3cudGVzdFdlYlNvY2tldC5zZW5kKFwiSGVsbG8gV29ybGQhXCIpIik7CiAgICAgICAgIH0KICAg
ICB9KTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416424</attachid>
            <date>2020-12-17 09:03:23 -0800</date>
            <delta_ts>2020-12-17 10:26:34 -0800</delta_ts>
            <desc>Patch v1.2 - Youenn review notes</desc>
            <filename>bug-219510-20201217120323.patch</filename>
            <type>text/plain</type>
            <size>20556</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODMwMGNiMzk4NTY1MjRm
YzAxZWY4N2I5ZDkxYWQ4NWRjZmU3YTY5ZS4uMDg1ODQyYWI5YWRlY2IwZGY4OTc3ZDQ5NjY5MDdh
YThlYTVlZDM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTEyLTE3ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBS
RUdSRVNTSU9OKHIyNjY0NjcpOiB2aWV3aW5nIGEgV2ViU29ja2V0IGNyZWF0ZWQgYmVmb3JlIFdl
YiBJbnNwZWN0b3Igd2FzIG9wZW5lZCBkb2Vzbid0IHNob3cgYW55IG1lc3NhZ2UgZnJhbWVzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk1MTAKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRl
c3Q6IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2Fk
Lmh0bWwKKworICAgICAgICBSZXN0b3JlZCBmdW5jdGlvbmFsaXR5IHByaW9yIHRvIHIyNjY0Njcg
c28gdGhhdCB0aGUgYHByb2dyZXNzSWRlbnRpZmllcmAgKHByZXZpb3VzbHkgYGNoYW5uZWxJZGVu
dGlmaWVyYCkgaXMKKyAgICAgICAgYXZhaWxhYmxlIGZyb20gYFdlYlNvY2tldENoYW5uZWxgLgor
CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6V2ViU29ja2V0Q2hhbm5lbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjb25uZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6ZGlzY29ubmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpkaWRPcGVuU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dENoYW5uZWw6OmRpZEZhaWxTb2NrZXRTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRD
aGFubmVsOjpwcm9jZXNzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6c2VuZEZyYW1lKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hh
bm5lbC5oOgorICAgICAgICAtIFJlaW5zdGF0ZSBhIHNlcGFyYXRlIHByb2dyZXNzIGlkZW50aWZp
ZXIgZm9yIGluc3BlY3Rpb24KKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbEluc3BlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwcm9ncmVzc0lkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
SW5zcGVjdG9yLmg6CisgICAgICAgIC0gU3VwcG9ydCBnZXR0aW5nIHRoZSBwcm9ncmVzcyBpZGVu
dGlmaWVyLgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6
ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2ViU29j
a2V0Rm9yUmVxdWVzdElkKToKKwogMjAyMC0xMi0xNCAgTGF1cm8gTW91cmEgIDxsbW91cmFAaWdh
bGlhLmNvbT4KIAogICAgICAgICBSRUdSRVNTU0lPTigyNzA0MzUpIFtHU3RyZWFtZXJdIE1hbnkg
bWVkaWEgc291cmNlIHRlc3RzIGZhaWxpbmcgYW5kIHRpbWluZyBvdXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzgz
ZjU2NThhNmZiMDE2MTU2MGU5NzlhNjIxNzZmYWFiYmU2MGE1Ni4uOTFkZmQzNzE2NDQzYzYzNzhi
NDJiODkzMDFiZmVkN2E2YzcxYjY3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0x
Mi0xNyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUkVHUkVTU0lPTihyMjY2NDY3KTogdmlld2luZyBhIFdlYlNvY2tldCBjcmVhdGVk
IGJlZm9yZSBXZWIgSW5zcGVjdG9yIHdhcyBvcGVuZWQgZG9lc24ndCBzaG93IGFueSBtZXNzYWdl
IGZyYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE5NTEwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UmVzdG9yZWQgZnVuY3Rpb25hbGl0eSBwcmlvciB0byByMjY2NDY3IHNvIHRoYXQgdGhlIGBwcm9n
cmVzc0lkZW50aWZpZXJgIChwcmV2aW91c2x5IGBjaGFubmVsSWRlbnRpZmllcmApIGlzCisgICAg
ICAgIGF2YWlsYWJsZSBmcm9tIGBXZWJTb2NrZXRDaGFubmVsYC4KKworICAgICAgICAqIFdlYlBy
b2Nlc3MvTmV0d29yay9XZWJTb2NrZXRDaGFubmVsLmg6CisKIDIwMjAtMTItMTQgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdW0dUS10g
U2hvdWxkIGVuYWJsZSBXZWJQcm9jZXNzQ2FjaGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgK
aW5kZXggYzM5N2ZhYTA2YWQ4Njc2NmJiNmE5NGM0MWM5ODRkZmYyZjZjMjE5Ny4uNzE0YjFjYWMy
NWNmOTE5NmFhY2U2NGE5OGNkNmZjMDg1YTIwYWIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdXNwZW5k
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHVu
c2lnbmVkIGxvbmcgcHJvZ3Jlc3NJZGVudGlmaWVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBoYXNDcmVhdGVkSGFuZHNoYWtlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBp
c0Nvbm5lY3RlZCgpIGNvbnN0ID0gMDsKICAgICB1c2luZyBDb29raWVHZXR0ZXIgPSBGdW5jdGlv
bjxTdHJpbmcoY29uc3QgVVJMJik+OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IGYwMDQwYTI0NjAzZDQ0ZTJj
MjViMWNkNGEyMjM2Nzk3M2FmNWEyMDEuLjhhYThkNTA4MWYzODg1Y2ZiNjYxNmRhZGJmMzlmMWQ4
NjgxNDkwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTcxLDkgKzcxLDkgQEAgV2ViU29ja2V0Q2hhbm5l
bDo6V2ViU29ja2V0Q2hhbm5lbChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENoYW5uZWxD
bGllbnQmIGMKICAgICAsIG1fc29ja2V0UHJvdmlkZXIocHJvdmlkZXIpCiB7CiAgICAgaWYgKFBh
Z2UqIHBhZ2UgPSBkb2N1bWVudC5wYWdlKCkpCi0gICAgICAgIG1faWRlbnRpZmllciA9IHBhZ2Ut
PnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgICAgICBtX3Byb2dyZXNz
SWRlbnRpZmllciA9IHBhZ2UtPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOwog
Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFubmVsICVwIGN0b3IsIGlkZW50aWZpZXIg
JXUiLCB0aGlzLCBtX2lkZW50aWZpZXIpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hh
bm5lbCAlcCBjdG9yLCBwcm9ncmVzcyBpZGVudGlmaWVyICV1IiwgdGhpcywgbV9wcm9ncmVzc0lk
ZW50aWZpZXIpOwogfQogCiBXZWJTb2NrZXRDaGFubmVsOjp+V2ViU29ja2V0Q2hhbm5lbCgpCkBA
IC0xMDAsOCArMTAwLDggQEAgV2ViU29ja2V0Q2hhbm5lbDo6Q29ubmVjdFN0YXR1cyBXZWJTb2Nr
ZXRDaGFubmVsOjpjb25uZWN0KGNvbnN0IFVSTCYgcmVxdWVzdGVkVVIKICAgICBtX2hhbmRzaGFr
ZSA9IG1ha2VVbmlxdWU8V2ViU29ja2V0SGFuZHNoYWtlPih2YWxpZGF0ZWRVUkwtPnVybCwgcHJv
dG9jb2wsIHVzZXJBZ2VudCwgY2xpZW50T3JpZ2luLCBtX2FsbG93Q29va2llcyk7CiAgICAgbV9o
YW5kc2hha2UtPnJlc2V0KCk7CiAgICAgbV9oYW5kc2hha2UtPmFkZEV4dGVuc2lvblByb2Nlc3Nv
cihtX2RlZmxhdGVGcmFtZXIuY3JlYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKCkpOwotICAgIGlmICht
X2lkZW50aWZpZXIpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
V2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCksIG1faWRlbnRpZmllciwgdmFsaWRhdGVkVVJMLT51
cmwpOworICAgIGlmIChtX3Byb2dyZXNzSWRlbnRpZmllcikKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9wcm9n
cmVzc0lkZW50aWZpZXIsIHZhbGlkYXRlZFVSTC0+dXJsKTsKIAogICAgIGF1dG8qIGZyYW1lID0g
bV9kb2N1bWVudC0+ZnJhbWUoKTsKICAgICBhdXRvKiBwYWdlID0gbV9kb2N1bWVudC0+cGFnZSgp
OwpAQCAtMjA1LDcgKzIwNSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBT
dHJpbmcmIHJlYXNvbikKICAgICBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5l
bCAlcCBmYWlsKCkgcmVhc29uPSclcyciLCB0aGlzLCByZWFzb24udXRmOCgpLmRhdGEoKSk7CiAg
ICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgaWYgKG1fZG9jdW1lbnQpIHsKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvciht
X2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIHJlYXNvbik7CisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IobV9kb2N1bWVu
dC5nZXQoKSwgbV9wcm9ncmVzc0lkZW50aWZpZXIsIHJlYXNvbik7CiAKICAgICAgICAgU3RyaW5n
IGNvbnNvbGVNZXNzYWdlOwogICAgICAgICBpZiAobV9oYW5kc2hha2UpCkBAIC0yMzUsOCArMjM1
LDggQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpmYWlsKGNvbnN0IFN0cmluZyYgcmVhc29uKQog
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaXNjb25uZWN0KCkKIHsKICAgICBMT0coTmV0d29yaywg
IldlYlNvY2tldENoYW5uZWwgJXAgZGlzY29ubmVjdCgpIiwgdGhpcyk7Ci0gICAgaWYgKG1faWRl
bnRpZmllciAmJiBtX2RvY3VtZW50KQotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZENsb3NlV2ViU29ja2V0KG1fZG9jdW1lbnQuZ2V0KCksIG1faWRlbnRpZmllcik7CisgICAg
aWYgKG1fcHJvZ3Jlc3NJZGVudGlmaWVyICYmIG1fZG9jdW1lbnQpCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9w
cm9ncmVzc0lkZW50aWZpZXIpOwogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsKICAgICBtX2RvY3Vt
ZW50ID0gbnVsbHB0cjsKICAgICBpZiAobV9oYW5kbGUpCkBAIC0yNjEsMTMgKzI2MSwxMyBAQCB2
b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZE9wZW5Tb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFu
ZGxlJiBoYW5kbGUpCiAgICAgQVNTRVJUKCZoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICgh
bV9kb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChtX2lkZW50aWZpZXIgJiYgVU5M
SUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYXNGcm9udGVuZHMoKSkpIHsKKyAgICBp
ZiAobV9wcm9ncmVzc0lkZW50aWZpZXIgJiYgVU5MSUtFTFkoSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpoYXNGcm9udGVuZHMoKSkpIHsKICAgICAgICAgYXV0byBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZSA9IFtkb2N1bWVudCA9IG1fZG9jdW1lbnRdIChjb25zdCBVUkwmIHVybCkgLT4g
U3RyaW5nIHsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIHJldHVybiBkb2N1bWVu
dC0+cGFnZSgpLT5jb29raWVKYXIoKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSgqZG9j
dW1lbnQsIHVybCk7CiAgICAgICAgIH07Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KG1fZG9jdW1lbnQuZ2V0KCksIG1f
aWRlbnRpZmllciwgbV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoV1RGTW92ZShj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSkpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QobV9kb2N1bWVudC5n
ZXQoKSwgbV9wcm9ncmVzc0lkZW50aWZpZXIsIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VS
ZXF1ZXN0KFdURk1vdmUoY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpKSk7CiAgICAgfQog
ICAgIGF1dG8gaGFuZHNoYWtlTWVzc2FnZSA9IG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VN
ZXNzYWdlKCk7CiAgICAgT3B0aW9uYWw8Q29va2llUmVxdWVzdEhlYWRlckZpZWxkUHJveHk+IGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5OwpAQCAtMjg1LDggKzI4NSw4IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkT3BlblNvY2tldFN0cmVhbShTb2NrZXRTdHJlYW1IYW5kbGUmIGhh
bmRsZSkKIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0
U3RyZWFtSGFuZGxlJiBoYW5kbGUpCiB7CiAgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXRDaGFu
bmVsICVwIGRpZENsb3NlU29ja2V0U3RyZWFtKCkiLCB0aGlzKTsKLSAgICBpZiAobV9pZGVudGlm
aWVyICYmIG1fZG9jdW1lbnQpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q2xvc2VXZWJTb2NrZXQobV9kb2N1bWVudC5nZXQoKSwgbV9pZGVudGlmaWVyKTsKKyAgICBpZiAo
bV9wcm9ncmVzc0lkZW50aWZpZXIgJiYgbV9kb2N1bWVudCkKKyAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDbG9zZVdlYlNvY2tldChtX2RvY3VtZW50LmdldCgpLCBtX3Byb2dy
ZXNzSWRlbnRpZmllcik7CiAgICAgQVNTRVJUX1VOVVNFRChoYW5kbGUsICZoYW5kbGUgPT0gbV9o
YW5kbGUgfHwgIW1faGFuZGxlKTsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAgICAgaWYgKG1fY2xv
c2luZ1RpbWVyLmlzQWN0aXZlKCkpCkBAIC0zNjAsNyArMzYwLDcgQEAgdm9pZCBXZWJTb2NrZXRD
aGFubmVsOjpkaWRGYWlsU29ja2V0U3RyZWFtKFNvY2tldFN0cmVhbUhhbmRsZSYgaGFuZGxlLCBj
b25zdCBTb2MKICAgICAgICAgICAgIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJXZWJTb2NrZXQgbmV0
d29yayBlcnJvcjogZXJyb3IgY29kZSAiLCBlcnJvci5lcnJvckNvZGUoKSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIG1lc3NhZ2UgPSAiV2ViU29ja2V0IG5ldHdvcmsgZXJyb3I6ICIgKyBl
cnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQuZ2V0KCksIG1f
aWRlbnRpZmllciwgbWVzc2FnZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJyb3IobV9kb2N1bWVudC5nZXQoKSwgbV9wcm9ncmVz
c0lkZW50aWZpZXIsIG1lc3NhZ2UpOwogICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdl
KTsKICAgICAgICAgTE9HX0VSUk9SKCIlcyIsIG1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CiAgICAg
fQpAQCAtNDQ2LDggKzQ0Niw4IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZl
cigpCiAgICAgICAgIGlmIChoZWFkZXJMZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKG1faGFuZHNoYWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNo
YWtlOjpDb25uZWN0ZWQpIHsKLSAgICAgICAgICAgIGlmIChtX2lkZW50aWZpZXIpCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UobV9kb2N1bWVudC5nZXQoKSwgbV9pZGVudGlmaWVyLCBtX2hhbmRzaGFr
ZS0+c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSk7CisgICAgICAgICAgICBpZiAobV9wcm9ncmVz
c0lkZW50aWZpZXIpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UobV9kb2N1bWVudC5nZXQoKSwgbV9w
cm9ncmVzc0lkZW50aWZpZXIsIG1faGFuZHNoYWtlLT5zZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgp
KTsKICAgICAgICAgICAgIFN0cmluZyBzZXJ2ZXJTZXRDb29raWUgPSBtX2hhbmRzaGFrZS0+c2Vy
dmVyU2V0Q29va2llKCk7CiAgICAgICAgICAgICBpZiAoIXNlcnZlclNldENvb2tpZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgICAgICBpZiAobV9kb2N1bWVudCAmJiBtX2RvY3VtZW50LT5wYWdl
KCkgJiYgbV9kb2N1bWVudC0+cGFnZSgpLT5jb29raWVKYXIoKS5jb29raWVzRW5hYmxlZCgqbV9k
b2N1bWVudCkpCkBAIC01ODEsNyArNTgxLDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9j
ZXNzRnJhbWUoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQo
KSwgbV9pZGVudGlmaWVyLCBmcmFtZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZWNlaXZlV2ViU29ja2V0RnJhbWUobV9kb2N1bWVudC5nZXQoKSwgbV9wcm9ncmVzc0lkZW50
aWZpZXIsIGZyYW1lKTsKIAogICAgIHN3aXRjaCAoZnJhbWUub3BDb2RlKSB7CiAgICAgY2FzZSBX
ZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ29udGludWF0aW9uOgpAQCAtODE5LDcgKzgxOSw3IEBAIHZv
aWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BD
b2RlLCBjb25zdCBjaGFyKiBkYXRhCiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAKICAgICBX
ZWJTb2NrZXRGcmFtZSBmcmFtZShvcENvZGUsIHRydWUsIGZhbHNlLCB0cnVlLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRG
cmFtZShtX2RvY3VtZW50LmdldCgpLCBtX2lkZW50aWZpZXIsIGZyYW1lKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFNlbmRXZWJTb2NrZXRGcmFtZShtX2RvY3VtZW50LmdldCgp
LCBtX3Byb2dyZXNzSWRlbnRpZmllciwgZnJhbWUpOwogCiAgICAgYXV0byBkZWZsYXRlUmVzdWx0
ID0gbV9kZWZsYXRlRnJhbWVyLmRlZmxhdGUoZnJhbWUpOwogICAgIGlmICghZGVmbGF0ZVJlc3Vs
dC0+c3VjY2VlZGVkKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDM3ZTc0NWUyOTQ2YWMxMTM5N2MyNTBjOGIz
Y2RiZjhlMWUxYjdhZDAuLmE0NjJlM2UwOGUwOTI3OTg3MDFlMzdiMWJjNDIxMmQxODY5YTMxODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuaApAQCAtMTE0LDYgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoRXhjZXB0aW9uQ29kZSBlcnJv
ckNvZGUpIG92ZXJyaWRlOwogCisgICAgdW5zaWduZWQgbG9uZyBwcm9ncmVzc0lkZW50aWZpZXIo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb2dyZXNzSWRlbnRpZmllcjsgfQogICAgIGJvb2wg
aGFzQ3JlYXRlZEhhbmRzaGFrZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICEhbV9oYW5kc2hha2U7
IH0KICAgICBib29sIGlzQ29ubmVjdGVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9oYW5kc2hh
a2UtPm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGU6OkNvbm5lY3RlZDsgfQogICAg
IFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IENvb2tpZUdldHRl
ciYpIGNvbnN0IGZpbmFsOwpAQCAtMjA4LDcgKzIwOSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgeyBmYWxzZSB9OwogICAgIHVuc2lnbmVkIG1fdW5o
YW5kbGVkQnVmZmVyZWRBbW91bnQgeyAwIH07CiAKLSAgICB1bnNpZ25lZCBtX2lkZW50aWZpZXIg
eyAwIH07IC8vIG1faWRlbnRpZmllciA9PSAwIG1lYW5zIHRoYXQgd2UgY291bGQgbm90IG9idGFp
biBhIHZhbGlkIGlkZW50aWZpZXIuCisgICAgdW5zaWduZWQgbV9wcm9ncmVzc0lkZW50aWZpZXIg
eyAwIH07IC8vIG1fcHJvZ3Jlc3NJZGVudGlmaWVyID09IDAgbWVhbnMgdGhhdCB3ZSBjb3VsZCBu
b3Qgb2J0YWluIGEgcHJvZ3Jlc3MgaWRlbnRpZmllci4KIAogICAgIC8vIFByaXZhdGUgbWVtYmVy
cyBvbmx5IGZvciBoeWJpLTEwIHByb3RvY29sLgogICAgIGJvb2wgbV9oYXNDb250aW51b3VzRnJh
bWUgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWxJbnNwZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxJbnNwZWN0b3IuY3BwCmluZGV4IDlhMjU5NTBh
ZTQxMDlhMDZhNjkxNjgzZWRlOTgxZmVlZjA2NzhjMjMuLjZmYTEyMDBkYTMwM2VlMTUzNjJiNzM1
YWM4ZTU0NTUyNzljOTZhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbEluc3BlY3Rvci5jcHAKQEAgLTk1
LDQgKzk1LDkgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsSW5zcGVjdG9yOjpkaWRSZWNlaXZlV2Vi
U29ja2V0RnJhbWVFcnJvcihEb2N1bWVudCogZG9jdW1lbnQKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKGRvY3VtZW50LCBtX3Byb2dy
ZXNzSWRlbnRpZmllciwgZXJyb3JNZXNzYWdlKTsKIH0KIAordW5zaWduZWQgbG9uZyBXZWJTb2Nr
ZXRDaGFubmVsSW5zcGVjdG9yOjpwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3Byb2dyZXNzSWRlbnRpZmllcjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWxJbnNwZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsSW5zcGVjdG9yLmgKaW5kZXggYmMyNTNhMTdkZWNmYTljYjk4ZGQyNDFkNzgy
YmRlZDMwOTkyNzc0Zi4uM2Y4YmU5MjYyZjdlNDdjODAxYzA1ZWRlMzAxMWQ1NTA2ZjJmODYxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWxJbnNwZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbEluc3BlY3Rvci5oCkBAIC00NSw2ICs0NSw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZShEb2N1bWVudCosIGNvbnN0IFdlYlNvY2tl
dEZyYW1lJik7CiAgICAgdm9pZCBkaWRTZW5kV2ViU29ja2V0RnJhbWUoRG9jdW1lbnQqLCBjb25z
dCBXZWJTb2NrZXRGcmFtZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldEZyYW1lRXJy
b3IoRG9jdW1lbnQqLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CisgICAgCisgICAgdW5z
aWduZWQgbG9uZyBwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB1
bnNpZ25lZCBsb25nIG1fcHJvZ3Jlc3NJZGVudGlmaWVyIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaAppbmRleCBjMzM1ZDViNzExYjk3MjUzZjdhZGRhNmM5ZmYy
MzAyMTA1MmYzYmUwLi40YTZhMzYzYWNjMmE5OTE3YmUzMDY0OTllNjNhMTE1ODc5OWI1MjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtMTU5LDggKzE1OSwx
MCBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFdvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsKFdvcmtlckdsb2JhbFNjb3BlJiwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYsIGNv
bnN0IFN0cmluZyYgdGFza01vZGUsIFNvY2tldFByb3ZpZGVyJik7CiAKICAgICBjbGFzcyBXb3Jr
ZXJHbG9iYWxTY29wZURpZEluaXRpYWxpemVUYXNrOwotCisgICAgCisgICAgdW5zaWduZWQgbG9u
ZyBwcm9ncmVzc0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiAwOyB9CiAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjg0NzU+IFdlYiBJbnNwZWN0b3I6IENvcnJl
Y3RseSBkaXNwbGF5IGlmcmFtZSdzIGFuZCB3b3JrZXIncyBXZWJTb2NrZXRzCisgICAgLy8gRHVt
bXkgaW1wbGVtZW50YXRpb24gb2YgaW5zcGVjdG9yIHJlbGF0ZWQgQVBJcy4KICAgICBib29sIGhh
c0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIGJv
b2wgaXNDb25uZWN0ZWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogICAgIFJlc291
cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0KGNvbnN0IENvb2tpZUdldHRlciYpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faGFuZHNoYWtlUmVxdWVzdDsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CmluZGV4IDU3NTM4MmU0MzkwZGQzMWRiZjQwNGZjNzI2NjJiMjIwNjA3MWM3ZTguLjI5MmQyYzI5
NDBkYTZhNDEwZWM2OGZiNjY1ZTNlOWQ3MGRmNzFiNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAg
LTgzNyw3ICs4MzcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmVuYWJsZSgpCiAgICAgICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25j
YXN0PERvY3VtZW50Pigqd2ViU29ja2V0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAg
ICAgICAgICAgYXV0byBjaGFubmVsID0gd2ViU29ja2V0LT5jaGFubmVsKCk7CiAKLSAgICAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpOwor
ICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gY2hhbm5lbC0+cHJvZ3Jlc3NJZGVudGlmaWVy
KCk7CiAgICAgICAgICAgICBkaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwgd2ViU29ja2V0
LT51cmwoKSk7CiAKICAgICAgICAgICAgIGF1dG8gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUgPSBbZG9jdW1lbnQgPSBtYWtlV2Vha1B0cihkb2N1bWVudCldKGNvbnN0IFVSTCYgdXJsKSAt
PiBTdHJpbmcgewpAQCAtMTAxNCw3ICsxMDE0LDcgQEAgV2ViU29ja2V0KiBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OndlYlNvY2tldEZvclJlcXVlc3RJZChjb25zdCBQcm90b2NvbDo6TmV0d29yazoK
ICAgICBMb2NrSG9sZGVyIGxvY2soV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgo
KSk7CiAKICAgICBmb3IgKGF1dG8qIHdlYlNvY2tldCA6IGFjdGl2ZVdlYlNvY2tldHMobG9jaykp
IHsKLSAgICAgICAgaWYgKElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKHdlYlNvY2tldC0+
Y2hhbm5lbCgpLT5pZGVudGlmaWVyKCkudG9VSW50NjQoKSkgPT0gcmVxdWVzdElkKQorICAgICAg
ICBpZiAoSWRlbnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQod2ViU29ja2V0LT5jaGFubmVsKCkt
PnByb2dyZXNzSWRlbnRpZmllcigpKSA9PSByZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm4g
d2ViU29ja2V0OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L05ldHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05l
dHdvcmsvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IGFkN2ZmMTg3ZGJiNDM1M2I5ZWQzYmM1N2M1
YmEyYzRhYTRlOGNmZWYuLjhhZmUwOTFlODQ4MmM2ODVlM2FlYjI1MWY1ZDMwMWViZWYxODk0MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlNvY2tldENo
YW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJTb2NrZXRD
aGFubmVsLmgKQEAgLTk3LDYgKzk3LDcgQEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkIHNlbmRNZXNzYWdlKFQmJiwgc2l6ZV90IGJ5dGVMZW5ndGgpOwogICAgIHZvaWQg
ZW5xdWV1ZVRhc2soRnVuY3Rpb248dm9pZCgpPiYmKTsKIAorICAgIHVuc2lnbmVkIGxvbmcgcHJv
Z3Jlc3NJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pbnNwZWN0b3IucHJvZ3Jl
c3NJZGVudGlmaWVyKCk7IH0KICAgICBib29sIGhhc0NyZWF0ZWRIYW5kc2hha2UoKSBjb25zdCBm
aW5hbCB7IHJldHVybiAhbV91cmwuaXNOdWxsKCk7IH0KICAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gIW1faGFuZHNoYWtlUmVzcG9uc2UuaXNOdWxsKCk7IH0KICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVxdWVzdChjb25zdCBD
b29raWVHZXR0ZXImKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2hhbmRzaGFrZVJlcXVlc3Q7IH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAyMGM3MTNmMDk5ZDg1YjdkZjY5ZjZkMWIxMDE2NWQyODY4YTdmNDc1Li4zZDM1MWE0
YTU4ZjVmYzJmNzZjN2M0YjFlYTYwZTYyYjMyOWJkZjg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMjAtMTItMTcgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04ocjI2NjQ2Nyk6IHZpZXdpbmcgYSBXZWJTb2NrZXQg
Y3JlYXRlZCBiZWZvcmUgV2ViIEluc3BlY3RvciB3YXMgb3BlbmVkIGRvZXNuJ3Qgc2hvdyBhbnkg
bWVzc2FnZSBmcmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxOTUxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVwZGF0ZWQgdGVzdCB0byBjaGVjayB0aGF0IHNlbnQgYW5kIHJlY2VpdmVkIGZyYW1l
cyBhcmUgY29ycmVjdGx5IGFzc29jaWF0ZWQgd2l0aCBXZWJTb2NrZXRzIHRoYXQgd2VyZSBvcGVu
CisgICAgICAgIGJlZm9yZSB0aGUgV2ViIEluc3BlY3RvciB3YXMgb3BlbmVkLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWw6CisKIDIwMjAtMTItMTQgIExhdXJvIE1vdXJhICA8
bG1vdXJhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVTU1NJT04oMjcwNDM1KSBbR1N0cmVh
bWVyXSBNYW55IG1lZGlhIHNvdXJjZSB0ZXN0cyBmYWlsaW5nIGFuZCB0aW1pbmcgb3V0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKaW5k
ZXggZTdiNTFjYjZkNTdjYjU2YjEyNjdkYjkyYmRmNzFhZjlmZDE5OTZkZS4uNzkxYjczMmJmZjc3
MGVjMTAxZGNkNzUzZTgyODljMzVkNTNiZmFmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApAQCAtOSw0ICs5LDggQEAgUEFTUzog
UmVzb3VyY2UgVVJMIHNob3VsZCBiZSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvaHliaS9pbnNwZWN0b3IKIFBBU1M6IFJlc291cmNlIHNob3VsZCBoYXZlIHJlcXVlc3QgaGVh
ZGVycy4KIFBBU1M6IFJlc291cmNlIHNob3VsZCBoYXZlIHJlc3BvbnNlIGhlYWRlcnMuCiBSZXNv
dXJjZSByZWFkeVN0YXRlIHNob3VsZCBiZSBTeW1ib2wob3BlbikuCitQQVNTOiBGcmFtZSBkYXRh
IHNob3VsZCBiZSAnSGVsbG8gV29ybGQhJworUEFTUzogRnJhbWUgb3V0Z29pbmcgc2hvdWxkIGJl
ICd0cnVlJworUEFTUzogRnJhbWUgZGF0YSBzaG91bGQgYmUgJ0hlbGxvIFdvcmxkIScKK1BBU1M6
IEZyYW1lIG91dGdvaW5nIHNob3VsZCBiZSAnZmFsc2UnCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2Fk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZC5odG1sCmluZGV4IGI2ZTI0ZDI2N2I1ZDU5NmVlMWEwYTRmNDA3Y2Qz
NjlhYjQzZmZjNDEuLjI5NGZjOTVkYzFlYjA1OWUyYjA5MWFkMzU0NTk1NWJhOTE0ODkxYzMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5z
cGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbApAQCAtOCw4ICs4LDgg
QEAgZnVuY3Rpb24gbG9hZCgpCiAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CiAKICAg
ICBjb25zdCB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9p
bnNwZWN0b3IvZWNobyI7Ci0gICAgbGV0IHdlYlNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTsK
LSAgICB3ZWJTb2NrZXQuYWRkRXZlbnRMaXN0ZW5lcigib3BlbiIsIChldmVudCkgPT4geworICAg
IHdpbmRvdy50ZXN0V2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwpOworICAgIHdpbmRvdy50
ZXN0V2ViU29ja2V0LmFkZEV2ZW50TGlzdGVuZXIoIm9wZW4iLCAoZXZlbnQpID0+IHsKICAgICAg
ICAgLy8gT25seSBydW4gdGhlIHRlc3RzIG9uY2UgdGhlIHdlYnNvY2tldCBoYXMgY29ubmVjdGVk
LgogICAgICAgICBydW5UZXN0KCk7CiAgICAgfSk7CkBAIC02MCw3ICs2MCwzNCBAQCBmdW5jdGlv
biB0ZXN0KCkKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdCghaXNFbXB0eU9i
amVjdCh3ZWJTb2NrZXRSZXNvdXJjZS5yZXNwb25zZUhlYWRlcnMpLCAiUmVzb3VyY2Ugc2hvdWxk
IGhhdmUgcmVzcG9uc2UgaGVhZGVycy4iKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KGBSZXNvdXJjZSByZWFkeVN0YXRlIHNob3VsZCBiZSAke1N0cmluZyh3ZWJTb2NrZXRSZXNvdXJj
ZS5yZWFkeVN0YXRlKX0uYCk7CiAKLSAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAg
IGxldCBleHBlY3RlZEZyYW1lcyA9IFsKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgICAgIGRhdGE6ICJIZWxsbyBXb3JsZCEiLAorICAgICAgICAgICAgICAgICAgICBpc091dGdv
aW5nOiB0cnVlLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICBkYXRhOiAiSGVsbG8gV29ybGQhIiwKKyAgICAgICAgICAgICAgICAgICAg
aXNPdXRnb2luZzogZmFsc2UsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIF07CisK
KyAgICAgICAgICAgIGxldCBoYW5kbGVGcmFtZUFkZGVkID0gKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgbGV0IGZyYW1lID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgICBsZXQgZXhw
ZWN0ZWRGcmFtZSA9IGV4cGVjdGVkRnJhbWVzW3dlYlNvY2tldFJlc291cmNlLmZyYW1lcy5sZW5n
dGggLSAxXTsKKyAgICAgICAgICAgICAgICBpZiAoIWV4cGVjdGVkRnJhbWUpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoZnJhbWUuZGF0YSwgZXhwZWN0ZWRGcmFtZS5kYXRhLCBgRnJhbWUgZGF0YSBzaG91bGQg
YmUgJyR7ZXhwZWN0ZWRGcmFtZS5kYXRhfSdgKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKGZyYW1lLmlzT3V0Z29pbmcsIGV4cGVjdGVkRnJhbWUuaXNPdXRnb2lu
ZywgYEZyYW1lIG91dGdvaW5nIHNob3VsZCBiZSAnJHtleHBlY3RlZEZyYW1lLmlzT3V0Z29pbmd9
J2ApOworCisgICAgICAgICAgICAgICAgaWYgKHdlYlNvY2tldFJlc291cmNlLmZyYW1lcy5sZW5n
dGggPT0gZXhwZWN0ZWRGcmFtZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIHdlYlNv
Y2tldFJlc291cmNlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuV2ViU29ja2V0UmVzb3VyY2UuRXZl
bnQuRnJhbWVBZGRlZCwgaGFuZGxlRnJhbWVBZGRlZCk7CisgICAgICAgICAgICAgICAgICAgIHJl
c29sdmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICAgICAg
d2ViU29ja2V0UmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5XZWJTb2NrZXRSZXNvdXJjZS5F
dmVudC5GcmFtZUFkZGVkLCBoYW5kbGVGcmFtZUFkZGVkKTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93LnRlc3RXZWJTb2NrZXQuc2VuZChcIkhlbGxv
IFdvcmxkIVwiKSIpOwogICAgICAgICB9CiAgICAgfSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>