<?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>93443</bug_id>
          
          <creation_ts>2012-08-08 00:02:58 -0700</creation_ts>
          <short_desc>Web Inspector: Protocol Extension: Add &quot;regionLayoutUpdate&quot; event</short_desc>
          <delta_ts>2012-09-12 05:07:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>95941</dependson>
    
    <dependson>96102</dependson>
          <blocked>90786</blocked>
    
    <blocked>90871</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andrei Poenaru">andreigpoenaru</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mitz</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>689987</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-08 00:02:58 -0700</bug_when>
    <thetext>Extend the protocol by adding support for &quot;regionLayoutUpdate&quot; event.
http://www.w3.org/TR/css3-regions/#region-flow-layout-events</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>694898</commentid>
    <comment_count>1</comment_count>
      <attachid>158311</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-14 06:15:42 -0700</bug_when>
    <thetext>Created attachment 158311
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698221</commentid>
    <comment_count>2</comment_count>
      <attachid>158311</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-17 05:10:06 -0700</bug_when>
    <thetext>Comment on attachment 158311
Patch

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:838
&gt; +    if (!m_namedFlowCollectionsRequested.contains(documentNodeId)) {

I think m_namedFlowCollectionsRequested is superflous now that you have the more complete m_documentIdToNamedFlowSetMap.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:868
&gt; +            it = m_documentIdToNamedFlowSetMap.add(documentNodeId, NamedFlowSet()).iterator;

You should register this flow in the m_documentIdToNamedFlowSetMap from getNamedFlowCollection as well. I think it is better to do that in buildObjectForNamedFlow. You collection tracks elements that are sent to the front-end and the buildObjectForNamedFlow is a perfect place to do that.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:1162
&gt; +    int documentNodeId = m_domAgent-&gt;boundNodeId(document);

Looks like too much copypaste (add the &quot;remove&quot; parameter to the original method? reuse same implementation?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700587</commentid>
    <comment_count>3</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-21 03:46:01 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 158311 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=158311&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:838
&gt; &gt; +    if (!m_namedFlowCollectionsRequested.contains(documentNodeId)) {
&gt; 
&gt; I think m_namedFlowCollectionsRequested is superflous now that you have the more complete m_documentIdToNamedFlowSetMap.

I need a way to verify if the Named Flow Collection has been requested for a given document (to see if the NamedFlowCreated event should be dispatched).
A solution would be to add a NULL pointer to the NamedFlowSet when the Named Flow Collection for some document is sent to the front-end: this  will lead to a NamedFlowSet containing a single element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700799</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-21 08:36:44 -0700</bug_when>
    <thetext>&gt; I need a way to verify if the Named Flow Collection has been requested for a given document (to see if the NamedFlowCreated event should be dispatched).
&gt; A solution would be to add a NULL pointer to the NamedFlowSet when the Named Flow Collection for some document is sent to the front-end: this  will lead to a NamedFlowSet containing a single element.

Not sure I follow. You get a request: getNamedFlowCollection, you return collection of flows for given document and populate m_documentIdToNamedFlowSetMap. If document had no flows, m_documentIdToNamedFlowSetMap would contain empty set for that document id. What do I miss?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700880</commentid>
    <comment_count>5</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-21 10:20:05 -0700</bug_when>
    <thetext>(In reply to comment #4)

&gt; Not sure I follow. You get a request: getNamedFlowCollection, you return collection of flows for given document and populate m_documentIdToNamedFlowSetMap. If document had no flows, m_documentIdToNamedFlowSetMap would contain empty set for that document id. What do I miss?

There are 2 situations:

1) getNamedFlowCollection is called for a given document: you dispatch all events related to all named flows from that document.

2) getFlowByName is called without calling getNamedFlowCollection: you only dispatch RegionLayoutUpdate and NamedFlowRemoved for the requested named flow.

If on getNamedFlowCollection the NamedFlowSet is just filled with named flows you will not be able to tell if those flows were requested separately or if the entire collection has been requested.
This information is used in order to decide if the front-end should be informed about a flow creation (the NamedFlowCreated event).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700971</commentid>
    <comment_count>6</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-21 11:54:13 -0700</bug_when>
    <thetext>Ok, I understand it now. I was under the assumption that prior to calling getFlowByName, front-end would need to call getNamedFlowCollections in order to discover the names. So these two requests were overlapping for me. So there will be a UI where user would type in the flow name?

I would suggest that you only leave getNamedFlowCollections. That would make front-end listen to created flows, but that is alright. As you mentioned, the traffic and cost of building the payloads is not high for these objects. Leaving only that method would simplify the backend code, reduce the API surface and reduce the overlap. What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701101</commentid>
    <comment_count>7</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-21 14:01:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; So there will be a UI where user would type in the flow name?

I was thinking about dubroy&apos;s mockup:
https://bug-90789-attachments.webkit.org/attachment.cgi?id=152749

&gt; I would suggest that you only leave getNamedFlowCollections. That would make front-end listen to created flows, but that is alright. As you mentioned, the traffic and cost of building the payloads is not high for these objects. Leaving only that method would simplify the backend code, reduce the API surface and reduce the overlap. What do you think?

It should be ok to remove the getFlowByName function. The front-end could keep a requested named flow collection in sync with the backend. In this case, the NamedFlowCreated and RegionLayoutUpdate events should send named flows, while NamedFlowRemoved should only send the name of the flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701111</commentid>
    <comment_count>8</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-21 14:07:37 -0700</bug_when>
    <thetext>&gt; I was thinking about dubroy&apos;s mockup:
&gt; https://bug-90789-attachments.webkit.org/attachment.cgi?id=152749
&gt; 

I don&apos;t think sidebar is a good place for extensibility, you now have a drawer that has more real estate where user can focus on the flows.

&gt; It should be ok to remove the getFlowByName function. The front-end could keep a requested named flow collection in sync with the backend. In this case, the NamedFlowCreated and RegionLayoutUpdate events should send named flows, while NamedFlowRemoved should only send the name of the flow.

I would proceed this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>706184</commentid>
    <comment_count>9</comment_count>
      <attachid>160934</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-08-28 02:19:28 -0700</bug_when>
    <thetext>Created attachment 160934
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709409</commentid>
    <comment_count>10</comment_count>
      <attachid>160934</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-08-31 02:08:37 -0700</bug_when>
    <thetext>Comment on attachment 160934
Patch

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

Overall looks good. A number of renaming suggestions inline.

&gt; Source/WebCore/dom/NamedFlowCollection.cpp:98
&gt; +    InspectorInstrumentation::didRemoveNamedFlow(m_document, namedFlow);

willRemoveNamedFlow? (it is now happening before the actual removal)

&gt; Source/WebCore/inspector/Inspector.json:2446
&gt; +                &quot;name&quot;: &quot;regionLayoutUpdate&quot;,

regionLayoutUpdated?

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:542
&gt; +    int documentNodeId = m_domAgent-&gt;boundNodeId(document);

Sounds like this is checked 3 times. A helper method documentNodeWithRequestedFlowsId?

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:381
&gt; +        if (!this.hasEventListeners(WebInspector.CSSStyleModel.Events.NamedFlowCreated))

It is too late for this check, it does not save anything.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:398
&gt;          if (!this.hasEventListeners(WebInspector.CSSStyleModel.Events.NamedFlowRemoved))

ditto

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:415
&gt; +        if (!this.hasEventListeners(WebInspector.CSSStyleModel.Events.RegionLayoutUpdate))

ditto

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:488
&gt; +        this._namedFlowCollections = {};

Should this fire an event?

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:1436
&gt; +    getFlowByName: function(flowName)

flowByName</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710463</commentid>
    <comment_count>11</comment_count>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-03 01:04:17 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:488
&gt; &gt; +        this._namedFlowCollections = {};
&gt; 
&gt; Should this fire an event?

I thought of it as a method to reset the cache when the document is updated, so I do not think it should fire an event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710506</commentid>
    <comment_count>12</comment_count>
      <attachid>161884</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-03 02:29:16 -0700</bug_when>
    <thetext>Created attachment 161884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710595</commentid>
    <comment_count>13</comment_count>
      <attachid>161884</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-03 06:21:11 -0700</bug_when>
    <thetext>Comment on attachment 161884
Patch

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

&gt; Source/WebCore/rendering/RenderNamedFlowThread.cpp:340
&gt; +    if (!m_regionLayoutUpdateEventTimer.isActive())

Does not look like a part of this change. Web Inspector part lgtm, please make sure this one is fine with the code owners prior to landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710664</commentid>
    <comment_count>14</comment_count>
      <attachid>161931</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-03 08:16:57 -0700</bug_when>
    <thetext>Created attachment 161931
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710743</commentid>
    <comment_count>15</comment_count>
      <attachid>161931</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-03 12:40:01 -0700</bug_when>
    <thetext>Comment on attachment 161931
Patch for landing

Rejecting attachment 161931 from commit-queue.

New failing tests:
http/tests/cache/subresource-expiration-1.html
http/tests/cache/stopped-revalidation.html
Full output: http://queues.webkit.org/results/13732882</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711020</commentid>
    <comment_count>16</comment_count>
      <attachid>161931</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 05:40:24 -0700</bug_when>
    <thetext>Comment on attachment 161931
Patch for landing

Rejecting attachment 161931 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
pyftpdlib/src --revision 977 --non-interactive --force --accept theirs-conflict --ignore-externals returned non-zero exit status 1 in /mnt/git/webkit-commit-queue/Source/WebKit/chromium
Error: &apos;depot_tools/gclient sync --force --reset --delete_unversioned_trees&apos; failed 3 tries and returned 256 at Tools/Scripts/update-webkit-chromium line 96.
Re-trying &apos;depot_tools/gclient sync --force --reset --delete_unversioned_trees&apos;
Died at /mnt/git/webkit-commit-queue/Tools/Scripts/webkitdirs.pm line 2525.

Full output: http://queues.webkit.org/results/13746440</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711060</commentid>
    <comment_count>17</comment_count>
      <attachid>162029</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-04 06:32:17 -0700</bug_when>
    <thetext>Created attachment 162029
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711145</commentid>
    <comment_count>18</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-04 08:32:09 -0700</bug_when>
    <thetext>Committed r127468: &lt;http://trac.webkit.org/changeset/127468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711214</commentid>
    <comment_count>19</comment_count>
    <who name="Jessie Berlin">jberlin</who>
    <bug_when>2012-09-04 10:27:09 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Committed r127468: &lt;http://trac.webkit.org/changeset/127468&gt;

This caused assertion failures - &quot;crashes&quot; on the ML Debug WK1 Tests:

http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/492
http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r127468%20(493)/inspector/styles/protocol-css-regions-commands-crash-log.txt

Please fix this soon or I will have to roll out this patch.

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef

VM Regions Near 0xbbadbeef:
--&gt; 
    __TEXT                 000000010a816000-000000010a8b7000 [  644K] r-x/rwx SM=COW  /Volumes/VOLUME/*

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x000000010c3216eb WebCore::Document::updateStyleIfNeeded() + 219 (Document.cpp:1901)
1   com.apple.WebCore             	0x000000010c32192b WebCore::Document::updateLayout() + 155 (Document.cpp:1933)
2   com.apple.WebCore             	0x000000010c321a82 WebCore::Document::updateLayoutIgnorePendingStylesheets() + 210 (Document.cpp:1969)
3   com.apple.WebCore             	0x000000010d7c2dc6 WebCore::WebKitNamedFlow::getContent() + 118 (WebKitNamedFlow.cpp:164)
4   com.apple.WebCore             	0x000000010c8c38e4 WebCore::InspectorCSSAgent::buildObjectForNamedFlow(WTF::String*, WebCore::WebKitNamedFlow*, int) + 68 (InspectorCSSAgent.cpp:1111)
5   com.apple.WebCore             	0x000000010c8c3c25 WebCore::InspectorCSSAgent::didUpdateRegionLayout(WebCore::Document*, WebCore::WebKitNamedFlow*) + 117 (InspectorCSSAgent.cpp:566)
6   com.apple.WebCore             	0x000000010c928720 WebCore::InspectorInstrumentation::didUpdateRegionLayoutImpl(WebCore::InstrumentingAgents*, WebCore::Document*, WebCore::WebKitNamedFlow*) + 64 (InspectorInstrumentation.cpp:250)
7   com.apple.WebCore             	0x000000010d233d5e WebCore::InspectorInstrumentation::didUpdateRegionLayout(WebCore::Document*, WebCore::WebKitNamedFlow*) + 78 (InspectorInstrumentation.h:591)
8   com.apple.WebCore             	0x000000010d23301b WebCore::RenderNamedFlowThread::dispatchRegionLayoutUpdateEvent() + 75 (RenderNamedFlowThread.cpp:342)
9   com.apple.WebCore             	0x000000010d1a2c25 WebCore::RenderFlowThread::layout() + 1429 (RenderFlowThread.cpp:196)
10  com.apple.WebCore             	0x000000010c5b3326 WebCore::RenderObject::layoutIfNeeded() + 54 (RenderObject.h:655)
11  com.apple.WebCore             	0x000000010c5b28a6 WebCore::FlowThreadController::layoutRenderNamedFlowThreads() + 1126 (FlowThreadController.cpp:134)
12  com.apple.WebCore             	0x000000010d354aaa WebCore::RenderView::layout() + 1066 (RenderView.cpp:159)
13  com.apple.WebCore             	0x000000010c63f2db WebCore::FrameView::layout(bool) + 3147 (FrameView.cpp:1182)
14  com.apple.WebCore             	0x000000010c63b1a0 WebCore::FrameView::layoutTimerFired(WebCore::Timer&lt;WebCore::FrameView&gt;*) + 32 (FrameView.cpp:2105)
15  com.apple.WebCore             	0x000000010c6563b3 WebCore::Timer&lt;WebCore::FrameView&gt;::fired() + 115 (Timer.h:100)
16  com.apple.WebCore             	0x000000010d71f37d WebCore::ThreadTimers::sharedTimerFiredInternal() + 285 (ThreadTimers.cpp:118)
17  com.apple.WebCore             	0x000000010d71f119 WebCore::ThreadTimers::sharedTimerFired() + 25 (ThreadTimers.cpp:94)
18  com.apple.WebCore             	0x000000010d460553 WebCore::timerFired(__CFRunLoopTimer*, void*) + 67 (SharedTimerMac.mm:167)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711428</commentid>
    <comment_count>20</comment_count>
    <who name="">mitz</who>
    <bug_when>2012-09-04 13:59:08 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Committed r127468: &lt;http://trac.webkit.org/changeset/127468&gt;
&gt; 
&gt; This caused assertion failures - &quot;crashes&quot; on the ML Debug WK1 Tests:
&gt; 
&gt; http://build.webkit.org/builders/Apple%20MountainLion%20Debug%20WK1%20%28Tests%29/builds/492
&gt; http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r127468%20(493)/inspector/styles/protocol-css-regions-commands-crash-log.txt

I reverted r127468 in &lt;http://trac.webkit.org/r127500&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712008</commentid>
    <comment_count>21</comment_count>
      <attachid>162236</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-05 06:47:40 -0700</bug_when>
    <thetext>Created attachment 162236
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712025</commentid>
    <comment_count>22</comment_count>
      <attachid>162236</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-05 07:22:28 -0700</bug_when>
    <thetext>Comment on attachment 162236
Patch

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

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:1403
&gt; +    for (var i = 0; i &lt; payload.length; ++i) {

This use without any preliminary checks is going to fail, given that you declare payload as nullable and optional (any reason for it to be both?) From the code, it seems that payload can be neither null, nor undefined (unless null comes in from the backend).

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:1434
&gt; +        if (namedFlow === undefined)

According to the WebKit coding guidelines, this should be &quot;if (!namedFlow)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712049</commentid>
    <comment_count>23</comment_count>
      <attachid>162247</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-05 07:57:12 -0700</bug_when>
    <thetext>Created attachment 162247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712934</commentid>
    <comment_count>24</comment_count>
      <attachid>162247</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 23:48:28 -0700</bug_when>
    <thetext>Comment on attachment 162247
Patch

Clearing flags on attachment: 162247

Committed r127700: &lt;http://trac.webkit.org/changeset/127700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712935</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-05 23:48:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712954</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 00:26:19 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 95941</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712956</commentid>
    <comment_count>27</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 00:27:00 -0700</bug_when>
    <thetext>Compiling &quot;sdk&quot;
Source/WebCore/inspector/front-end/CSSStyleModel.js:226: ERROR - variable error is undeclared
            if (error || !namedFlowMap)
                ^

1 error(s), 0 warning(s)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712962</commentid>
    <comment_count>28</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 00:34:47 -0700</bug_when>
    <thetext>Please use Source/WebCore/inspector/compile-front-end.py script to check for compilation errors before landing the patch.

Inspector currently uses closure compiler revision 1810: http://mvnrepository.com/artifact/com.google.javascript/closure-compiler/r1810</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712965</commentid>
    <comment_count>29</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-06 00:35:13 -0700</bug_when>
    <thetext>Reverted: Committed r127703: &lt;http://trac.webkit.org/changeset/127703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713170</commentid>
    <comment_count>30</comment_count>
      <attachid>162476</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-06 04:46:50 -0700</bug_when>
    <thetext>Created attachment 162476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713377</commentid>
    <comment_count>31</comment_count>
      <attachid>162526</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-06 09:48:14 -0700</bug_when>
    <thetext>Created attachment 162526
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713619</commentid>
    <comment_count>32</comment_count>
      <attachid>162526</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 13:19:18 -0700</bug_when>
    <thetext>Comment on attachment 162526
Patch for landing

Clearing flags on attachment: 162526

Committed r127780: &lt;http://trac.webkit.org/changeset/127780&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713620</commentid>
    <comment_count>33</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 13:19:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714428</commentid>
    <comment_count>34</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-07 05:27:42 -0700</bug_when>
    <thetext>FYI this patch broke closure compilation again, I have landed a fix. http://trac.webkit.org/changeset/127859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714471</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-07 06:54:40 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 96102</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715830</commentid>
    <comment_count>36</comment_count>
      <attachid>163066</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-10 01:41:50 -0700</bug_when>
    <thetext>Created attachment 163066
Patch

This patch does not add any errors or warnings to the output of the compile-front-end.py script. 
Used this closure compiler: http://code.google.com/p/closure-compiler/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715851</commentid>
    <comment_count>37</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-10 02:10:32 -0700</bug_when>
    <thetext>Does it fix test timeouts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718097</commentid>
    <comment_count>38</comment_count>
      <attachid>163559</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-12 02:35:26 -0700</bug_when>
    <thetext>Created attachment 163559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718129</commentid>
    <comment_count>39</comment_count>
      <attachid>163559</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-12 03:02:24 -0700</bug_when>
    <thetext>Comment on attachment 163559
Patch

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

The change looks good, but I have a CSSStyleModel API concern now that getNamedFlowCollectionAsync() is made use of.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:274
&gt; +        namedFlows.append(std::make_pair(it-&gt;first, it-&gt;second));

You need to double-check, but seemingly, namedFlows.append(*it); will have the same effect.

&gt; Source/WebCore/inspector/front-end/CSSStyleModel.js:180
&gt; +    getNamedFlowCollectionAsync: function(documentNodeId, userCallback)

The method is named getNamedFlowCollectionAsync, however its result is &quot;namedFlowCollection.namedFlowMap&quot;. Looking at its sole usage (in the real code), I guess it would be more appropriate to return namedFlowCollection to the userCallback (e.g. you wouldn&apos;t have to &quot;this._namedFlowCollections[documentNodeId].flowByName(flowName)&quot; in getFlowByNameAsync but rather &quot;namedFlowCollection.flowByName(flowName)&quot;) - otherwise the returned result is just used to check for errors and discarded afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718174</commentid>
    <comment_count>40</comment_count>
      <attachid>163580</attachid>
    <who name="Andrei Poenaru">andreigpoenaru</who>
    <bug_when>2012-09-12 04:23:31 -0700</bug_when>
    <thetext>Created attachment 163580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718188</commentid>
    <comment_count>41</comment_count>
      <attachid>163580</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-12 04:40:43 -0700</bug_when>
    <thetext>Comment on attachment 163580
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718216</commentid>
    <comment_count>42</comment_count>
      <attachid>163580</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 05:07:03 -0700</bug_when>
    <thetext>Comment on attachment 163580
Patch

Clearing flags on attachment: 163580

Committed r128293: &lt;http://trac.webkit.org/changeset/128293&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718217</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 05:07:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>158311</attachid>
            <date>2012-08-14 06:15:42 -0700</date>
            <delta_ts>2012-08-28 02:19:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>31401</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYmFiMDFmLi5mNzk4N2E5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MTQgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDgtMTQgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGV4dGVybmFsIHRlc3QgcnVubmVyIGZvciBydW5uaW5n
IGluc3BlY3RvciBmcm9udC1lbmQgdGVzdHMgd2l0aCBubyBUZXN0UnVubmVyIGluZnJhc3RydWN0
dXJlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1j
c3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dAppbmRleCA3
YzgyYjQ4Li44MTJhMDJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVz
L3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVj
dGVkLnR4dApAQCAtNCw5ICs0LDE3IEBAIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24gQnVnIDkxNjA3
CiBnZXRGbG93QnlOYW1lIEJ1ZyA5MTg1NQogbmFtZWRGbG93Q3JlYXRlZCBCdWcgOTI3MzkKIG5h
bWVkRmxvd1JlbW92ZWQgQnVnIDkyNzM5CityZWdpb25MYXlvdXRVcGRhdGUgQnVnIDkzNDQzCitU
aGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMiLgogCiAKLVJ1bm5pbmc6IHRl
c3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMQorUnVubmluZzogdGVzdFJlZ2lvbkxheW91dFVwZGF0
ZUZvclJlcXVlc3RlZEZsb3cKK1JlZ2lvbkxheW91dFVwZGF0ZTogInRtcE5hbWVkRmxvdyIKKwor
UnVubmluZzogdGVzdE5hbWVkRmxvd1JlbW92ZWRGb3JSZXF1ZXN0ZWRGbG93CitOYW1lZEZsb3dS
ZW1vdmVkOiAidG1wTmFtZWRGbG93IgorCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVj
dGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50ID09PQogKiBOYW1lZCBG
bG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIzICsyNiwyNiBAQCBSZWdp
b25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAKLVJ1bm5pbmc6IHRlc3RH
ZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rp
b25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3Vt
ZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAotUnVubmluZzogdGVz
dEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZQogPT09IE5hbWVkIEZs
b3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVkIEZsb3cgImZsb3cyIgog
Q29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5
TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lCiA9PT0gTmFt
ZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUgaXMgbm8gTmFtZWQg
RmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5pbmc6IHRlc3ROYW1lZEZs
b3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93IgogCitSdW5uaW5nOiB0
ZXN0UmVnaW9uTGF5b3V0VXBkYXRlCitSZWdpb25MYXlvdXRVcGRhdGU6ICJmbG93MyIKKwogUnVu
bmluZzogdGVzdE5hbWVkRmxvd1JlbW92ZWQKIE5hbWVkRmxvd1JlbW92ZWQ6ICJ0bXBOYW1lZEZs
b3ciCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wt
Y3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAppbmRleCBkODM0YzJhLi5iYTA0MTdl
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9w
cm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCkBAIC0xNSwzMCArMTUsOTQgQEAgZnVu
Y3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKICAgICBlbC5zdHlsZS53ZWJraXRGbG93RnJv
bSA9ICJmbG93NCI7CiAgICAgZnJhbWVEb2MuYm9keS5hcHBlbmRDaGlsZChlbCk7CiAKKyAgICBj
cmVhdGVOYW1lZEZsb3coKTsKKwogICAgIHJ1blRlc3QoKTsKIH0KIAogZnVuY3Rpb24gY3JlYXRl
TmFtZWRGbG93KCkKIHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImFydGljbGUiKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisKICAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5bGUud2Vi
a2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyItd2Via2l0
LWZsb3ctaW50byJdID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29udGVudCA9
ICJUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wiIjsKKwor
ICAgIGRpdi5pZCA9ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93LWZyb20i
XSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4IjsKKyAg
ICBkaXYuc3R5bGVbIndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKIH0K
IAogZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5ib2R5LnJl
bW92ZUNoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBmdW5jdGlv
biB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwogICAg
IEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5h
bWVkRmxvd0NvbGxlY3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RSZWdpb25MYXlv
dXRVcGRhdGVGb3JSZXF1ZXN0ZWRGbG93KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGUsIGV2ZW50Q2FsbGJhY2ssIHRoaXMpOwor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVu
dENhbGxiYWNrKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gZG9jdW1lbnRDYWxsYmFjayhkb2N1
bWVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9k
ZWwuZ2V0Rmxvd0J5TmFtZUFzeW5jKGRvY3VtZW50LmlkLCAidG1wTmFtZWRGbG93IiwgbmFtZWRG
bG93Q2FsbGJhY2spOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1l
ZEZsb3dDYWxsYmFjayhuYW1lZEZsb3cpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ0
bXBEaXZcIikuc3R5bGVbXCJ3aWR0aFwiXSA9IFwiMjAwcHhcIiIpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiBldmVudENhbGxiYWNrKGV2ZW50KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ci
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlLCBldmVudENhbGxiYWNrLCB0aGlzKTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWdpb25MYXlvdXRVcGRh
dGU6IFwidG1wTmFtZWRGbG93XCIiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdE5hbWVkRmxvd1JlbW92
ZWRGb3JSZXF1ZXN0ZWRGbG93KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBldmVudENhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFj
ayk7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRvY3VtZW50Q2FsbGJhY2soZG9jdW1lbnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldEZs
b3dCeU5hbWVBc3luYyhkb2N1bWVudC5pZCwgInRtcE5hbWVkRmxvdyIsIG5hbWVkRmxvd0NhbGxi
YWNrKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2Fs
bGJhY2sobmFtZWRGbG93KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoInJlbW92ZU5hbWVkRmxvdygpIik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGV2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxv
dyIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBldmVudENhbGxiYWNrLCB0aGlzKTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVk
OiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xs
ZWN0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2Vu
dC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTY4LDcgKzEzMiw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0gICAgICAgIGZ1
bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMihuZXh0KQorICAgICAgICBmdW5jdGlv
biB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbldpdGhJbnZhbGlkRG9jdW1lbnQobmV4dCkKICAg
ICAgICAgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVu
dChkb2N1bWVudENhbGxiYWNrKTsKIApAQCAtOTcsNyArMTYxLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZs
b3dCeU5hbWUxKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lKG5leHQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9j
dW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTEyMiw3ICsxODYsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0
R2V0Rmxvd0J5TmFtZTIobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWVX
aXRoSW52YWxpZE5hbWUobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsKIApAQCAtMTUzLDE1
ICsyMTcsMjkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKGV2ZW50KQogICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRh
Lm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisK
ICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgY2Fs
bGJhY2ssIHRoaXMpOwogCi0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0g
InRtcE5hbWVkRmxvdyIpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3Vs
dCgiWyFdIEZhaWxlZCIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBs
ZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1l
ZEZsb3dDcmVhdGVkOiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAgICAgICAgICAgbmV4dCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RSZWdp
b25MYXlvdXRVcGRhdGUobmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZl
bnRzLlJlZ2lvbkxheW91dFVwZGF0ZSwgY2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWdp
b24zXCIpLnN0eWxlW1wid2lkdGhcIl0gPSBcIjIwMHB4XCIiKTsKKworICAgICAgICAgICAgZnVu
Y3Rpb24gY2FsbGJhY2soZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYg
KGV2ZW50LmRhdGEubmFtZSAhPT0gImZsb3czIikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJOYW1lZEZsb3dDcmVhdGVkOiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVwZGF0ZSwgY2FsbGJhY2ssIHRo
aXMpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlJlZ2lvbkxh
eW91dFVwZGF0ZTogXCJmbG93M1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9LApAQCAtMTczLDEyICsyNTEsMTAgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQogICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxs
YmFjaywgdGhpcyk7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRt
cE5hbWVkRmxvdyIpIHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgi
WyFdIEZhaWxlZCIpOwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1l
ZEZsb3ciKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNh
bGxiYWNrLCB0aGlzKTsKIAogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJOYW1lZEZsb3dSZW1vdmVkOiBcInRtcE5hbWVkRmxvd1wiIik7CiAgICAgICAgICAgICAgICAg
bmV4dCgpOwpAQCAtMjA0LDYgKzI4MCw3IEBAIFRlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMg
YW5kIGV2ZW50czoKICAgICA8bGk+Z2V0Rmxvd0J5TmFtZSA8YSBocmVmPSJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTUiPkJ1ZyA5MTg1NTwvYT48L2xpPgogICAg
IDxsaT5uYW1lZEZsb3dDcmVhdGVkIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9hPjwvbGk+CiAgICAgPGxpPm5hbWVkRmxv
d1JlbW92ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTkyNzM5Ij5CdWcgOTI3Mzk8L2E+PC9saT4KKyAgICA8bGk+cmVnaW9uTGF5b3V0VXBkYXRlIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ0MyI+QnVn
IDkzNDQzPC9hPjwvbGk+CiA8L3VsPgogPC9wPgogCkBAIC0yMTYsOCArMjkzLDEwIEBAIFRlc3Rz
IHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKIDxkaXYgc3R5bGU9Ii13ZWJraXQt
Zmxvdy1mcm9tOiBmbG93MiI+PC9kaXY+CiA8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTog
ZmxvdzIiPjwvZGl2PgogCi08YXJ0aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3cz
Ij48L2FydGljbGU+Ci08ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzMiPjwvZGl2
PgorPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MyI+CisgICAgVGhpcyB0
ZXh0IGlzIGZyb20gQ1NTIE5hbWVkIEZsb3cgImZsb3czIi4KKzwvYXJ0aWNsZT4KKzxkaXYgaWQ9
InJlZ2lvbjMiIHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzM7IGhlaWdodDogMjBweDsg
d2lkdGg6IDVweCI+PC9kaXY+CiAKIDxkaXYgaWQ9ImZha2UtZG9jdW1lbnQiPjwvZGl2PgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNDdmYmFhNS4uZjYzODIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBA
CisyMDEyLTA4LTE0ICBBbmRyZWkgUG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IFByb3RvY29sIEV4dGVuc2lvbjogQWRkICJyZWdpb25MYXlvdXRV
cGRhdGUiIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MzQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkICJyZWdpb25MYXlvdXRVcGRhdGUiIGV2ZW50IHRvIHRoZSBwcm90b2NvbC4KKwor
ICAgICAgICBUaGUgQ1NTIFJlZ2lvbnMgZXZlbnRzIGFyZSBkaXNwYXRjaGVkIHRvIHRoZSBmcm9u
dC1lbmQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKKworICAgICAgICAqIG5hbWVkRmxvd0NyZWF0
ZWQ6IHRoZSBmcm9udC1lbmQgbXVzdCBoYXZlIHJlcXVlc3RlZCB0aGUgTmFtZWQgRmxvdyBDb2xs
ZWN0aW9uCisgICAgICAgIGZvciB0aGUgZ2l2ZW4gZG9jdW1lbnQKKworICAgICAgICAqIG5hbWVk
Rmxvd1JlbW92ZWQ6IHRoZSBmcm9udC1lbmQgbXVzdCBoYXZlIHJlcXVlc3RlZCB0aGUgTmFtZWQg
RmxvdyBDb2xsZWN0aW9uCisgICAgICAgIGZvciB0aGUgZ2l2ZW4gZG9jdW1lbnQgb3IgdGhlIHJl
bW92ZWQgTmFtZWQgRmxvdworCisgICAgICAgICogcmVnaW9uTGF5b3V0VXBkYXRlOiB0aGUgZnJv
bnQtZW5kIG11c3QgaGF2ZSByZXF1ZXN0ZWQgdGhlIE5hbWVkIEZsb3cKKyAgICAgICAgQ29sbGVj
dGlvbiBmb3IgdGhlIGdpdmVuIGRvY3VtZW50IG9yIHRoZSB1cGRhdGVkIE5hbWVkIEZsb3cKKwor
ICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9XZWJLaXROYW1lZEZs
b3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93OjpkaXNwYXRjaFJlZ2lv
bkxheW91dFVwZGF0ZUV2ZW50KToKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpl
bnN1cmVGbG93V2l0aE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0TmFtZWRGbG93Q29s
bGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJl
Z2lvbkxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFt
ZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0Rmxvd0J5TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YXNz
ZXJ0TmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojphc3Nl
cnRBbmRSZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxv
d0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fcmVnaW9uTGF5b3V0VXBk
YXRlLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5fcmVnaW9uTGF5b3V0VXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNw
YXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRhdGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KToK
KwogMjAxMi0wOC0xNCAgRWQgQmFrZXIgIDxlZGJha2VyQHJpbS5jb20+CiAKICAgICAgICAgW0Js
YWNrQmVycnldIExheWVyQW5pbWF0aW9uIGlzIG5vdCBpbW11dGFibGUsIHdoaWNoIG1ha2VzIGRl
cmVmZXJlbmNpbmcgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0
TmFtZWRGbG93LmNwcAppbmRleCBhYTU5MDFiLi4xNjM0YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
V2ViS2l0TmFtZWRGbG93LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYktpdE5h
bWVkRmxvdy5oIgogCiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgog
I2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaCIKQEAgLTE5OCw2ICsxOTksMTEgQEAgdm9pZCBXZWJLaXROYW1lZEZsb3c6OmRpc3BhdGNo
UmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKQogICAgIEFTU0VSVCghZXZlbnREaXNwYXRjaEZvcmJp
ZGRlbigpKTsKICAgICBBU1NFUlQobV9wYXJlbnRGbG93VGhyZWFkKTsKIAorICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KG1fZmxvd01hbmFnZXItPmRv
Y3VtZW50KCksIHRoaXMpOworCisgICAgaWYgKCFoYXNFdmVudExpc3RlbmVycygpKQorICAgICAg
ICByZXR1cm47CisKICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gVUlFdmVudDo6Y3JlYXRlKGV2
ZW50TmFtZXMoKS53ZWJraXRSZWdpb25MYXlvdXRVcGRhdGVFdmVudCwgZmFsc2UsIGZhbHNlLCBt
X3BhcmVudEZsb3dUaHJlYWQtPmRvY3VtZW50KCktPmRlZmF1bHRWaWV3KCksIDApOwogCiAgICAg
ZGlzcGF0Y2hFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2Vi
S2l0TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAKaW5kZXggOTI3MzcyNy4uMTcxZDZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtODAsNyAr
ODAsNyBAQCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gV2ViS2l0TmFtZWRGbG93Q29sbGVj
dGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKGNvbnN0CiAgICAgUmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKHRoaXMsIGZsb3dOYW1lKTsKICAg
ICBtX25hbWVkRmxvd3MuYWRkKG5ld0Zsb3cuZ2V0KCkpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmV3Rmxvdy0+bmFtZSgp
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2Rv
Y3VtZW50LCBuZXdGbG93LmdldCgpKTsKIAogICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2UoKTsK
IH0KQEAgLTk0LDkgKzk0LDkgQEAgdm9pZCBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNj
YXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogICAgIEFTU0VSVChuYW1l
ZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7CiAg
ICAgQVNTRVJUKG1fbmFtZWRGbG93cy5jb250YWlucyhuYW1lZEZsb3cpKTsKIAotICAgIG1fbmFt
ZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1lZEZsb3cpOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmFtZWRG
bG93LT5uYW1lKCkpOworICAgIG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKIH0KIAog
dm9pZCBXZWJLaXROYW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1bWVudERlc3Ryb3llZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggNGU2NDRkYy4uM2JhNGEzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjQzMiw2ICsyNDMy
LDE1IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFzc29jaWF0ZWQg
Y29udGVudCBub2RlcyBhbmQgcmVnaW9ucy4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0
cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1l
IjogInJlZ2lvbkxheW91dFVwZGF0ZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBb
CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6
ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJp
bmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgTmFtZWQgRmxvdyB3aG9zZSBs
YXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdydzIGxheW91dCBt
YXkgaGF2ZSBjaGFuZ2VkLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAg
ICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA1NzY4OGJiLi5iNTRjMjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTUxOCw2ICs1
MTgsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAgICAgbV9ub2RlVG9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVT
aGVldC5jbGVhcigpOwogICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY2xlYXIo
KTsKKyAgICBtX2RvY3VtZW50SWRUb05hbWVkRmxvd1NldE1hcC5jbGVhcigpOwogICAgIHJlc2V0
UHNldWRvU3RhdGVzKCk7CiB9CiAKQEAgLTUzNywyMiArNTM4LDI5IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVuZC0+
bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3Vt
ZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5v
ZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJ
ZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQor
ICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50
KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVx
dWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
bV9mcm9udGVuZC0+bmFtZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworICAg
IG1fZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+
bmFtZSgpLnN0cmluZygpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3Zl
TmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJZCA9IG1f
ZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAhbV9u
YW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgIGlmICgh
YXNzZXJ0QW5kUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKG5vZGVJZCwgbmFtZS5z
dHJpbmcoKSk7CisgICAgbV9mcm9udGVuZC0+bmFtZWRGbG93UmVtb3ZlZChtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCksIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiBk
b2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisgICAgaWYgKCFhc3NlcnRO
YW1lZEZsb3coZG9jdW1lbnQsIG5hbWVkRmxvdykpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZnJvbnRlbmQtPnJlZ2lvbkxheW91dFVwZGF0ZShtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1
bWVudCksIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JD
U1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6
UHNldWRvVHlwZSBwc2V1ZG9UeXBlKQpAQCAtODI3LDcgKzgzNSwxMSBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgaW50IGRvYwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
bmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsKKyAgICBp
ZiAoIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMoZG9jdW1lbnROb2Rl
SWQpKSB7CisgICAgICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuYWRkKGRvY3Vt
ZW50Tm9kZUlkKTsKKyAgICAgICAgbV9kb2N1bWVudElkVG9OYW1lZEZsb3dTZXRNYXAucmVtb3Zl
KGRvY3VtZW50Tm9kZUlkKTsKKyAgICB9CisKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVk
Rmxvdz4gPiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRG
bG93cygpOwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
TmFtZWRGbG93PiA+IG5hbWVkRmxvd3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6
OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAKQEAgLTg0NCwxNCArODU2LDIxIEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBpbnQgZG9jdW1lbnROb2RlCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3cgPSBkb2N1bWVudC0+bmFtZWRG
bG93cygpLT5mbG93QnlOYW1lKGZsb3dOYW1lKTsKKyAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93
PiB3ZWJraXROYW1lZEZsb3cgPSBkb2N1bWVudC0+d2Via2l0R2V0Rmxvd0J5TmFtZShmbG93TmFt
ZSk7CiAgICAgaWYgKCF3ZWJraXROYW1lZEZsb3cpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0g
Ik5vIHRhcmdldCBDU1MgTmFtZWQgRmxvdyBmb3VuZCI7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Iod2Via2l0TmFtZWRGbG93
KTsKLSAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgd2Vi
a2l0TmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7CisgICAgaWYgKCFtX25hbWVkRmxvd0NvbGxl
Y3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkgeworICAgICAgICBEb2N1
bWVudElkVG9OYW1lZEZsb3dTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudElkVG9OYW1l
ZEZsb3dTZXRNYXAuZmluZChkb2N1bWVudE5vZGVJZCk7CisgICAgICAgIGlmIChpdCA9PSBtX2Rv
Y3VtZW50SWRUb05hbWVkRmxvd1NldE1hcC5lbmQoKSkKKyAgICAgICAgICAgIGl0ID0gbV9kb2N1
bWVudElkVG9OYW1lZEZsb3dTZXRNYXAuYWRkKGRvY3VtZW50Tm9kZUlkLCBOYW1lZEZsb3dTZXQo
KSkuaXRlcmF0b3I7CisKKyAgICAgICAgaXQtPnNlY29uZC5hZGQod2Via2l0TmFtZWRGbG93Lmdl
dCgpKTsKKyAgICB9CisKKyAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJv
clN0cmluZywgd2Via2l0TmFtZWRGbG93LmdldCgpLCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyop
CkBAIC0xMTIyLDYgKzExNDEsNDMgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1l
ZEZsb3c+IEluc3BlY3RvckNTU0FnZW50OjpidWlsZE9iamVjdEZvck5hbWVkRmwKICAgICByZXR1
cm4gbmFtZWRGbG93LnJlbGVhc2UoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6YXNz
ZXJ0TmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZs
b3cpCit7CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQo
ZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKGRv
Y3VtZW50Tm9kZUlkKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBEb2N1bWVudElkVG9O
YW1lZEZsb3dTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudElkVG9OYW1lZEZsb3dTZXRN
YXAuZmluZChkb2N1bWVudE5vZGVJZCk7CisgICAgaWYgKGl0ID09IG1fZG9jdW1lbnRJZFRvTmFt
ZWRGbG93U2V0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
aXQtPnNlY29uZC5jb250YWlucyhuYW1lZEZsb3cpOworfQorCitib29sIEluc3BlY3RvckNTU0Fn
ZW50Ojphc3NlcnRBbmRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXRO
YW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBtX2RvbUFn
ZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1
ZXN0ZWQuY29udGFpbnMoZG9jdW1lbnROb2RlSWQpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIERvY3VtZW50SWRUb05hbWVkRmxvd1NldE1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50
SWRUb05hbWVkRmxvd1NldE1hcC5maW5kKGRvY3VtZW50Tm9kZUlkKTsKKyAgICBpZiAoaXQgPT0g
bV9kb2N1bWVudElkVG9OYW1lZEZsb3dTZXRNYXAuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChpdC0+c2Vjb25kLmNvbnRhaW5zKG5hbWVkRmxvdykpIHsKKyAgICAgICAg
aXQtPnNlY29uZC5yZW1vdmUobmFtZWRGbG93KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZW1vdmVEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAgaWYgKGRvY3VtZW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCAyYjgy
YjRjLi4zMGUxOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtOTgsOCArOTgsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5
UmVzdWx0Q2hhbmdlZCgpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgdm9pZCBkaWRDcmVhdGVO
YW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIGRpZFJlbW92
ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHZvaWQgZGlkVXBk
YXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVk
U3R5bGVQcm9wZXJ0eT4gPiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JO
b2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4m
IGF0dHJpYnV0ZXMpOwpAQCAtMTU2LDYgKzE1Nyw5IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6UmVnaW9uPiA+IGJ1aWxkQXJy
YXlGb3JSZWdpb25zKEVycm9yU3RyaW5nKiwgUGFzc1JlZlB0cjxOb2RlTGlzdD4sIGludCBkb2N1
bWVudE5vZGVJZCk7CiAgICAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+
IGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KEVycm9yU3RyaW5nKiwgV2ViS2l0TmFtZWRGbG93Kiwg
aW50IGRvY3VtZW50Tm9kZUlkKTsKIAorICAgIGJvb2wgYXNzZXJ0TmFtZWRGbG93KERvY3VtZW50
KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgYm9vbCBhc3NlcnRBbmRSZW1vdmVOYW1lZEZsb3co
RG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKwogICAgIC8vIEluc3BlY3RvckRPTUFnZW50
OjpET01MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVE
b2N1bWVudChEb2N1bWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5v
ZGUqKTsKQEAgLTE3NSw2ICsxNzksOSBAQCBwcml2YXRlOgogICAgIERvY3VtZW50VG9WaWFJbnNw
ZWN0b3JTdHlsZVNoZWV0IG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgTm9k
ZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZSBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAgICAg
SGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7CisgICAgdHlwZWRl
ZiBIYXNoU2V0PFdlYktpdE5hbWVkRmxvdyo+IE5hbWVkRmxvd1NldDsKKyAgICB0eXBlZGVmIEhh
c2hNYXA8aW50LCBOYW1lZEZsb3dTZXQgPiBEb2N1bWVudElkVG9OYW1lZEZsb3dTZXRNYXA7Cisg
ICAgRG9jdW1lbnRJZFRvTmFtZWRGbG93U2V0TWFwIG1fZG9jdW1lbnRJZFRvTmFtZWRGbG93U2V0
TWFwOwogCiAgICAgaW50IG1fbGFzdFN0eWxlU2hlZXRJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBmYWVh
MDY4Li5hZjg5Nzg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjMyLDE2ICsyMzIsMjIgQEAgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnUKICAgICAgICAgZG9tQWdlbnQtPndpbGxQb3BTaGFkb3dSb290KGhvc3Qs
IHJvb3QpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFt
ZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3cpCiB7CiAgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0Fn
ZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBjc3NBZ2Vu
dC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpOwogfQogCi12b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRS
ZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAg
ICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVOYW1lZEZs
b3coZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBjc3NBZ2VudC0+ZGlkUmVtb3ZlTmFtZWRGbG93
KGRvY3VtZW50LCBuYW1lZEZsb3cpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRG
bG93KQoreworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkVXBk
YXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50LCBuYW1lZEZsb3cpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3Vs
dCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCAxMTZkNzZjLi44NTNmNGMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC0xMTMsOCArMTEzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNo
YWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdp
bGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93
KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3Zl
TmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQg
ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAKICAg
ICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiwgY29uc3QgSGl0VGVz
dFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRs
ZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjkyLDggKzI5Myw5IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxs
UG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNo
YWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0g
ICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lk
IGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50Kiwg
V2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZvaWQgbW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRU
ZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFu
ZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNTYxLDIxICs1NjMs
MzAgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb28KICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9j
dW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2Vi
S2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1
bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVu
dGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOwogI2VuZGlmCiB9
CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRG
bG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoraW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1l
bnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVtb3ZlTmFtZWRG
bG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIGRp
ZFJlbW92ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVk
Rmxvdyk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZs
b3cqIG5hbWVkRmxvdykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3Vt
ZW50KSkKKyAgICAgICAgZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChpbnN0cnVtZW50aW5nQWdl
bnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggODIwNjk1
Yi4uZmQyOGQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNTgsNyArNTgsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5FdmVudHMgPSB7CiAgICAgU3R5bGVTaGVldENoYW5nZWQ6ICJTdHlsZVNoZWV0Q2hh
bmdlZCIsCiAgICAgTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZCIsCiAgICAgTmFtZWRGbG93Q3JlYXRlZDogIk5hbWVkRmxvd0NyZWF0ZWQiLAotICAgIE5h
bWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIgorICAgIE5hbWVkRmxvd1JlbW92ZWQ6
ICJOYW1lZEZsb3dSZW1vdmVkIiwKKyAgICBSZWdpb25MYXlvdXRVcGRhdGU6ICJSZWdpb25MYXlv
dXRVcGRhdGUiCiB9CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsK
QEAgLTM5OCw2ICszOTksMzAgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0g
ZG9jdW1lbnROb2RlSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqLworICAg
IF9yZWdpb25MYXlvdXRVcGRhdGU6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAg
IHsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGUpKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIC8qKgorICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3Vt
ZW50fSByb290CisgICAgICAgICovCisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2Fu
dCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50CisgICAgICAgICAg
ICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlLCB7IGRvY3VtZW50Tm9k
ZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlz
KSk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuU3R5bGVTaGVl
dElkfSBzdHlsZVNoZWV0SWQKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VGV4dAogICAgICAq
IEBwYXJhbSB7Ym9vbGVhbn0gbWFqb3JDaGFuZ2UKQEAgLTEzNDEsNiArMTM2NiwxNSBAQCBXZWJJ
bnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgbmFtZWRGbG93UmVtb3Zl
ZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCiAgICAgewogICAgICAgICB0aGlzLl9j
c3NNb2RlbC5fbmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJ
ZAorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICovCisgICAgcmVnaW9uTGF5b3V0
VXBkYXRlOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX2Nzc01vZGVsLl9yZWdpb25MYXlvdXRVcGRhdGUoZG9jdW1lbnROb2RlSWQsIG5hbWUpOwog
ICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRG
bG93VGhyZWFkLmNwcAppbmRleCA1YjAyNDUzLi41NGIzNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtMzEwLDcgKzMx
MCw3IEBAIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVw
ZGF0ZUV2ZW50KCkKIHsKICAgICBSZW5kZXJGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91
dFVwZGF0ZUV2ZW50KCk7CiAKLSAgICBpZiAoIW1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1l
ci5pc0FjdGl2ZSgpICYmIG1fbmFtZWRGbG93LT5oYXNFdmVudExpc3RlbmVycygpKQorICAgIGlm
ICghbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
cmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAK
</data>
<flag name="review"
          id="168407"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="168408"
          type_id="3"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>160934</attachid>
            <date>2012-08-28 02:19:28 -0700</date>
            <delta_ts>2012-09-03 02:29:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>39100</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiOWY3NjI3Li43Y2UxZTQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDgt
MjggIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDgtMjggIE1pa2UgV2VzdCAgPG1rd3N0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQgY2FsbCBzdGFja3MgdG8gQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2tzIHdoZW4gcmVs
ZXZhbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CmluZGV4
IDdjODJiNDguLmNjOTY2NmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhw
ZWN0ZWQudHh0CkBAIC00LDkgKzQsMTEgQEAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbiBCdWcgOTE2
MDcKIGdldEZsb3dCeU5hbWUgQnVnIDkxODU1CiBuYW1lZEZsb3dDcmVhdGVkIEJ1ZyA5MjczOQog
bmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKK3JlZ2lvbkxheW91dFVwZGF0ZSBCdWcgOTM0NDMK
K1RoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAKIAotUnVubmluZzog
dGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29s
bGVjdGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50ID09PQogKiBOYW1l
ZCBGbG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIzICsyMCwyNiBAQCBS
ZWdpb25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAKLVJ1bm5pbmc6IHRl
c3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxl
Y3Rpb25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRv
Y3VtZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAotUnVubmluZzog
dGVzdEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZQogPT09IE5hbWVk
IEZsb3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVkIEZsb3cgImZsb3cy
IgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5nOiB0ZXN0R2V0Rmxv
d0J5TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lCiA9PT0g
TmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUgaXMgbm8gTmFt
ZWQgRmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5pbmc6IHRlc3ROYW1l
ZEZsb3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93IgogCitSdW5uaW5n
OiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlCitSZWdpb25MYXlvdXRVcGRhdGU6ICJmbG93MyIKKwog
UnVubmluZzogdGVzdE5hbWVkRmxvd1JlbW92ZWQKIE5hbWVkRmxvd1JlbW92ZWQ6ICJ0bXBOYW1l
ZEZsb3ciCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9j
b2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAppbmRleCBkODM0YzJhLi4yYjU4
N2FlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNz
cy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCkBAIC0yMSwyNCArMjEsMzIgQEAg
ZnVuY3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKIGZ1bmN0aW9uIGNyZWF0ZU5hbWVkRmxv
dygpCiB7CiAgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhcnRpY2xl
Iik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworCiAgICAg
YXJ0aWNsZS5pZCA9ICJ0bXBBcnRpY2xlIjsKLSAgICBhcnRpY2xlLnN0eWxlLndlYmtpdEZsb3dJ
bnRvID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS5zdHlsZVsiLXdlYmtpdC1mbG93LWlu
dG8iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGFydGljbGUudGV4dENvbnRlbnQgPSAiVGhpcyB0
ZXh0IGlzIGZyb20gQ1NTIE5hbWVkIEZsb3cgXCJ0bXBOYW1lZEZsb3dcIiI7CisKKyAgICBkaXYu
aWQgPSAidG1wRGl2IjsKKyAgICBkaXYuc3R5bGVbIi13ZWJraXQtZmxvdy1mcm9tIl0gPSAidG1w
TmFtZWRGbG93IjsKKyAgICBkaXYuc3R5bGVbImhlaWdodCJdID0gIjVweCI7CisgICAgZGl2LnN0
eWxlWyJ3aWR0aCJdID0gIjIwcHgiOwogCiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChh
cnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CiB9CiAKIGZ1bmN0
aW9uIHJlbW92ZU5hbWVkRmxvdygpCiB7Ci0gICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidG1wQXJ0aWNsZSIpOwotCi0gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls
ZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIikpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcERpdiIpKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgp
CiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKICAgICBJbnNwZWN0
b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dD
b2xsZWN0aW9uMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVj
dGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
cmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC00NywxNiArNTUsMjAgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudC5pZCwgbmFtZWRGbG93Q2FsbGJhY2sp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dDYWxsYmFj
ayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2FsbGJhY2sobmFt
ZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluIG1haW4gZG9jdW1lbnQgPT09Iik7CiAK
LSAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3MpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IW5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiWyFdIEZhaWxlZCB0byBnZXQgTmFtZWQgRmxvd3MiKTsKICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIG5hbWVkRmxvd3MgPSBb
XTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBmbG93TmFtZSBpbiBuYW1lZEZsb3dNYXApCisg
ICAgICAgICAgICAgICAgICAgIG5hbWVkRmxvd3MucHVzaChuYW1lZEZsb3dNYXBbZmxvd05hbWVd
KTsKKwogICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Muc29ydChmdW5jdGlvbiAobmYxLCBuZjIp
IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgobmYxLm5hbWUgPT0gbmYyLm5hbWUpID8g
MCA6ICgobmYxLm5hbWUgPiBuZjIubmFtZSkgPyAxIDogLTEpKTsKICAgICAgICAgICAgICAgICB9
KTsKQEAgLTY4LDcgKzgwLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24yKG5l
eHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uV2l0aEludmFs
aWREb2N1bWVudChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
QWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC04MiwxMSArOTQs
MTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01v
ZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhub2RlSWQsIG5hbWVkRmxvd0NhbGxiYWNr
KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2FsbGJh
Y2sobmFtZWRGbG93cykKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5h
bWVkRmxvd01hcCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBGbG93cyBpbiAjZmFrZS1kb2N1bWVudCA9PT0iKTsK
IAotICAgICAgICAgICAgICAgIGlmIChuYW1lZEZsb3dzKSB7CisgICAgICAgICAgICAgICAgaWYg
KG5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiWyFdIEZhaWxlZCIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNv
bXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05Nyw3ICsxMDks
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAotICAgICAg
ICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZTEobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVz
dEdldEZsb3dCeU5hbWUobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsKIApAQCAtMTIyLDcg
KzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0g
ICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMihuZXh0KQorICAgICAgICBmdW5jdGlv
biB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJbnZhbGlkTmFtZShuZXh0KQogICAgICAgICB7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2Fs
bGJhY2spOwogCkBAIC0xNTMsMTUgKzE2NSwyOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCiAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2Rl
bC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5O
YW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CiAKLSAgICAgICAgICAgICAgICBpZiAo
ZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0ZWQ6IFwidG1wTmFtZWRGbG93XCIiKTsKKyAg
ICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdFJlZ2lvbkxheW91dFVwZGF0ZShuZXh0KQorICAgICAgICB7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlLCBjYWxsYmFjaywgdGhp
cyk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChcInJlZ2lvbjNcIikuc3R5bGVbXCJ3aWR0aFwiXSA9IFwiMjAwcHhcIiIp
OworCisgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAiZmxvdzMiKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0ZWQ6IFwidG1wTmFtZWRG
bG93XCIiKTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0
VXBkYXRlLCBjYWxsYmFjaywgdGhpcyk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiUmVnaW9uTGF5b3V0VXBkYXRlOiBcImZsb3czXCIiKTsKICAgICAgICAgICAg
ICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0xNzMsMTIgKzE5OSwx
MCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZl
bnQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5h
bWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAgICAgICAgICBpZiAoZXZl
bnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRh
dGEuZmxvd05hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZl
bnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVkOiBcInRtcE5hbWVkRmxv
d1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjA0LDYgKzIyOCw3IEBAIFRlc3Rz
IHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKICAgICA8bGk+Z2V0Rmxvd0J5TmFt
ZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTUi
PkJ1ZyA5MTg1NTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dDcmVhdGVkIDxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9h
PjwvbGk+CiAgICAgPGxpPm5hbWVkRmxvd1JlbW92ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5Ij5CdWcgOTI3Mzk8L2E+PC9saT4KKyAgICA8
bGk+cmVnaW9uTGF5b3V0VXBkYXRlIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MzQ0MyI+QnVnIDkzNDQzPC9hPjwvbGk+CiA8L3VsPgogPC9wPgogCkBA
IC0yMTYsOCArMjQxLDEwIEBAIFRlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50
czoKIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+PC9kaXY+CiA8ZGl2IHN0
eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2PgogCi08YXJ0aWNsZSBzdHlsZT0i
LXdlYmtpdC1mbG93LWludG86IGZsb3czIj48L2FydGljbGU+Ci08ZGl2IHN0eWxlPSItd2Via2l0
LWZsb3ctZnJvbTogZmxvdzMiPjwvZGl2PgorPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1p
bnRvOiBmbG93MyI+CisgICAgVGhpcyB0ZXh0IGlzIGZyb20gQ1NTIE5hbWVkIEZsb3cgImZsb3cz
Ii4KKzwvYXJ0aWNsZT4KKzxkaXYgaWQ9InJlZ2lvbjMiIHN0eWxlPSItd2Via2l0LWZsb3ctZnJv
bTogZmxvdzM7IGhlaWdodDogMjBweDsgd2lkdGg6IDVweCI+PC9kaXY+CiAKIDxkaXYgaWQ9ImZh
a2UtZG9jdW1lbnQiPjwvZGl2PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmZiNmEzYS4uNmI5MTgxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA4LTI4ICBBbmRyZWkgUG9lbmFydSAgPHBv
ZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFByb3RvY29sIEV4dGVu
c2lvbjogQWRkICJyZWdpb25MYXlvdXRVcGRhdGUiIGV2ZW50CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ0MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkICJyZWdpb25MYXlvdXRVcGRhdGUiIGV2
ZW50IHRvIHRoZSBwcm90b2NvbC4KKworICAgICAgICBSZW1vdmVkICJnZXRGbG93QnlOYW1lIiBm
cm9tIHByb3RvY29sLgorCisgICAgICAgIFRoZSBmcm9udC1lbmQga2VlcHMgaW4gc3luYyB0aGUg
cmVxdWVzdGVkIE5hbWVkIEZsb3cgQ29sbGVjdGlvbnMuCisKKyAgICAgICAgTW9kaWZpZWQgZXhp
c3RpbmcgdGVzdDogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5k
cy5odG1sCisKKyAgICAgICAgKiBkb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyk6Cisg
ICAgICAgICogZG9tL1dlYktpdE5hbWVkRmxvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJL
aXROYW1lZEZsb3c6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENy
ZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
UmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NB
Z2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJ
bXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6Cisg
ICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3cpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFVwZGF0ZVJlZ2lvbkxheW91dCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25Bc3luYy5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5
bmMuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90
eXBlLmdldEZsb3dCeU5hbWVBc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd0NyZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fcmVnaW9uTGF5b3V0VXBkYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5yZXNldE5hbWVk
Rmxvd0NvbGxlY3Rpb25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnBy
b3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNw
YXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRhdGUpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93
Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5w
cm90b3R5cGUuYXBwZW5kTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZs
b3dDb2xsZWN0aW9uLnByb3RvdHlwZS5yZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLmdldEZsb3dCeU5hbWUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2
ZW50KToKKwogMjAxMi0wOC0yOCAgTWlrZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFkZCBjYWxsIHN0YWNrcyB0byBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjaGVja3Mg
d2hlbiByZWxldmFudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cAppbmRleCAxNTg4ZmM2Li5kMGM3MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxv
d0NvbGxlY3Rpb24uY3BwCkBAIC04MSw3ICs4MSw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRG
bG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5n
CiAgICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6
Y3JlYXRlKHRoaXMsIGZsb3dOYW1lKTsKICAgICBtX25hbWVkRmxvd3MuYWRkKG5ld0Zsb3cuZ2V0
KCkpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3co
bV9kb2N1bWVudCwgbmV3Rmxvdy0+bmFtZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LmdldCgpKTsKIAogICAg
IHJldHVybiBuZXdGbG93LnJlbGVhc2UoKTsKIH0KQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCBOYW1l
ZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRG
bG93KQogICAgIEFTU0VSVChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxv
dzo6Rmxvd1N0YXRlTnVsbCk7CiAgICAgQVNTRVJUKG1fbmFtZWRGbG93cy5jb250YWlucyhuYW1l
ZEZsb3cpKTsKIAotICAgIG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1l
ZEZsb3cpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZs
b3cobV9kb2N1bWVudCwgbmFtZWRGbG93LT5uYW1lKCkpOworICAgIG1fbmFtZWRGbG93cy5yZW1v
dmUobmFtZWRGbG93KTsKIH0KIAogdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1bWVudERl
c3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFtZWRGbG93
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCmluZGV4IDE0Mjc4
OGIuLjgyMDVkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZs
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAKICNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1Ro
cmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgpAQCAtMTk4LDYgKzE5OSwxMSBAQCB2
b2lkIFdlYktpdE5hbWVkRmxvdzo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCiAg
ICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVChtX3BhcmVu
dEZsb3dUaHJlYWQpOwogCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVS
ZWdpb25MYXlvdXQobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSwgdGhpcyk7CisKKyAgICBpZiAo
IWhhc0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0cjxFdmVu
dD4gZXZlbnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdFJlZ2lvbkxheW91
dFVwZGF0ZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1fcGFyZW50Rmxvd1RocmVhZC0+ZG9jdW1lbnQo
KS0+ZGVmYXVsdFZpZXcoKSwgMCk7CiAKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCBkYWUzNjg5Li5hNGRiZjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDExLDE4ICsyNDEx
LDYgQEAKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1bWVudC4iLAogICAgICAgICAg
ICAgICAgICJoaWRkZW4iOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICJuYW1lIjogImdldEZsb3dCeU5hbWUiLAotICAgICAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9k
ZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQg
bm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBl
IjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlkZW50aWZpZXIuIiB9Ci0g
ICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAi
ZGVzY3JpcHRpb24iOiAiQSBOYW1lZCBGbG93LiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAg
ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3cgaWRlbnRp
ZmllZCBieSB0aGUgZ2l2ZW4gbmFtZSIsCi0gICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUK
ICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTI0NDAs
OCArMjQyOCw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFt
ZWRGbG93Q3JlYXRlZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9k
ZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVz
Y3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgbmV3IE5hbWVkIEZsb3cuIiB9CisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93Iiwg
ImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KICAgICAgICAgICAgICAgICBd
LAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxv
dyBpcyBjcmVhdGVkLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAgLTI0NTAs
MTAgKzI0MzcsMTggQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dSZW1vdmVk
IiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3Jp
cHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJ
ZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZmxvd05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24i
OiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAg
ICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1l
ZCBGbG93IGlzIHJlbW92ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJl
Z2lvbnMuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZWdpb25MYXlvdXRVcGRh
dGUiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlwdGlv
biI6ICJUaGUgTmFtZWQgRmxvdyB3aG9zZSBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iIH0KKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3
aGVuIGEgTmFtZWQgRmxvdydzIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLiIsCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA1
M2EzNTNmLi41OGZhMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTUzNywyMiArNTM3LDMzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVuZC0+bWVkaWFR
dWVyeVJlc3VsdENoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3Jl
YXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBk
b2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJZCA9
IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAh
bV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgIGlu
dCBkb2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAg
ICBpZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVk
LmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9u
dGVuZC0+bmFtZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworICAgIEVycm9y
U3RyaW5nIGVycm9yU3RyaW5nOworICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQoYnVp
bGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9k
ZUlkKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFub2RlSWQgfHwgIW1fbmFtZWRGbG93Q29s
bGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKKyAgICBpbnQgZG9jdW1lbnROb2Rl
SWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVu
dE5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhkb2N1
bWVudE5vZGVJZCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxv
d1JlbW92ZWQobm9kZUlkLCBuYW1lLnN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kLT5uYW1lZEZs
b3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQoreworICAgIGludCBkb2N1
bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAgICBpZiAo
IWRvY3VtZW50Tm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRh
aW5zKGRvY3VtZW50Tm9kZUlkKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXJyb3JTdHJpbmcg
ZXJyb3JTdHJpbmc7CisgICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBkYXRlKGJ1aWxkT2Jq
ZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkp
OwogfQogCiBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQq
IGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUpCkBAIC04MjgsMzIg
KzgzOSwxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9u
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogICAgICAgICByZXR1cm47CiAKICAg
ICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7CisK
ICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzVmVjdG9yID0g
ZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygpOwogICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+IG5hbWVkRmxvd3MgPSBU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7
CiAKLQogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID46Oml0ZXJhdG9y
IGl0ID0gbmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVu
ZCgpOyArK2l0KQogICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KGVycm9yU3RyaW5nLCBpdC0+Z2V0KCksIGRvY3VtZW50Tm9kZUlkKSk7CiAKICAgICBy
ZXN1bHQgPSBuYW1lZEZsb3dzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5v
ZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5h
bWVkRmxvdz4mIHJlc3VsdCkKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50
LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlmICgh
ZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYktpdE5hbWVkRmxvdyogd2Via2l0
TmFtZWRGbG93ID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7
Ci0gICAgaWYgKCF3ZWJraXROYW1lZEZsb3cpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5v
IHRhcmdldCBDU1MgTmFtZWQgRmxvdyBmb3VuZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Iod2Via2l0TmFtZWRGbG93KTsK
LSAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgd2Via2l0
TmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCiB7CiAgICAgbV9jdXJyZW50U2Vs
ZWN0b3JQcm9maWxlID0gYWRvcHRQdHIobmV3IFNlbGVjdG9yUHJvZmlsZSgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMmI4MmI0Yy4uYmEy
MTExYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgK
QEAgLTk4LDggKzk4LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENo
YW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93
KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCBkaWRSZW1vdmVOYW1lZEZs
b3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIGRpZFVwZGF0ZVJlZ2lv
bkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgdmlydHVhbCB2b2lk
IGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxlUHJv
cGVydHk+ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4m
IGlubGluZVN0eWxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRyaWJ1
dGVzKTsKQEAgLTExNSw3ICsxMTYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN1
cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gPiYgcmVzdWx0KTsKICAgICB2
aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRvY3Vt
ZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5h
bWVkRmxvdz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5TmFtZShFcnJv
clN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYWY0NDcyOC4uNDg5ZmQ0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKQEAgLTIzMSwxNiArMjMxLDIyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1CiAgICAgICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRG
bG93KQogewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ3Jl
YXRlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0
ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRG
bG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogICAgIGlmIChJbnNw
ZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JD
U1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50
LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwg
bmFtZWRGbG93KTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0
ZVJlZ2lvbkxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAg
ICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZFVwZGF0ZVJlZ2lvbkxh
eW91dChkb2N1bWVudCwgbmFtZWRGbG93KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVk
IG1vZGlmaWVyRmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggZGIzMzViZi4uN2NhYjBhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
MTEzLDggKzExMyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlZChEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVs
ZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3Jl
YXRlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCos
IFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZVJl
Z2lvbkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZv
aWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1
bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNz
KFBhZ2UqKTsKQEAgLTI4OSw4ICsyOTAsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVt
ZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jv
b3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7
Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2
b2lkIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50
KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVO
YW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVk
RmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZv
aWQgZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1l
bnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKIAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYs
IHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJl
c3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTU1OSwyMSArNTYxLDMwIEBAIGlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVu
dCogaG9zdCwgU2hhZG93Um9vCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxv
dyogbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1l
bnQpKQotICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMs
IGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKICNlbmRpZgogfQogCi1pbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBkaWRSZW1vdmVOYW1l
ZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOworI2Vu
ZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRl
UmVnaW9uTGF5b3V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZs
b3cpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAg
ICAgIGRpZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1l
bnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyMDY5NWIuLmMxNGE0Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVN
b2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMKQEAgLTM5LDYgKzM5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwgPSBm
dW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb1JlcXVlc3RlZCwgdGhpcy5fdW5kb1Jl
ZG9SZXF1ZXN0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9Db21wbGV0ZWQsIHRo
aXMuX3VuZG9SZWRvQ29tcGxldGVkLCB0aGlzKTsKICAgICB0aGlzLl9yZXNvdXJjZUJpbmRpbmcg
PSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7Cisg
ICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICBXZWJJbnNwZWN0b3IuZG9t
QWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3Vt
ZW50VXBkYXRlZCwgdGhpcy5yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zLCB0aGlzKTsKICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNT
U0Rpc3BhdGNoZXIodGhpcykpOwogICAgIENTU0FnZW50LmVuYWJsZSgpOwogfQpAQCAtNTgsNyAr
NjAsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMgPSB7CiAgICAgU3R5bGVT
aGVldENoYW5nZWQ6ICJTdHlsZVNoZWV0Q2hhbmdlZCIsCiAgICAgTWVkaWFRdWVyeVJlc3VsdENo
YW5nZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCiAgICAgTmFtZWRGbG93Q3JlYXRlZDog
Ik5hbWVkRmxvd0NyZWF0ZWQiLAotICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1v
dmVkIgorICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIiwKKyAgICBSZWdp
b25MYXlvdXRVcGRhdGU6ICJSZWdpb25MYXlvdXRVcGRhdGUiCiB9CiAKIFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTE3MiwxMCArMTc1LDE2IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJh
bSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJh
eS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKE9iamVjdCl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldE5hbWVkRmxv
d0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCisgICAgZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgdXNlckNh
bGxiYWNrKQogICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9u
YW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAgIGlmIChuYW1lZEZs
b3dDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29sbGVj
dGlvbi5uYW1lZEZsb3dNYXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAg
ICAgICAgLyoqCiAgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0
b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2Nv
bC5FcnJvcn0gZXJyb3IKQEAgLTE4NSwxMSArMTk0LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yIHx8
ICFuYW1lZEZsb3dQYXlsb2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVj
dG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXlsb2FkKSk7CisgICAg
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbihuYW1lZEZsb3dQYXlsb2FkKTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJ
ZF0gPSBuYW1lZEZsb3dDb2xsZWN0aW9uOworICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhu
YW1lZEZsb3dDb2xsZWN0aW9uLm5hbWVkRmxvd01hcCk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KIAotICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2Fs
bGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKKyAgICAgICAgQ1NTQWdlbnQuZ2V0TmFt
ZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2Vy
Q2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xOTcsMjIgKzIwOSwyNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJp
bmd9IGZsb3dOYW1lCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdyl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldEZsb3dCeU5hbWVBc3luYzogZnVu
Y3Rpb24obm9kZUlkLCBmbG93TmFtZSwgdXNlckNhbGxiYWNrKQorICAgIGdldEZsb3dCeU5hbWVB
c3luYzogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCB1c2VyQ2FsbGJhY2spCiAg
ICAgeworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0Nv
bGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0NvbGxlY3Rp
b24pIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLmdldEZs
b3dCeU5hbWUoZmxvd05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAg
ICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuTmFt
ZWRGbG93KX0gdXNlckNhbGxiYWNrCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9y
fSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZsb3c9fSBuYW1lZEZs
b3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxvdz19IG5hbWVk
Rmxvd01hcAogICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxi
YWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
dXNlckNhbGxiYWNrLCBuYW1lZEZsb3dNYXApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChl
cnJvciB8fCAhbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFt
ZWRGbG93TWFwKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCkpOworICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayh0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0uZ2V0
Rmxvd0J5TmFtZShmbG93TmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdlbnQuZ2V0
Rmxvd0J5TmFtZShub2RlSWQsIGZsb3dOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxs
YmFjaykpOworICAgICAgICB0aGlzLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVu
dE5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAg
ICAgLyoqCkBAIC0zNTAsNTEgKzM2Nyw1NCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQu
Tm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8K
LSAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisg
ICAgX25hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewot
ICAgICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIC8qKgotICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSBy
b290Ci0gICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBw
b3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAo
ZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQo
bmFtZWRGbG93UGF5bG9hZCk7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhp
cy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsKIAotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3Vt
ZW50Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOwotICAgICAgICB9CisgICAgICAgIGlmICghbmFtZWRG
bG93Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmFtZWRGbG93Q29s
bGVjdGlvbi5hcHBlbmROYW1lZEZsb3cobmFtZWRGbG93KTsKIAotICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
RXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgbmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAgICAg
Ki8KLSAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUp
CisgICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFt
ZSkKICAgICB7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRG
bG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdOworCisgICAgICAgIGlmICghbmFtZWRGbG93
Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmFtZWRGbG93Q29sbGVj
dGlvbi5yZW1vdmVOYW1lZEZsb3coZmxvd05hbWUpOworCiAgICAgICAgIGlmICghdGhpcy5oYXNF
dmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93
UmVtb3ZlZCkpCiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dS
ZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgZmxvd05hbWU6IGZsb3dO
YW1lIH0pOworICAgIH0sCiAKLSAgICAgICAgLyoqCi0gICAgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRE9NRG9jdW1lbnR9IHJvb3QKLSAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2Fs
bGJhY2socm9vdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21l
bnQgd2Ugb25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1l
bnQKLSAgICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKLSAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZs
b3d9IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgKi8KKyAgICBfcmVnaW9uTGF5b3V0VXBkYXRlOiBm
dW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvdyA9
IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKG5hbWVkRmxvd1BheWxvYWQpOwor
ICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rp
b25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJZF07CiAKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1l
ZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogbmFt
ZSB9KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIW5hbWVkRmxvd0NvbGxlY3Rpb24pCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRG
bG93KG5hbWVkRmxvdyk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3RE
b2N1bWVudChjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKCF0aGlzLmhhc0V2ZW50
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRV
cGRhdGUpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0
VXBkYXRlLCBuYW1lZEZsb3cpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTQ2Myw2ICs0ODMsMTEg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9zb3VyY2VNYXBwaW5ncyA9IHt9OwogICAgIH0sCiAKKyAgICByZXNldE5hbWVkRmxvd0NvbGxl
Y3Rpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0
aW9ucyA9IHt9OworICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5DU1NMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9y
LlVJTG9jYXRpb259CkBAIC0xMzI2LDIxICsxMzUxLDI4IEBAIFdlYkluc3BlY3Rvci5DU1NEaXNw
YXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtE
T01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAog
ICAgICAqLwotICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBu
YW1lKQorICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAg
ICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChkb2N1bWVudE5v
ZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dDcmVhdGVkKG5h
bWVkRmxvd1BheWxvYWQpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0RPTUFn
ZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQogICAgICAqLwotICAgIG5hbWVkRmxvd1Jl
bW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIG5hbWVkRmxvd1JlbW92
ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAgIHRo
aXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKKyAg
ICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZs
b3dOYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1l
ZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgKi8KKyAgICByZWdpb25MYXlvdXRVcGRhdGU6
IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCisgICAgeworICAgICAgICB0aGlzLl9jc3NNb2Rl
bC5fcmVnaW9uTGF5b3V0VXBkYXRlKG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0KIH0KIApAQCAt
MTM1MCw3ICsxMzgyLDcgQEAgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlID0g
ewogICovCiBXZWJJbnNwZWN0b3IuTmFtZWRGbG93ID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAg
ICB0aGlzLm5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7CisgICAgdGhpcy5kb2N1bWVu
dE5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7CiAgICAgdGhpcy5uYW1lID0gcGF5bG9h
ZC5uYW1lOwogICAgIHRoaXMub3ZlcnNldCA9IHBheWxvYWQub3ZlcnNldDsKICAgICB0aGlzLmNv
bnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7CkBAIC0xMzY3LDIwICsxMzk5LDQ5IEBAIFdlYkluc3Bl
Y3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKIH0KIAogLyoq
Ci0gKiBAcGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pj19IG5hbWVkRmxvd1BheWxv
YWQKLSAqIEByZXR1cm4gez9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz59CisgKiBAY29u
c3RydWN0b3IKKyAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gcGF5bG9h
ZAogICovCi1XZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5ID0gZnVuY3Rp
b24obmFtZWRGbG93UGF5bG9hZCkKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uID0g
ZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICBpZiAoIW5hbWVkRmxvd1BheWxvYWQpCi0gICAgICAg
IHJldHVybiBudWxsOworICAgIHRoaXMubmFtZWRGbG93TWFwID0ge307CiAKLSAgICB2YXIgcGFy
c2VkQXJyYXkgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVkRmxvd1BheWxvYWQu
bGVuZ3RoOyArK2kpCi0gICAgICAgIHBhcnNlZEFycmF5W2ldID0gV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZFtpXSk7Ci0gICAgcmV0dXJuIHBhcnNl
ZEFycmF5OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZC5sZW5ndGg7ICsraSkgewor
ICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxv
YWQocGF5bG9hZFtpXSk7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFwW25hbWVkRmxvdy5uYW1l
XSA9IG5hbWVkRmxvdzsKKyAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0
aW9uLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5O
YW1lZEZsb3d9IG5hbWVkRmxvdworICAgICAqLworICAgIGFwcGVuZE5hbWVkRmxvdzogZnVuY3Rp
b24obmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgdGhpcy5uYW1lZEZsb3dNYXBbbmFtZWRGbG93
Lm5hbWVdID0gbmFtZWRGbG93OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZmxvd05hbWUKKyAgICAgKi8KKyAgICByZW1vdmVOYW1lZEZsb3c6IGZ1bmN0aW9uKGZs
b3dOYW1lKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMubmFtZWRGbG93TWFwW2Zsb3dOYW1l
XTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCisg
ICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30KKyAgICAgKi8KKyAgICBnZXRG
bG93QnlOYW1lOiBmdW5jdGlvbihmbG93TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBuYW1lZEZs
b3cgPSB0aGlzLm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisKKyAgICAgICAgaWYgKG5hbWVkRmxv
dyA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVy
biBuYW1lZEZsb3c7CisgICAgfQorfQogLyoqCiAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWx9CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNWIwMjQ1My4uNTRiMzYxOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTMxMCw3
ICszMTAsNyBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlv
dXRVcGRhdGVFdmVudCgpCiB7CiAgICAgUmVuZGVyRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25M
YXlvdXRVcGRhdGVFdmVudCgpOwogCi0gICAgaWYgKCFtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
VGltZXIuaXNBY3RpdmUoKSAmJiBtX25hbWVkRmxvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkKKyAg
ICBpZiAoIW1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQogICAgICAg
ICBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCg==
</data>
<flag name="review"
          id="171597"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161884</attachid>
            <date>2012-09-03 02:29:16 -0700</date>
            <delta_ts>2012-09-03 08:16:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>39942</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlOGNjZTA2Li41YjZjM2UwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MDMgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMDIgIEtlbmljaGkgSXNoaWJhc2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdlZCB0ZXN0IGV4cGVjdGF0aW9uIHVwZGF0ZSBhZnRl
ciByMTI3Mzk4CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3Rv
Y29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDdjODJiNDguLjlmZTljZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMt
ZXhwZWN0ZWQudHh0CkBAIC00LDkgKzQsMTEgQEAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbiBCdWcg
OTE2MDcKIGdldEZsb3dCeU5hbWUgQnVnIDkxODU1CiBuYW1lZEZsb3dDcmVhdGVkIEJ1ZyA5Mjcz
OQogbmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKK3JlZ2lvbkxheW91dFVwZGF0ZWQgQnVnIDkz
NDQzCitUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMiLgogCiAKLVJ1bm5p
bmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMQorUnVubmluZzogdGVzdEdldE5hbWVkRmxv
d0NvbGxlY3Rpb24KID09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0KICog
TmFtZWQgRmxvdyAiZmxvdzEiCiBDb250ZW50IEVsZW1lbnRzOiAxCkBAIC0xOCwyMyArMjAsMjYg
QEAgUmVnaW9uczogMgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMQogCi1SdW5uaW5n
OiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIKK1J1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dD
b2xsZWN0aW9uV2l0aEludmFsaWREb2N1bWVudAogPT09IENTUyBOYW1lZCBGbG93cyBpbiAjZmFr
ZS1kb2N1bWVudCA9PT0KICNmYWtlLWRvY3VtZW50IGlzIG5vdCBhIGRvY3VtZW50CiAKLVJ1bm5p
bmc6IHRlc3RHZXRGbG93QnlOYW1lMQorUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUKID09PSBO
YW1lZCBGbG93ICJmbG93MiIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogKiBOYW1lZCBGbG93ICJm
bG93MiIKIENvbnRlbnQgRWxlbWVudHM6IDEKIFJlZ2lvbnM6IDIKIAotUnVubmluZzogdGVzdEdl
dEZsb3dCeU5hbWUyCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJbnZhbGlkTmFtZQog
PT09IE5hbWUgRmxvdyAiZmxvdzQiIGZyb20gbWFpbiBkb2N1bWVudCA9PT0KIFRoZXJlIGlzIG5v
IE5hbWVkIEZsb3cgImZsb3c0IiBpbiB0aGUgbWFpbiBkb2N1bWVudAogCiBSdW5uaW5nOiB0ZXN0
TmFtZWRGbG93Q3JlYXRlZAogTmFtZWRGbG93Q3JlYXRlZDogInRtcE5hbWVkRmxvdyIKIAorUnVu
bmluZzogdGVzdFJlZ2lvbkxheW91dFVwZGF0ZWQKK1JlZ2lvbkxheW91dFVwZGF0ZWQ6ICJmbG93
MyIKKwogUnVubmluZzogdGVzdE5hbWVkRmxvd1JlbW92ZWQKIE5hbWVkRmxvd1JlbW92ZWQ6ICJ0
bXBOYW1lZEZsb3ciCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAppbmRleCBkODM0YzJh
Li40MGVmNjkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3Rv
Y29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCkBAIC0yMSwyNCArMjEs
MzIgQEAgZnVuY3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKIGZ1bmN0aW9uIGNyZWF0ZU5h
bWVkRmxvdygpCiB7CiAgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJh
cnRpY2xlIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
CiAgICAgYXJ0aWNsZS5pZCA9ICJ0bXBBcnRpY2xlIjsKLSAgICBhcnRpY2xlLnN0eWxlLndlYmtp
dEZsb3dJbnRvID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS5zdHlsZVsiLXdlYmtpdC1m
bG93LWludG8iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGFydGljbGUudGV4dENvbnRlbnQgPSAi
VGhpcyB0ZXh0IGlzIGZyb20gQ1NTIE5hbWVkIEZsb3cgXCJ0bXBOYW1lZEZsb3dcIiI7CisKKyAg
ICBkaXYuaWQgPSAidG1wRGl2IjsKKyAgICBkaXYuc3R5bGVbIi13ZWJraXQtZmxvdy1mcm9tIl0g
PSAidG1wTmFtZWRGbG93IjsKKyAgICBkaXYuc3R5bGVbImhlaWdodCJdID0gIjVweCI7CisgICAg
ZGl2LnN0eWxlWyJ3aWR0aCJdID0gIjIwcHgiOwogCiAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRpdik7CiB9CiAK
IGZ1bmN0aW9uIHJlbW92ZU5hbWVkRmxvdygpCiB7Ci0gICAgdmFyIGFydGljbGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidG1wQXJ0aWNsZSIpOwotCi0gICAgZG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIikpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcERpdiIpKTsKIH0KIAogZnVuY3Rpb24g
dGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVudHMiKTsKICAgICBJ
bnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1l
ZEZsb3dDb2xsZWN0aW9uMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93
Q29sbGVjdGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
QWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC00NywxNiArNTUs
MjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01v
ZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudC5pZCwgbmFtZWRGbG93Q2Fs
bGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dD
YWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2FsbGJh
Y2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluIG1haW4gZG9jdW1lbnQgPT09
Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3MpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoIW5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCB0byBnZXQgTmFtZWQgRmxvd3MiKTsKICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgICAgIG5hbWVkRmxv
d3MgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBmbG93TmFtZSBpbiBuYW1lZEZsb3dN
YXApCisgICAgICAgICAgICAgICAgICAgIG5hbWVkRmxvd3MucHVzaChuYW1lZEZsb3dNYXBbZmxv
d05hbWVdKTsKKwogICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Muc29ydChmdW5jdGlvbiAobmYx
LCBuZjIpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgobmYxLm5hbWUgPT0gbmYyLm5h
bWUpID8gMCA6ICgobmYxLm5hbWUgPiBuZjIubmFtZSkgPyAxIDogLTEpKTsKICAgICAgICAgICAg
ICAgICB9KTsKQEAgLTY4LDcgKzgwLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rp
b24yKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uV2l0
aEludmFsaWREb2N1bWVudChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC04Miwx
MSArOTQsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc01vZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhub2RlSWQsIG5hbWVkRmxvd0Nh
bGxiYWNrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93
Q2FsbGJhY2sobmFtZWRGbG93cykKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxi
YWNrKG5hbWVkRmxvd01hcCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBGbG93cyBpbiAjZmFrZS1kb2N1bWVudCA9
PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmIChuYW1lZEZsb3dzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKG5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC05Nyw3
ICsxMDksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAot
ICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZTEobmV4dCkKKyAgICAgICAgZnVuY3Rp
b24gdGVzdEdldEZsb3dCeU5hbWUobmV4dCkKICAgICAgICAgewogICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxiYWNrKTsKIApAQCAt
MTIyLDcgKzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9
LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMihuZXh0KQorICAgICAgICBm
dW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJbnZhbGlkTmFtZShuZXh0KQogICAgICAgICB7
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3Vt
ZW50Q2FsbGJhY2spOwogCkBAIC0xNTMsMTUgKzE2NSwyOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAog
ICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCiAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5j
c3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2
ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CiAKLSAgICAgICAgICAgICAg
ICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0ZWQ6IFwidG1wTmFtZWRGbG93XCIi
KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisK
KyAgICAgICAgZnVuY3Rpb24gdGVzdFJlZ2lvbkxheW91dFVwZGF0ZWQobmV4dCkKKyAgICAgICAg
eworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVwZGF0ZWQsIGNhbGxi
YWNrLCB0aGlzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVnaW9uM1wiKS5zdHlsZVtcIndpZHRoXCJdID0gXCIy
MDBweFwiIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQorICAgICAg
ICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJmbG93MyIp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0
bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5y
ZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5SZWdp
b25MYXlvdXRVcGRhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisKKyAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVnaW9uTGF5b3V0VXBkYXRlZDogXCJmbG93M1wiIik7CiAg
ICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9LApAQCAtMTcz
LDEyICsxOTksMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNh
bGxiYWNrKGV2ZW50KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpIHsKLSAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOwotICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgIGlm
IChldmVudC5kYXRhLmZsb3dOYW1lICE9PSAidG1wTmFtZWRGbG93IikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7CiAKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93UmVtb3ZlZDogXCJ0
bXBOYW1lZEZsb3dcIiIpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTIwNCw2ICsyMjgs
NyBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6CiAgICAgPGxpPmdl
dEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KICAgICA8bGk+bmFtZWRGbG93Q3JlYXRlZCA8
YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3MzkiPkJ1
ZyA5MjczOTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVkIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9hPjwv
bGk+CisgICAgPGxpPnJlZ2lvbkxheW91dFVwZGF0ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzIj5CdWcgOTM0NDM8L2E+PC9saT4KIDwvdWw+
CiA8L3A+CiAKQEAgLTIxNiw4ICsyNDEsMTAgQEAgVGVzdHMgdGhlIGZvbGxvd2luZyBjb21tYW5k
cyBhbmQgZXZlbnRzOgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rp
dj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+PC9kaXY+CiAKLTxhcnRp
Y2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPjwvYXJ0aWNsZT4KLTxkaXYgc3R5
bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MyI+PC9kaXY+Cis8YXJ0aWNsZSBzdHlsZT0iLXdl
YmtpdC1mbG93LWludG86IGZsb3czIj4KKyAgICBUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQg
RmxvdyAiZmxvdzMiLgorPC9hcnRpY2xlPgorPGRpdiBpZD0icmVnaW9uMyIgc3R5bGU9Ii13ZWJr
aXQtZmxvdy1mcm9tOiBmbG93MzsgaGVpZ2h0OiAyMHB4OyB3aWR0aDogNXB4Ij48L2Rpdj4KIAog
PGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3YjMzNWJiLi4x
ZDM2YjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTItMDktMDMgIEFuZHJlaSBQ
b2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogUHJv
dG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgInJlZ2lvbkxheW91
dFVwZGF0ZSIgZXZlbnQgdG8gdGhlIHByb3RvY29sLgorCisgICAgICAgIFJlbW92ZWQgImdldEZs
b3dCeU5hbWUiIGZyb20gcHJvdG9jb2wuCisKKyAgICAgICAgVGhlIGZyb250LWVuZCBrZWVwcyBp
biBzeW5jIHRoZSByZXF1ZXN0ZWQgTmFtZWQgRmxvdyBDb2xsZWN0aW9ucy4KKworICAgICAgICBN
b2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdp
b25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dXaXRo
TmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJkTmFt
ZWRGbG93KToKKyAgICAgICAgKiBkb20vV2ViS2l0TmFtZWRGbG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYktpdE5hbWVkRmxvdzo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0
aFJlcXVlc3RlZEZsb3dzSWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oOgorICAgICAgICAoSW5zcGVjdG9yQ1NTQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0lt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlTmFtZWRGbG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAgICAgICAgKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENy
ZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0ZVJlZ2lvbkxheW91dCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYy5jYWxsYmFj
ayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0TmFt
ZWRGbG93Q29sbGVjdGlvbkFzeW5jKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5bmMuY2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldEZsb3dCeU5hbWVBc3luYyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX25hbWVkRmxvd0Ny
ZWF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9u
YW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBy
b3RvdHlwZS5fcmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNb2RlbC5wcm90b3R5cGUuX3Jlc2V0TmFtZWRGbG93Q29sbGVjdGlvbnMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlLm5hbWVkRmxvd0NyZWF0ZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlLm5hbWVkRmxv
d1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBl
LnJlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvdyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5cGUuYXBwZW5kTmFtZWRGbG93
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlwZS5y
ZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rp
b24ucHJvdG90eXBlLmZsb3dCeU5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KToKKwogMjAxMi0wOS0wMiAgWW9zaGlm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtGb3Jtc10gRW1wdHkg
dmlzaWJsZSB2YWx1ZSBvZiBBTS9QTSBmaWVsZCBvZiBtdWx0aXBsZSBmaWVsZHMgdGltZSBpbnB1
dCBVSSBzaG91bGQgZGlzcGxheSB2YXJpYWJsZSBudW1iZXIgb2YgIi0iIGJhc2VkIG9uIG1heGlt
dW0gbnVtYmVyIG9mIGxhYmVscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVk
Rmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwCmluZGV4IDE1ODhmYzYuLjU1NDc1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxXZWJLaXRO
YW1lZEZsb3c+IE5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBT
dHJpbmcKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRG
bG93OjpjcmVhdGUodGhpcywgZmxvd05hbWUpOwogICAgIG1fbmFtZWRGbG93cy5hZGQobmV3Rmxv
dy5nZXQoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVk
RmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LT5uYW1lKCkpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5ld0Zsb3cuZ2V0KCkpOwog
CiAgICAgcmV0dXJuIG5ld0Zsb3cucmVsZWFzZSgpOwogfQpAQCAtOTUsOSArOTUsOSBAQCB2b2lk
IE5hbWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiBu
YW1lZEZsb3cpCiAgICAgQVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFt
ZWRGbG93OjpGbG93U3RhdGVOdWxsKTsKICAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5z
KG5hbWVkRmxvdykpOwogCi0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOworICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50
LCBuYW1lZEZsb3cpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVO
YW1lZEZsb3cobV9kb2N1bWVudCwgbmFtZWRGbG93LT5uYW1lKCkpOworICAgIG1fbmFtZWRGbG93
cy5yZW1vdmUobmFtZWRGbG93KTsKIH0KIAogdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1
bWVudERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vV2ViS2l0TmFt
ZWRGbG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3BwCmluZGV4
IDgwMDllYWUuLjFkZjVjOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXRO
YW1lZEZsb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJLaXROYW1lZEZsb3cuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93LmgiCiAKICNpbmNs
dWRlICJFdmVudE5hbWVzLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiTmFtZWRGbG93Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlck5hbWVk
Rmxvd1RocmVhZC5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgpAQCAtMTk4LDYgKzE5OSwx
MSBAQCB2b2lkIFdlYktpdE5hbWVkRmxvdzo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVu
dCgpCiAgICAgQVNTRVJUKCFldmVudERpc3BhdGNoRm9yYmlkZGVuKCkpOwogICAgIEFTU0VSVCht
X3BhcmVudEZsb3dUaHJlYWQpOwogCisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRV
cGRhdGVSZWdpb25MYXlvdXQobV9mbG93TWFuYWdlci0+ZG9jdW1lbnQoKSwgdGhpcyk7CisKKyAg
ICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0
cjxFdmVudD4gZXZlbnQgPSBVSUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdFJlZ2lv
bkxheW91dFVwZGF0ZUV2ZW50LCBmYWxzZSwgZmFsc2UsIG1fcGFyZW50Rmxvd1RocmVhZC0+ZG9j
dW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwgMCk7CiAKICAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA5NGY2MTJmLi5kZTc4
NDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24K
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDExLDE4
ICsyNDExLDYgQEAKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1bWVudC4iLAogICAg
ICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICJuYW1lIjogImdldEZsb3dCeU5hbWUiLAotICAgICAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3Vt
ZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9j
dW1lbnQgbm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlkZW50aWZpZXIu
IiB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZs
b3ciLCAiZGVzY3JpcHRpb24iOiAiQSBOYW1lZCBGbG93LiIgfQotICAgICAgICAgICAgICAgIF0s
Ci0gICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3cg
aWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gbmFtZSIsCi0gICAgICAgICAgICAgICAgImhpZGRlbiI6
IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAg
LTI0NDAsOCArMjQyOCw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUi
OiAibmFtZWRGbG93Q3JlYXRlZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJE
T00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgbmV3IE5hbWVkIEZsb3cuIiB9Cisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRG
bG93IiwgImRlc2NyaXB0aW9uIjogIlRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KICAgICAgICAgICAg
ICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFt
ZWQgRmxvdyBpcyBjcmVhdGVkLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAg
LTI0NTAsMTAgKzI0MzcsMTggQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dS
ZW1vdmVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZmxvd05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQogICAgICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4g
YSBOYW1lZCBGbG93IGlzIHJlbW92ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMg
YW5kIHJlZ2lvbnMuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZWdpb25MYXlv
dXRVcGRhdGVkIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVz
Y3JpcHRpb24iOiAiVGhlIE5hbWVkIEZsb3cgd2hvc2UgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQu
IiB9CisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cncyBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iLAorICAg
ICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAg
ICB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAK
aW5kZXggMjRjNzE5Ny4uZWRjZDM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC01MzcsMjIgKzUzNywzMyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCiAgICAgICAgIG1fZnJvbnRlbmQt
Pm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1
bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAgIGludCBu
b2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFub2Rl
SWQgfHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkK
KyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9mcm9udGVuZC0+bmFtZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkp
OworICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOworICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxv
d0NyZWF0ZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3cs
IGRvY3VtZW50Tm9kZUlkKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92
ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKLSAgICBpbnQgbm9kZUlkID0g
bV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOwotICAgIGlmICghbm9kZUlkIHx8ICFt
X25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJZCkpCisgICAgaW50
IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1l
bnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZnJvbnRlbmQtPm5hbWVkRmxvd1JlbW92ZWQobm9kZUlkLCBuYW1lLnN0cmluZygpKTsKKyAgICBt
X2Zyb250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5h
bWUoKS5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJl
Z2lvbkxheW91dChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93
KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRG
bG93c0lkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQorICAgICAgICByZXR1
cm47CisKKyAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKyAgICBtX2Zyb250ZW5kLT5yZWdp
b25MYXlvdXRVcGRhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFt
ZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCiBib29sIEluc3BlY3RvckNTU0FnZW50Ojpm
b3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBl
IHBzZXVkb1R5cGUpCkBAIC04MjgsMzIgKzgzOSwxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50
OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRv
YwogICAgICAgICByZXR1cm47CiAKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVk
LmFkZChkb2N1bWVudE5vZGVJZCk7CisKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4gPiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93
cygpOwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFt
ZWRGbG93PiA+IG5hbWVkRmxvd3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAKLQogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJL
aXROYW1lZEZsb3c+ID46Oml0ZXJhdG9yIGl0ID0gbmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBp
dCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgpOyArK2l0KQogICAgICAgICBuYW1lZEZsb3dzLT5h
ZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KGVycm9yU3RyaW5nLCBpdC0+Z2V0KCksIGRv
Y3VtZW50Tm9kZUlkKSk7CiAKICAgICByZXN1bHQgPSBuYW1lZEZsb3dzLnJlbGVhc2UoKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCkKLXsKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9j
dW1lbnROb2RlSWQpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93ID0gZG9jdW1lbnQtPm5hbWVkRmxvd3Mo
KS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0gICAgaWYgKCF3ZWJraXROYW1lZEZsb3cpIHsKLSAg
ICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHRhcmdldCBDU1MgTmFtZWQgRmxvdyBmb3VuZCI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90
ZWN0b3Iod2Via2l0TmFtZWRGbG93KTsKLSAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVk
RmxvdyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci19Ci0K
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmlu
ZyopCiB7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlID0gYWRvcHRQdHIobmV3IFNlbGVj
dG9yUHJvZmlsZSgpKTsKQEAgLTkzMyw2ICs5MjgsMTUgQEAgRWxlbWVudCogSW5zcGVjdG9yQ1NT
QWdlbnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQp
CiAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKIH0KIAoraW50IEluc3BlY3RvckNTU0FnZW50
Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCogZG9jdW1lbnQpCit7
CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1l
bnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQgfHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNS
ZXF1ZXN0ZWQuY29udGFpbnMoZG9jdW1lbnROb2RlSWQpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIHJldHVybiBkb2N1bWVudE5vZGVJZDsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Y29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiogcmVzdWx0KQog
ewogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5
bGVTaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCBmZTFhM2IxLi43
MWI4MjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aApAQCAtOTksOCArOTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJy
b3JTdHJpbmcqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlZCgpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVu
dCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZs
b3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVOYW1l
ZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIGRpZFVwZGF0ZVJl
Z2lvbkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRlZFN0eWxl
UHJvcGVydHk+ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShF
cnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBhdHRy
aWJ1dGVzKTsKQEAgLTExNiw3ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gPiYgcmVzdWx0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwgaW50IGRv
Y3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
Ok5hbWVkRmxvdz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5TmFtZShF
cnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7CiAgICAgdmlydHVh
bCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKQEAgLTE0NSw2ICsxNDUsNyBAQCBwcml2YXRl
OgogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBhc0luc3BlY3RvclN0
eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCk7CiAgICAgRWxlbWVudCogZWxlbWVudEZvcklkKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CisgICAgaW50IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0
ZWRGbG93c0lkKERvY3VtZW50Kik7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5
bGVTaGVldCosIFR5cGVCdWlsZGVyOjpBcnJheTxXZWJDb3JlOjpUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZVNoZWV0SGVhZGVyPiopOwogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogYmluZFN0
eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA0MWI3YmM4Li4xNDFjMjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcApAQCAtMjMxLDE2ICsyMzEsMjIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnUKICAgICAgICAgZG9tQWdlbnQtPndpbGxQb3BTaGFkb3dSb290KGhvc3QsIHJvb3QpOwogfQog
Ci12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZs
b3cpCiB7CiAgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRDcmVh
dGVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRl
TmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRG
bG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogICAgIGlmIChJbnNw
ZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JD
U1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50
LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPndpbGxSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQs
IG5hbWVkRmxvdyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRh
dGVSZWdpb25MYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7Cisg
ICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRVcGRhdGVSZWdpb25M
YXlvdXQoZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGMyNWQzNzIuLjIzNzM2NzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTExMyw4ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChF
bGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwotICAgIHN0YXRpYyB2b2lkIGRpZENy
ZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAg
c3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQq
LCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93
KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgZGlkVXBkYXRl
UmVnaW9uTGF5b3V0KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAKICAgICBzdGF0aWMg
dm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdlKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYs
IHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJl
c3MoUGFnZSopOwpAQCAtMjkwLDggKzI5MSw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQg
bWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVs
ZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93
Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3Qq
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0
ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFt
ZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGlj
IHZvaWQgZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9j
dW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKIAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgSGl0VGVzdFJlc3Vs
dCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNl
UHJlc3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKQEAgLTU2MSwyMSArNTYzLDMwIEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxl
bWVudCogaG9zdCwgU2hhZG93Um9vCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVk
RmxvdyogbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQotICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChpbnN0
cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKICNlbmRpZgogfQogCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1
bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9j
dW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRSZW1vdmVOYW1lZEZsb3dJbXBs
KGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgd2lsbFJlbW92
ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7
CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRV
cGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5h
bWVkRmxvdykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkK
KyAgICAgICAgZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBk
b2N1bWVudCwgbmFtZWRGbG93KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggODIwNjk1Yi4uMTcw
MTkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NT
dHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qcwpAQCAtMzksNiArMzksOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bCA9IGZ1bmN0aW9uKCkKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLlVuZG9SZWRvUmVxdWVzdGVkLCB0aGlzLl91
bmRvUmVkb1JlcXVlc3RlZCwgdGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb0NvbXBsZXRl
ZCwgdGhpcy5fdW5kb1JlZG9Db21wbGV0ZWQsIHRoaXMpOwogICAgIHRoaXMuX3Jlc291cmNlQmlu
ZGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZyh0aGlz
KTsKKyAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9ucyA9IHt9OworICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMu
RG9jdW1lbnRVcGRhdGVkLCB0aGlzLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zLCB0aGlzKTsK
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVj
dG9yLkNTU0Rpc3BhdGNoZXIodGhpcykpOwogICAgIENTU0FnZW50LmVuYWJsZSgpOwogfQpAQCAt
NTgsNyArNjAsOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMgPSB7CiAgICAg
U3R5bGVTaGVldENoYW5nZWQ6ICJTdHlsZVNoZWV0Q2hhbmdlZCIsCiAgICAgTWVkaWFRdWVyeVJl
c3VsdENoYW5nZWQ6ICJNZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCiAgICAgTmFtZWRGbG93Q3Jl
YXRlZDogIk5hbWVkRmxvd0NyZWF0ZWQiLAotICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZs
b3dSZW1vdmVkIgorICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIiwKKyAg
ICBSZWdpb25MYXlvdXRVcGRhdGVkOiAiUmVnaW9uTGF5b3V0VXBkYXRlZCIKIH0KIAogV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewpAQCAtMTcyLDEwICsxNzUsMTYgQEAg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAotICAgICAqIEBwYXJhbSB7ZnVuY3Rp
b24oP0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjaworICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oT2JqZWN0KX0gdXNlckNhbGxiYWNrCiAgICAgICovCi0gICAgZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jOiBmdW5jdGlvbihub2RlSWQsIHVzZXJDYWxsYmFjaykK
KyAgICBnZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmM6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlk
LCB1c2VyQ2FsbGJhY2spCiAgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9
IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAgaWYg
KG5hbWVkRmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZs
b3dDb2xsZWN0aW9uLm5hbWVkRmxvd01hcCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKwogICAgICAgICAvKioKICAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/QXJyYXkuPFdl
Ykluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNlckNhbGxiYWNrCiAgICAgICAgICAqIEBwYXJhbSB7
P1Byb3RvY29sLkVycm9yfSBlcnJvcgpAQCAtMTg1LDExICsxOTQsMTQgQEAgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
ZXJyb3IgfHwgIW5hbWVkRmxvd1BheWxvYWQpCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNr
KG51bGwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5KG5hbWVkRmxvd1BheWxvYWQp
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBuYW1lZEZsb3dDb2xs
ZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uKG5hbWVkRmxvd1Bh
eWxvYWQpOworICAgICAgICAgICAgICAgIHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3Vt
ZW50Tm9kZUlkXSA9IG5hbWVkRmxvd0NvbGxlY3Rpb247CisgICAgICAgICAgICAgICAgdXNlckNh
bGxiYWNrKG5hbWVkRmxvd0NvbGxlY3Rpb24ubmFtZWRGbG93TWFwKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIENTU0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24obm9k
ZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOworICAgICAgICBDU1NBZ2Vu
dC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRo
aXMsIHVzZXJDYWxsYmFjaykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTE5NywyMiArMjA5LDI3
IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZmxvd05hbWUKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0
b3IuTmFtZWRGbG93KX0gdXNlckNhbGxiYWNrCiAgICAgICovCi0gICAgZ2V0Rmxvd0J5TmFtZUFz
eW5jOiBmdW5jdGlvbihub2RlSWQsIGZsb3dOYW1lLCB1c2VyQ2FsbGJhY2spCisgICAgZ2V0Rmxv
d0J5TmFtZUFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUsIHVzZXJDYWxs
YmFjaykKICAgICB7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFt
ZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdOworICAgICAgICBpZiAobmFtZWRGbG93
Q29sbGVjdGlvbikgeworICAgICAgICAgICAgdXNlckNhbGxiYWNrKG5hbWVkRmxvd0NvbGxlY3Rp
b24uZmxvd0J5TmFtZShmbG93TmFtZSkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKICAgICAgICAgLyoqCiAgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYkluc3BlY3Rv
ci5OYW1lZEZsb3cpfSB1c2VyQ2FsbGJhY2sKLSAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wu
RXJyb3J9IGVycm9yCi0gICAgICAgICAqIEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxvdz19IG5h
bWVkRmxvd1BheWxvYWQKKyAgICAgICAgICogQHBhcmFtIHs/Q1NTQWdlbnQuTmFtZWRGbG93PX0g
bmFtZWRGbG93TWFwCiAgICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2Vy
Q2FsbGJhY2ssIGVycm9yLCBuYW1lZEZsb3dQYXlsb2FkKQorICAgICAgICBmdW5jdGlvbiBjYWxs
YmFjayh1c2VyQ2FsbGJhY2ssIG5hbWVkRmxvd01hcCkKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2FkKQorICAgICAgICAgICAgaWYgKGVycm9yIHx8
ICFuYW1lZEZsb3dNYXApCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwogICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkKSk7CisgICAgICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlk
XS5mbG93QnlOYW1lKGZsb3dOYW1lKSk7CiAgICAgICAgIH0KIAotICAgICAgICBDU1NBZ2VudC5n
ZXRGbG93QnlOYW1lKG5vZGVJZCwgZmxvd05hbWUsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNh
bGxiYWNrKSk7CisgICAgICAgIHRoaXMuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3Vt
ZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTM1MCw1MSArMzY3LDQ4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtET01BZ2Vu
dC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAg
ICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAogICAgICAq
LwotICAgIF9uYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkK
KyAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKICAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLyoqCi0gICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9
IHJvb3QKLSAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2socm9vdCkKLSAgICAg
ICAgewotICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQgd2Ugb25seSB3YW50IHN1
cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQKLSAgICAgICAgICAgIGlm
IChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIHZhciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9h
ZChuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0
aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tuYW1lZEZsb3cuZG9jdW1lbnROb2RlSWRdOwogCi0g
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9j
dW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFuYW1l
ZEZsb3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAg
ICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRGbG93KG5hbWVkRmxvdyk7CisgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBuYW1lZEZsb3cpOwogICAgIH0sCiAKICAgICAv
KioKICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQog
ICAgICAqLwotICAgIF9uYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwg
bmFtZSkKKyAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZs
b3dOYW1lKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkKSkKKyAgICAgICAg
dmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1
bWVudE5vZGVJZF07CisKKyAgICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8qKgotICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkRPTURvY3VtZW50fSByb290Ci0gICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxi
YWNrKHJvb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50
IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50
Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICBuYW1lZEZsb3dDb2xsZWN0aW9uLnJlbW92ZU5hbWVkRmxv
dyhmbG93TmFtZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50
Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgZmxvd05hbWU6IGZsb3dOYW1lIH0pOworICAgIH0sCiAK
LSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBk
b2N1bWVudE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKLSAgICAgICAgfQorICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICovCisg
ICAgX3JlZ2lvbkxheW91dFVwZGF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCisgICAg
eworICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBh
eWxvYWQobmFtZWRGbG93UGF5bG9hZCk7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9u
ID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsK
KworICAgICAgICBpZiAoIW5hbWVkRmxvd0NvbGxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChjYWxsYmFj
ay5iaW5kKHRoaXMpKTsKKyAgICAgICAgbmFtZWRGbG93Q29sbGVjdGlvbi5hcHBlbmROYW1lZEZs
b3cobmFtZWRGbG93KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVwZGF0ZWQsIG5hbWVk
Rmxvdyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDYzLDYgKzQ3NywxMSBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcHBp
bmdzID0ge307CiAgICAgfSwKIAorICAgIF9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9ucyA9IHt9Owor
ICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5DU1NMb2NhdGlv
bn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259
CkBAIC0xMzI2LDIxICsxMzQ1LDI4IEBAIFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3Rv
dHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2Rl
SWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBA
cGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAogICAgICAqLwotICAg
IG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIG5h
bWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewotICAgICAg
ICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChkb2N1bWVudE5vZGVJZCwgbmFtZSk7
CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxvd1BheWxv
YWQpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0g
ZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBmbG93TmFtZQogICAgICAqLwotICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0
aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9u
KGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX2Nzc01vZGVs
Ll9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKKyAgICAgICAgdGhpcy5f
Y3NzTW9kZWwuX25hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVk
Rmxvd1BheWxvYWQKKyAgICAgKi8KKyAgICByZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihu
YW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdGhpcy5fY3NzTW9kZWwuX3JlZ2lvbkxh
eW91dFVwZGF0ZWQobmFtZWRGbG93UGF5bG9hZCk7CiAgICAgfQogfQogCkBAIC0xMzUwLDcgKzEz
NzYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgKi8KIFdl
Ykluc3BlY3Rvci5OYW1lZEZsb3cgPSBmdW5jdGlvbihwYXlsb2FkKQogewotICAgIHRoaXMubm9k
ZUlkID0gcGF5bG9hZC5kb2N1bWVudE5vZGVJZDsKKyAgICB0aGlzLmRvY3VtZW50Tm9kZUlkID0g
cGF5bG9hZC5kb2N1bWVudE5vZGVJZDsKICAgICB0aGlzLm5hbWUgPSBwYXlsb2FkLm5hbWU7CiAg
ICAgdGhpcy5vdmVyc2V0ID0gcGF5bG9hZC5vdmVyc2V0OwogICAgIHRoaXMuY29udGVudCA9IHBh
eWxvYWQuY29udGVudDsKQEAgLTEzNjcsMjAgKzEzOTMsNDkgQEAgV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdy5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogfQogCiAvKioKLSAqIEBwYXJh
bSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRGbG93UGF5bG9hZAotICogQHJl
dHVybiB7P0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pn0KKyAqIEBjb25zdHJ1Y3Rvcgor
ICogQHBhcmFtIHs/QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz49fSBwYXlsb2FkCiAgKi8KLVdl
Ykluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkQXJyYXkgPSBmdW5jdGlvbihuYW1lZEZs
b3dQYXlsb2FkKQorV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24gPSBmdW5jdGlvbihw
YXlsb2FkKQogewotICAgIGlmICghbmFtZWRGbG93UGF5bG9hZCkKLSAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgdGhpcy5uYW1lZEZsb3dNYXAgPSB7fTsKIAotICAgIHZhciBwYXJzZWRBcnJheSA9
IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZWRGbG93UGF5bG9hZC5sZW5ndGg7ICsr
aSkKLSAgICAgICAgcGFyc2VkQXJyYXlbaV0gPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNl
UGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkW2ldKTsKLSAgICByZXR1cm4gcGFyc2VkQXJyYXk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXlsb2FkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZh
ciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChwYXlsb2Fk
W2ldKTsKKyAgICAgICAgdGhpcy5uYW1lZEZsb3dNYXBbbmFtZWRGbG93Lm5hbWVdID0gbmFtZWRG
bG93OworICAgIH0KIH0KIAorV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90
eXBlID0geworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30g
bmFtZWRGbG93CisgICAgICovCisgICAgYXBwZW5kTmFtZWRGbG93OiBmdW5jdGlvbihuYW1lZEZs
b3cpCisgICAgeworICAgICAgICB0aGlzLm5hbWVkRmxvd01hcFtuYW1lZEZsb3cubmFtZV0gPSBu
YW1lZEZsb3c7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93
TmFtZQorICAgICAqLworICAgIHJlbW92ZU5hbWVkRmxvdzogZnVuY3Rpb24oZmxvd05hbWUpCisg
ICAgeworICAgICAgICBkZWxldGUgdGhpcy5uYW1lZEZsb3dNYXBbZmxvd05hbWVdOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKKyAgICAgKiBAcmV0
dXJuIHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fQorICAgICAqLworICAgIGZsb3dCeU5hbWU6IGZ1
bmN0aW9uKGZsb3dOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvdyA9IHRoaXMubmFt
ZWRGbG93TWFwW2Zsb3dOYW1lXTsKKworICAgICAgICBpZiAobmFtZWRGbG93ID09PSB1bmRlZmlu
ZWQpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuIG5hbWVkRmxvdzsK
KyAgICB9Cit9CiAvKioKICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbH0KICAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcAppbmRleCA3YjExZGZmLi4yZWQ3Nzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtMzM3LDcgKzMzNyw3IEBAIHZv
aWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
KCkKIHsKICAgICBSZW5kZXJGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2
ZW50KCk7CiAKLSAgICBpZiAoIW1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5pc0FjdGl2
ZSgpICYmIG1fbmFtZWRGbG93LT5oYXNFdmVudExpc3RlbmVycygpKQorICAgIGlmICghbV9yZWdp
b25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fcmVnaW9uTGF5
b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161931</attachid>
            <date>2012-09-03 08:16:57 -0700</date>
            <delta_ts>2012-09-04 06:32:17 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93443-20120903181639.patch</filename>
            <type>text/plain</type>
            <size>40064</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2IzMzViYjhiN2MxNGQx
M2Y4NGFkNWQzYTUwNmUzNzBkZjhhZjA4Ny4uODkyMjdjMzc5MWI5Njg5OTU4YmYyMjBkZTVlNTA4
ZTIxNzA2N2VlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA5LTAzICBBbmRy
ZWkgUG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFByb3RvY29sIEV4dGVuc2lvbjogQWRkICJyZWdpb25MYXlvdXRVcGRhdGUiIGV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCisKKyAgICAgICAgQWRkZWQgInJlZ2lvbkxh
eW91dFVwZGF0ZSIgZXZlbnQgdG8gdGhlIHByb3RvY29sLgorCisgICAgICAgIFJlbW92ZWQgImdl
dEZsb3dCeU5hbWUiIGZyb20gcHJvdG9jb2wuCisKKyAgICAgICAgVGhlIGZyb250LWVuZCBrZWVw
cyBpbiBzeW5jIHRoZSByZXF1ZXN0ZWQgTmFtZWQgRmxvdyBDb2xsZWN0aW9ucy4KKworICAgICAg
ICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dX
aXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJk
TmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9u
TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZs
b3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpkb2N1
bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
TmFtZWRGbG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVn
aW9uTGF5b3V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFz
eW5jLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldEZsb3dCeU5hbWVBc3luYy5jYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFt
ZUFzeW5jKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUuX25hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlLl9yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9u
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUubmFtZWRG
bG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5
cGUubmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hl
ci5wcm90b3R5cGUucmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlwZS5hcHBl
bmROYW1lZEZsb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24u
cHJvdG90eXBlLnJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRG
bG93Q29sbGVjdGlvbi5wcm90b3R5cGUuZmxvd0J5TmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpOgorCiAyMDEyLTA5
LTAyICBZb3NoaWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Zv
cm1zXSBFbXB0eSB2aXNpYmxlIHZhbHVlIG9mIEFNL1BNIGZpZWxkIG9mIG11bHRpcGxlIGZpZWxk
cyB0aW1lIGlucHV0IFVJIHNob3VsZCBkaXNwbGF5IHZhcmlhYmxlIG51bWJlciBvZiAiLSIgYmFz
ZWQgb24gbWF4aW11bSBudW1iZXIgb2YgbGFiZWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAKaW5kZXggMTU4OGZjNmMwMzc3NDczOWViNThiZmUxMTY3ZTAxOTI5
OTAxYWUyMS4uNTU0NzUwNjI2ZDAzZDcxYTdiNWQyMTk0NjVkOWQ4ODRmOGIwNmMxMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtODEsNyArODEsNyBA
QCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gTmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJl
Rmxvd1dpdGhOYW1lKGNvbnN0IFN0cmluZwogICAgIFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5l
d0Zsb3cgPSBXZWJLaXROYW1lZEZsb3c6OmNyZWF0ZSh0aGlzLCBmbG93TmFtZSk7CiAgICAgbV9u
YW1lZEZsb3dzLmFkZChuZXdGbG93LmdldCgpKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5ld0Zsb3ctPm5hbWUoKSk7Cisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cobV9kb2N1bWVu
dCwgbmV3Rmxvdy5nZXQoKSk7CiAKICAgICByZXR1cm4gbmV3Rmxvdy5yZWxlYXNlKCk7CiB9CkBA
IC05NSw5ICs5NSw5IEBAIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxv
dyhXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKICAgICBBU1NFUlQobmFtZWRGbG93LT5mbG93
U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpOwogICAgIEFTU0VSVCht
X25hbWVkRmxvd3MuY29udGFpbnMobmFtZWRGbG93KSk7CiAKLSAgICBtX25hbWVkRmxvd3MucmVt
b3ZlKG5hbWVkRmxvdyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3Zl
TmFtZWRGbG93KG1fZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1lZEZsb3ctPm5hbWUo
KSk7CisgICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOwogfQogCiB2b2lkIE5hbWVk
Rmxvd0NvbGxlY3Rpb246OmRvY3VtZW50RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCA5NGY2MTJmMDA0Njg5MGU3MWEyNTdiM2E1MzljYTAyZGFm
YTIwMjlkLi5kZTc4NDYwZTRmYmQ4Zjg1MGZjYzE2YzY3NGE1MmY4OTVlOTcwNmRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDExLDE4ICsyNDExLDYgQEAK
ICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1
cm5zIHRoZSBOYW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1bWVudC4iLAogICAgICAgICAgICAgICAg
ICJoaWRkZW4iOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICJuYW1lIjogImdldEZsb3dCeU5hbWUiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwg
IiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBp
ZC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0
cmluZyIsICJkZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlkZW50aWZpZXIuIiB9Ci0gICAgICAg
ICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3Jp
cHRpb24iOiAiQSBOYW1lZCBGbG93LiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3cgaWRlbnRpZmllZCBi
eSB0aGUgZ2l2ZW4gbmFtZSIsCi0gICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAg
ICAgICAgIH0KICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTI0NDAsOCArMjQy
OCw3IEBACiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93
Q3JlYXRlZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwg
ImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBvZiB0aGUgbmV3IE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRlc2Ny
aXB0aW9uIjogIlRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBpcyBj
cmVhdGVkLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAgLTI0NTAsMTAgKzI0
MzcsMTggQEAKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dSZW1vdmVkIiwKICAg
ICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24i
OiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlm
aWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZmxvd05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRl
bnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93
IGlzIHJlbW92ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJlZ2lvbnMu
IiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZWdpb25MYXlvdXRVcGRhdGVkIiwK
KyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3JpcHRpb24iOiAi
VGhlIE5hbWVkIEZsb3cgd2hvc2UgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQuIiB9CisgICAgICAg
ICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBh
IE5hbWVkIEZsb3cncyBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iLAorICAgICAgICAgICAgICAg
ICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMjRjNzE5
N2I2ZWViNjBiMzE3NjM3MGQ1NTM0ZWY0NmQxM2I0ZWJkZi4uZWRjZDM5NzM0YTYwNzcyNDZhOWVk
OTkyY2FmNTc4ZGRiNDNhNmIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCkBAIC01MzcsMjIgKzUzNywzMyBAQCB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpCiAgICAgICAgIG1fZnJvbnRlbmQtPm1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAgIGludCBub2Rl
SWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFub2RlSWQg
fHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKKyAg
ICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChk
b2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgbV9mcm9udGVuZC0+bmFtZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOwor
ICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOworICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd0Ny
ZWF0ZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRv
Y3VtZW50Tm9kZUlkKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZU5h
bWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3Zv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKLSAgICBpbnQgbm9kZUlkID0gbV9k
b21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOwotICAgIGlmICghbm9kZUlkIHx8ICFtX25h
bWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJZCkpCisgICAgaW50IGRv
Y3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQp
OworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJv
bnRlbmQtPm5hbWVkRmxvd1JlbW92ZWQobm9kZUlkLCBuYW1lLnN0cmluZygpKTsKKyAgICBtX2Zy
b250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUo
KS5zdHJpbmcoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lv
bkxheW91dChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQor
eworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93
c0lkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQorICAgICAgICByZXR1cm47
CisKKyAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKyAgICBtX2Zyb250ZW5kLT5yZWdpb25M
YXlvdXRVcGRhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRG
bG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCiBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3Jj
ZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBz
ZXVkb1R5cGUpCkBAIC04MjgsMzIgKzgzOSwxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpn
ZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvYwog
ICAgICAgICByZXR1cm47CiAKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFk
ZChkb2N1bWVudE5vZGVJZCk7CisKICAgICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4g
PiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygp
OwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRG
bG93PiA+IG5hbWVkRmxvd3MgPSBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAKLQogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXRO
YW1lZEZsb3c+ID46Oml0ZXJhdG9yIGl0ID0gbmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAh
PSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgpOyArK2l0KQogICAgICAgICBuYW1lZEZsb3dzLT5hZGRJ
dGVtKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KGVycm9yU3RyaW5nLCBpdC0+Z2V0KCksIGRvY3Vt
ZW50Tm9kZUlkKSk7CiAKICAgICByZXN1bHQgPSBuYW1lZEZsb3dzLnJlbGVhc2UoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCkKLXsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1l
bnROb2RlSWQpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdl
YktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93ID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+
Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0gICAgaWYgKCF3ZWJraXROYW1lZEZsb3cpIHsKLSAgICAg
ICAgKmVycm9yU3RyaW5nID0gIk5vIHRhcmdldCBDU1MgTmFtZWQgRmxvdyBmb3VuZCI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0
b3Iod2Via2l0TmFtZWRGbG93KTsKLSAgICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxv
dyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci19Ci0KIHZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyop
CiB7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlID0gYWRvcHRQdHIobmV3IFNlbGVjdG9y
UHJvZmlsZSgpKTsKQEAgLTkzMyw2ICs5MjgsMTUgQEAgRWxlbWVudCogSW5zcGVjdG9yQ1NTQWdl
bnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAg
ICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKIH0KIAoraW50IEluc3BlY3RvckNTU0FnZW50Ojpk
b2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCogZG9jdW1lbnQpCit7Cisg
ICAgaW50IGRvY3VtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQp
OworICAgIGlmICghZG9jdW1lbnROb2RlSWQgfHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1
ZXN0ZWQuY29udGFpbnMoZG9jdW1lbnROb2RlSWQpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IHJldHVybiBkb2N1bWVudE5vZGVJZDsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y29s
bGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiogcmVzdWx0KQogewog
ICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5bGVT
aGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oc3R5bGVTaGVldCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAppbmRleCBmZTFhM2IxMDk0MDI2
N2Q1YzY2ZjcxYWViMzIxOTc0MDM2NDZhMmIxLi43MWI4MjdiMjA4NzhlYjkxY2E1MmJjN2ZkNmI2
NzZhZDJjMWQwYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaApAQCAtOTksOCArOTksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5
UmVzdWx0Q2hhbmdlZCgpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgdm9pZCBkaWRDcmVhdGVO
YW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIHdpbGxSZW1v
dmVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIGRpZFVw
ZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgdmly
dHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NDb21wdXRl
ZFN0eWxlUHJvcGVydHk+ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9y
Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
JiBhdHRyaWJ1dGVzKTsKQEAgLTExNiw3ICsxMTcsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4gPiYgcmVzdWx0
KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBzZXVkb0NsYXNzZXMp
OwogICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3RyaW5nKiwg
aW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0Rmxvd0J5
TmFtZShFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3QgU3RyaW5nJiBmbG93
TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJlc3VsdCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKik7CiAgICAg
dmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKQEAgLTE0NSw2ICsxNDUsNyBAQCBw
cml2YXRlOgogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlKiBhc0luc3Bl
Y3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCk7CiAgICAgRWxlbWVudCogZWxlbWVudEZv
cklkKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CisgICAgaW50IGRvY3VtZW50Tm9kZVdpdGhS
ZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50Kik7CiAgICAgdm9pZCBjb2xsZWN0U3R5bGVTaGVldHMo
Q1NTU3R5bGVTaGVldCosIFR5cGVCdWlsZGVyOjpBcnJheTxXZWJDb3JlOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOwogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCog
YmluZFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCA0MWI3YmM4MWFk
ZWRhMGFlODgxZWJlOTZlZWY3ZDA3ZTYzZDE0OWFkLi4xNDFjMjlhMDVmZWEyZWRjMTBhMzc3YzFh
OGE3YWQ1YjdmZTE0ZTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMjMxLDE2ICsyMzEsMjIgQEAgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnUKICAgICAgICAgZG9tQWdlbnQtPndpbGxQb3BTaGFkb3dSb290KGhv
c3QsIHJvb3QpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
TmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFt
ZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNz
c0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBjc3NB
Z2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpOwogfQogCi12b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQog
ewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkUmVtb3ZlTmFt
ZWRGbG93KGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPndpbGxSZW1vdmVOYW1l
ZEZsb3coZG9jdW1lbnQsIG5hbWVkRmxvdyk7Cit9CisKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBu
YW1lZEZsb3cpCit7CisgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCisgICAgICAgIGNzc0FnZW50LT5k
aWRVcGRhdGVSZWdpb25MYXlvdXQoZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgSGl0VGVzdFJlc3VsdCYg
cmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IGMyNWQzNzIyYjlhYTcy
YWExZDY3NWE2YTU4NjAzZDZlM2Y2YzM4ZjQuLjIzNzM2NzNiMzExNDNhNDUzMWI2MjAxYmU2MDJk
MWZlOTE4NzdkMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTExMyw4ICsxMTMsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAg
c3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCop
OwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERv
Y3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICBzdGF0aWMg
dm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiwgV2ViS2l0TmFt
ZWRGbG93Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdl
KiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0
YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjkwLDggKzI5MSw5IEBAIHBy
aXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVs
ZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1l
ZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJl
bW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0
TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKIAogICAg
IHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAg
IHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsK
QEAgLTU2MSwyMSArNTYzLDMwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vCiAjZW5kaWYKIH0K
IAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZs
b3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJ
TlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAg
aWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBkaWRDcmVhdGVOYW1lZEZs
b3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgZGlk
Q3JlYXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRG
bG93KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92
ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93
KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAg
ICBkaWRSZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBu
YW1lKTsKKyAgICAgICAgd2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CisjZW5kaWYKK30KKworaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9S
KQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1w
bChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKICNlbmRpZgogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxl
TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMKaW5kZXggODIwNjk1YmY4ZDZjMzg1MzBlOTEwNTA2MTUyODVmYTg0MzhmODNlNS4uMTcw
MTkzMGY5OTJhYTEwMDcxNjUxMjExYzEyNmI0ZDUwZTIwZGZiMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtMzksNiAr
MzksOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCA9IGZ1bmN0aW9uKCkKICAgICBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQu
RXZlbnRzLlVuZG9SZWRvUmVxdWVzdGVkLCB0aGlzLl91bmRvUmVkb1JlcXVlc3RlZCwgdGhpcyk7
CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb0NvbXBsZXRlZCwgdGhpcy5fdW5kb1JlZG9Db21wbGV0
ZWQsIHRoaXMpOwogICAgIHRoaXMuX3Jlc291cmNlQmluZGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZyh0aGlzKTsKKyAgICB0aGlzLl9uYW1lZEZsb3dD
b2xsZWN0aW9ucyA9IHt9OworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuRG9jdW1lbnRVcGRhdGVkLCB0aGlzLl9y
ZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zLCB0aGlzKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJl
Z2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIodGhpcykp
OwogICAgIENTU0FnZW50LmVuYWJsZSgpOwogfQpAQCAtNTgsNyArNjAsOCBAQCBXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMgPSB7CiAgICAgU3R5bGVTaGVldENoYW5nZWQ6ICJTdHls
ZVNoZWV0Q2hhbmdlZCIsCiAgICAgTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6ICJNZWRpYVF1ZXJ5
UmVzdWx0Q2hhbmdlZCIsCiAgICAgTmFtZWRGbG93Q3JlYXRlZDogIk5hbWVkRmxvd0NyZWF0ZWQi
LAotICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIgorICAgIE5hbWVkRmxv
d1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIiwKKyAgICBSZWdpb25MYXlvdXRVcGRhdGVkOiAi
UmVnaW9uTGF5b3V0VXBkYXRlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJv
dG90eXBlID0gewpAQCAtMTcyLDEwICsxNzUsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwucHJvdG90eXBlID0gewogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2Rl
SWR9IG5vZGVJZAotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjaworICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oT2JqZWN0
KX0gdXNlckNhbGxiYWNrCiAgICAgICovCi0gICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5j
OiBmdW5jdGlvbihub2RlSWQsIHVzZXJDYWxsYmFjaykKKyAgICBnZXROYW1lZEZsb3dDb2xsZWN0
aW9uQXN5bmM6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCB1c2VyQ2FsbGJhY2spCiAgICAgewor
ICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rp
b25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0NvbGxlY3Rpb24pIHsK
KyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLm5hbWVkRmxvd01h
cCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAvKioKICAgICAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbig/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0g
dXNlckNhbGxiYWNrCiAgICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgpA
QCAtMTg1LDExICsxOTQsMTQgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBl
ID0gewogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW5hbWVkRmxvd1BheWxv
YWQpCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBh
cnNlUGF5bG9hZEFycmF5KG5hbWVkRmxvd1BheWxvYWQpKTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rv
ci5OYW1lZEZsb3dDb2xsZWN0aW9uKG5hbWVkRmxvd1BheWxvYWQpOworICAgICAgICAgICAgICAg
IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXSA9IG5hbWVkRmxvd0Nv
bGxlY3Rpb247CisgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG5hbWVkRmxvd0NvbGxlY3Rp
b24ubmFtZWRGbG93TWFwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIENT
U0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24obm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMs
IHVzZXJDYWxsYmFjaykpOworICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9u
KGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOwogICAg
IH0sCiAKICAgICAvKioKQEAgLTE5NywyMiArMjA5LDI3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxi
YWNrCiAgICAgICovCi0gICAgZ2V0Rmxvd0J5TmFtZUFzeW5jOiBmdW5jdGlvbihub2RlSWQsIGZs
b3dOYW1lLCB1c2VyQ2FsbGJhY2spCisgICAgZ2V0Rmxvd0J5TmFtZUFzeW5jOiBmdW5jdGlvbihk
b2N1bWVudE5vZGVJZCwgZmxvd05hbWUsIHVzZXJDYWxsYmFjaykKICAgICB7CisgICAgICAgIHZh
ciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1l
bnROb2RlSWRdOworICAgICAgICBpZiAobmFtZWRGbG93Q29sbGVjdGlvbikgeworICAgICAgICAg
ICAgdXNlckNhbGxiYWNrKG5hbWVkRmxvd0NvbGxlY3Rpb24uZmxvd0J5TmFtZShmbG93TmFtZSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgLyoqCiAgICAgICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYkluc3BlY3Rvci5OYW1lZEZsb3cpfSB1c2VyQ2FsbGJh
Y2sKLSAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAq
IEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxvdz19IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgICAg
ICogQHBhcmFtIHs/Q1NTQWdlbnQuTmFtZWRGbG93PX0gbmFtZWRGbG93TWFwCiAgICAgICAgICAq
LwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIGVycm9yLCBuYW1lZEZs
b3dQYXlsb2FkKQorICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIG5hbWVk
Rmxvd01hcCkKICAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQ
YXlsb2FkKQorICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dNYXApCiAgICAgICAg
ICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChu
YW1lZEZsb3dQYXlsb2FkKSk7CisgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHRoaXMuX25h
bWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXS5mbG93QnlOYW1lKGZsb3dOYW1lKSk7
CiAgICAgICAgIH0KIAotICAgICAgICBDU1NBZ2VudC5nZXRGbG93QnlOYW1lKG5vZGVJZCwgZmxv
d05hbWUsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMu
Z2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5k
KHRoaXMsIHVzZXJDYWxsYmFjaykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTM1MCw1MSArMzY3
LDQ4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAog
CiAgICAgLyoqCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlk
Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5h
bWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAogICAgICAqLwotICAgIF9uYW1lZEZsb3dDcmVhdGVk
OiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBfbmFtZWRGbG93Q3JlYXRlZDog
ZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNF
dmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93
Q3JlYXRlZCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NRG9jdW1lbnR9IHJvb3QKLSAgICAgICAgKi8KLSAgICAg
ICAgZnVuY3Rpb24gY2FsbGJhY2socm9vdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRklY
TUU6IEF0IHRoZSBtb21lbnQgd2Ugb25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4g
dGhlIG1haW4gZG9jdW1lbnQKLSAgICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9v
dC5pZCkKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSBX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkKTsKKyAg
ICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9u
c1tuYW1lZEZsb3cuZG9jdW1lbnROb2RlSWRdOwogCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRG
bG93Q3JlYXRlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5hbWUg
fSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9j
dW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24u
YXBwZW5kTmFtZWRGbG93KG5hbWVkRmxvdyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVh
dGVkLCBuYW1lZEZsb3cpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0RPTUFn
ZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQogICAgICAqLwotICAgIF9uYW1lZEZsb3dS
ZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBfbmFtZWRGbG93UmVt
b3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2
ZW50cy5OYW1lZEZsb3dSZW1vdmVkKSkKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24g
PSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF07CisKKyAgICAgICAg
aWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IC8qKgotICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSByb290Ci0g
ICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZv
ciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAoZG9jdW1l
bnROb2RlSWQgIT09IHJvb3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBu
YW1lZEZsb3dDb2xsZWN0aW9uLnJlbW92ZU5hbWVkRmxvdyhmbG93TmFtZSk7CisgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2
ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwg
Zmxvd05hbWU6IGZsb3dOYW1lIH0pOworICAgIH0sCiAKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1l
ZEZsb3dSZW1vdmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogbmFt
ZSB9KTsKLSAgICAgICAgfQorICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRG
bG93fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICovCisgICAgX3JlZ2lvbkxheW91dFVwZGF0ZWQ6
IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCisgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93
ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCk7
CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVj
dGlvbnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsKKworICAgICAgICBpZiAoIW5hbWVkRmxv
d0NvbGxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAg
bmFtZWRGbG93Q29sbGVjdGlvbi5hcHBlbmROYW1lZEZsb3cobmFtZWRGbG93KTsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
RXZlbnRzLlJlZ2lvbkxheW91dFVwZGF0ZWQsIG5hbWVkRmxvdyk7CiAgICAgfSwKIAogICAgIC8q
KgpAQCAtNDYzLDYgKzQ3NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcHBpbmdzID0ge307CiAgICAgfSwKIAorICAg
IF9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0
aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9ucyA9IHt9OworICAgIH0sCisKICAgICAvKioKICAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5DU1NMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBA
cmV0dXJuIHs/V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259CkBAIC0xMzI2LDIxICsxMzQ1LDI4IEBA
IFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAg
LyoqCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxv
d30gbmFtZWRGbG93UGF5bG9hZAogICAgICAqLwotICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0
aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9u
KG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRG
bG93Q3JlYXRlZChkb2N1bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01vZGVs
Ll9uYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0sCiAKICAgICAvKioK
ICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQogICAg
ICAqLwotICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1l
KQorICAgIG5hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFt
ZSkKICAgICB7Ci0gICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3Vt
ZW50Tm9kZUlkLCBuYW1lKTsKKyAgICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd1JlbW92
ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgKi8KKyAg
ICByZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsK
KyAgICAgICAgdGhpcy5fY3NzTW9kZWwuX3JlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRGbG93UGF5
bG9hZCk7CiAgICAgfQogfQogCkBAIC0xMzUwLDcgKzEzNzYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NT
RGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cgPSBm
dW5jdGlvbihwYXlsb2FkKQogewotICAgIHRoaXMubm9kZUlkID0gcGF5bG9hZC5kb2N1bWVudE5v
ZGVJZDsKKyAgICB0aGlzLmRvY3VtZW50Tm9kZUlkID0gcGF5bG9hZC5kb2N1bWVudE5vZGVJZDsK
ICAgICB0aGlzLm5hbWUgPSBwYXlsb2FkLm5hbWU7CiAgICAgdGhpcy5vdmVyc2V0ID0gcGF5bG9h
ZC5vdmVyc2V0OwogICAgIHRoaXMuY29udGVudCA9IHBheWxvYWQuY29udGVudDsKQEAgLTEzNjcs
MjAgKzEzOTMsNDkgQEAgV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQgPSBmdW5j
dGlvbihwYXlsb2FkKQogfQogCiAvKioKLSAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1l
ZEZsb3c+PX0gbmFtZWRGbG93UGF5bG9hZAotICogQHJldHVybiB7P0FycmF5LjxXZWJJbnNwZWN0
b3IuTmFtZWRGbG93Pn0KKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHs/QXJyYXkuPENTU0Fn
ZW50Lk5hbWVkRmxvdz49fSBwYXlsb2FkCiAgKi8KLVdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFy
c2VQYXlsb2FkQXJyYXkgPSBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorV2ViSW5zcGVjdG9y
Lk5hbWVkRmxvd0NvbGxlY3Rpb24gPSBmdW5jdGlvbihwYXlsb2FkKQogewotICAgIGlmICghbmFt
ZWRGbG93UGF5bG9hZCkKLSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgdGhpcy5uYW1lZEZsb3dN
YXAgPSB7fTsKIAotICAgIHZhciBwYXJzZWRBcnJheSA9IFtdOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbmFtZWRGbG93UGF5bG9hZC5sZW5ndGg7ICsraSkKLSAgICAgICAgcGFyc2VkQXJyYXlb
aV0gPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2Fk
W2ldKTsKLSAgICByZXR1cm4gcGFyc2VkQXJyYXk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
YXlsb2FkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0
b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChwYXlsb2FkW2ldKTsKKyAgICAgICAgdGhpcy5uYW1l
ZEZsb3dNYXBbbmFtZWRGbG93Lm5hbWVdID0gbmFtZWRGbG93OworICAgIH0KIH0KIAorV2ViSW5z
cGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlID0geworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30gbmFtZWRGbG93CisgICAgICovCisgICAg
YXBwZW5kTmFtZWRGbG93OiBmdW5jdGlvbihuYW1lZEZsb3cpCisgICAgeworICAgICAgICB0aGlz
Lm5hbWVkRmxvd01hcFtuYW1lZEZsb3cubmFtZV0gPSBuYW1lZEZsb3c7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQorICAgICAqLworICAgIHJlbW92
ZU5hbWVkRmxvdzogZnVuY3Rpb24oZmxvd05hbWUpCisgICAgeworICAgICAgICBkZWxldGUgdGhp
cy5uYW1lZEZsb3dNYXBbZmxvd05hbWVdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZmxvd05hbWUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuTmFtZWRG
bG93fQorICAgICAqLworICAgIGZsb3dCeU5hbWU6IGZ1bmN0aW9uKGZsb3dOYW1lKQorICAgIHsK
KyAgICAgICAgdmFyIG5hbWVkRmxvdyA9IHRoaXMubmFtZWRGbG93TWFwW2Zsb3dOYW1lXTsKKwor
ICAgICAgICBpZiAobmFtZWRGbG93ID09PSB1bmRlZmluZWQpCisgICAgICAgICAgICByZXR1cm4g
bnVsbDsKKyAgICAgICAgcmV0dXJuIG5hbWVkRmxvdzsKKyAgICB9Cit9CiAvKioKICAqIEB0eXBl
IHtXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbH0KICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAppbmRleCA3YjExZGZmNDNhMGYy
YzIwZDQ0NTdlOTA3YmI5YjQzNzczZmUyNzE2Li4xNzRkNDc2ZTU0OGM4MTM1MWM3NTAyZThmNGI3
MzEwOGMwYWJhNjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIlJlbmRlck5h
bWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVkZSAiRmxvd1RocmVhZENvbnRyb2xsZXIuaCIKKyNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJSZWdp
b24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiV2ViS2l0TmFtZWRGbG93
LmgiCkBAIC0zMzYsNiArMzM3LDcgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OmZsb3dUaHJlYWROYW1lKCkgY29uc3QKIHZvaWQgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KCkKIHsKICAgICBSZW5kZXJGbG93
VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KCk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQoZG9jdW1lbnQoKSwgbV9uYW1l
ZEZsb3cuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIu
aXNBY3RpdmUoKSAmJiBtX25hbWVkRmxvdy0+aGFzRXZlbnRMaXN0ZW5lcnMoKSkKICAgICAgICAg
bV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBl
OGNjZTA2ZTc5NTI5ZDdjOWNmMzA4NjhjMDdmNGMwMDNlZWUwZmY3Li5mOWE3OTkxYWQ0Mjc0NTMw
YTRmNDM2NjJjNDdlNWQ2Yzg5MTZhODAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MDMgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KKworICAgICAgICBWYWxpZGF0
ZSAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudC4KKworICAgICAgICAqIGluc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbDoKKwog
MjAxMi0wOS0wMiAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIHRlc3QgZXhwZWN0YXRpb24gdXBkYXRlIGFmdGVy
IHIxMjczOTgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9j
b2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKaW5k
ZXggN2M4MmI0OGU3NTMxMTQ2YjZiMmEwYTg4M2ZhZmQ5OTc3M2IyMjBlOC4uOWZlOWNmMzY3MjJm
NjNiZWZiYzVjY2NkZjFiMDE1OWExYTk5ZGQ5MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1j
b21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0
aW9uIEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQg
QnVnIDkyNzM5CiBuYW1lZEZsb3dSZW1vdmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRl
ZCBCdWcgOTM0NDMKK1RoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAK
IAotUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0
TmFtZWRGbG93Q29sbGVjdGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50
ID09PQogKiBOYW1lZCBGbG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIz
ICsyMCwyNiBAQCBSZWdpb25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAK
LVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5h
bWVkRmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dz
IGluICNmYWtlLWRvY3VtZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQK
IAotUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFt
ZQogPT09IE5hbWVkIEZsb3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVk
IEZsb3cgImZsb3cyIgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5n
OiB0ZXN0R2V0Rmxvd0J5TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFs
aWROYW1lCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhl
cmUgaXMgbm8gTmFtZWQgRmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5p
bmc6IHRlc3ROYW1lZEZsb3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93
IgogCitSdW5uaW5nOiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRl
ZDogImZsb3czIgorCiBSdW5uaW5nOiB0ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVt
b3ZlZDogInRtcE5hbWVkRmxvdyIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4
IGQ4MzRjMmE3ZmNmZWQ5MmVhZDgxZjRmMDZmNGQ4NWNkODBmOTFiNTQuLjQwZWY2OTFmYWRhNGI5
YWUxMjkwNGE4NWFkODA2Mjc0ZWQzM2I2NzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0
bWwKQEAgLTIxLDI0ICsyMSwzMiBAQCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljRWxlbWVudHMoKQog
ZnVuY3Rpb24gY3JlYXRlTmFtZWRGbG93KCkKIHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImFydGljbGUiKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisKICAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFy
dGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xl
LnN0eWxlWyItd2Via2l0LWZsb3ctaW50byJdID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNs
ZS50ZXh0Q29udGVudCA9ICJUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5h
bWVkRmxvd1wiIjsKKworICAgIGRpdi5pZCA9ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdl
YmtpdC1mbG93LWZyb20iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0
Il0gPSAiNXB4IjsKKyAgICBkaXYuc3R5bGVbIndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZGl2KTsKIH0KIAogZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIg
YXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBk
b2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVt
b3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2Iikp
OwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJl
bGVtZW50cyIpOwogICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVu
Y3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9u
IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7
CiAKQEAgLTQ3LDE2ICs1NSwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50
LmlkLCBuYW1lZEZsb3dDYWxsYmFjayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1
bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCisgICAgICAgICAgICBmdW5jdGlv
biBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dNYXApCiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4g
bWFpbiBkb2N1bWVudCA9PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93cykg
eworICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIHRvIGdldCBOYW1lZCBGbG93
cyIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAg
ICAgICAgICAgbmFtZWRGbG93cyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGZsb3dO
YW1lIGluIG5hbWVkRmxvd01hcCkKKyAgICAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5wdXNo
KG5hbWVkRmxvd01hcFtmbG93TmFtZV0pOworCiAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5z
b3J0KGZ1bmN0aW9uIChuZjEsIG5mMikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChu
ZjEubmFtZSA9PSBuZjIubmFtZSkgPyAwIDogKChuZjEubmFtZSA+IG5mMi5uYW1lKSA/IDEgOiAt
MSkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtNjgsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0
TmFtZWRGbG93Q29sbGVjdGlvbjIobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50KG5leHQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxs
YmFjayk7CiAKQEAgLTgyLDExICs5NCwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5v
ZGVJZCwgbmFtZWRGbG93Q2FsbGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBm
dW5jdGlvbiBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rp
b24gbmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
ICNmYWtlLWRvY3VtZW50ID09PSIpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3Mp
IHsKKyAgICAgICAgICAgICAgICBpZiAobmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7CiAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKQEAgLTk3LDcgKzEwOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAg
fQogICAgICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0
KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZShuZXh0KQogICAgICAgICB7CiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50
Q2FsbGJhY2spOwogCkBAIC0xMjIsNyArMTM0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUy
KG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1l
KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1
ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTE1MywxNSArMTY1LDI5IEBAIGZ1
bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKICAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1w
TmFtZWRGbG93IikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsK
IAotICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ci
KSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQi
KTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDog
XCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRl
ZChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5
b3V0VXBkYXRlZCwgY2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWdpb24zXCIpLnN0eWxl
W1wid2lkdGhcIl0gPSBcIjIwMHB4XCIiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2soZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEu
bmFtZSAhPT0gImZsb3czIikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1l
ZEZsb3dDcmVhdGVkOiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVwZGF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWdpb25MYXlvdXRVcGRhdGVk
OiBcImZsb3czXCIiKTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0sCkBAIC0xNzMsMTIgKzE5OSwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAg
ICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlz
KTsKLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93
IikgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVk
Iik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZmxvd05hbWUgIT09ICJ0bXBOYW1lZEZsb3ci
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNr
LCB0aGlzKTsKIAogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1l
ZEZsb3dSZW1vdmVkOiBcInRtcE5hbWVkRmxvd1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgp
OwpAQCAtMjA0LDYgKzIyOCw3IEBAIFRlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2
ZW50czoKICAgICA8bGk+Z2V0Rmxvd0J5TmFtZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTUiPkJ1ZyA5MTg1NTwvYT48L2xpPgogICAgIDxsaT5u
YW1lZEZsb3dDcmVhdGVkIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9hPjwvbGk+CiAgICAgPGxpPm5hbWVkRmxvd1JlbW92
ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5
Ij5CdWcgOTI3Mzk8L2E+PC9saT4KKyAgICA8bGk+cmVnaW9uTGF5b3V0VXBkYXRlZCA8YSBocmVm
PSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMiPkJ1ZyA5MzQ0
MzwvYT48L2xpPgogPC91bD4KIDwvcD4KIApAQCAtMjE2LDggKzI0MSwxMCBAQCBUZXN0cyB0aGUg
Zm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6CiA8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ct
ZnJvbTogZmxvdzIiPjwvZGl2PgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cy
Ij48L2Rpdj4KIAotPGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MyI+PC9h
cnRpY2xlPgotPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3czIj48L2Rpdj4KKzxh
cnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPgorICAgIFRoaXMgdGV4dCBp
cyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCis8L2FydGljbGU+Cis8ZGl2IGlkPSJyZWdp
b24zIiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3czOyBoZWlnaHQ6IDIwcHg7IHdpZHRo
OiA1cHgiPjwvZGl2PgogCiA8ZGl2IGlkPSJmYWtlLWRvY3VtZW50Ij48L2Rpdj4KIAo=
</data>
<flag name="commit-queue"
          id="172874"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162029</attachid>
            <date>2012-09-04 06:32:17 -0700</date>
            <delta_ts>2012-09-05 06:47:40 -0700</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>39169</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxYjM4YmFlLi4wNjJjODg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MDQgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMDQgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRl
bC5jb20+CiAKICAgICAgICAgW0VGTF0gR2FyZGVuaW5nIG9mIGZhaWxpbmcgdGVzdHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMt
Y29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKaW5kZXggN2M4MmI0OC4uOWZl
OWNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1j
c3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKQEAg
LTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uIEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5
TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQgQnVnIDkyNzM5CiBuYW1lZEZsb3dSZW1v
dmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRlZCBCdWcgOTM0NDMKK1RoaXMgdGV4dCBp
cyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAKIAotUnVubmluZzogdGVzdEdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbgogPT09
IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50ID09PQogKiBOYW1lZCBGbG93ICJmbG93
MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIzICsyMCwyNiBAQCBSZWdpb25zOiAyCiBD
b250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAKLVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZs
b3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb25XaXRoSW52
YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3VtZW50ID09PQog
I2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAotUnVubmluZzogdGVzdEdldEZsb3dC
eU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZQogPT09IE5hbWVkIEZsb3cgImZsb3cy
IiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVkIEZsb3cgImZsb3cyIgogQ29udGVudCBF
bGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZTIKK1J1
bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lCiA9PT0gTmFtZSBGbG93ICJm
bG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUgaXMgbm8gTmFtZWQgRmxvdyAiZmxv
dzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5pbmc6IHRlc3ROYW1lZEZsb3dDcmVhdGVk
CiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93IgogCitSdW5uaW5nOiB0ZXN0UmVnaW9u
TGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRlZDogImZsb3czIgorCiBSdW5uaW5nOiB0
ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVtb3ZlZDogInRtcE5hbWVkRmxvdyIKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVn
aW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2Nv
bC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGQ4MzRjMmEuLjQwZWY2OTEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMt
Y29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTIxLDI0ICsyMSwzMiBAQCBmdW5jdGlvbiBj
cmVhdGVEeW5hbWljRWxlbWVudHMoKQogZnVuY3Rpb24gY3JlYXRlTmFtZWRGbG93KCkKIHsKICAg
ICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImFydGljbGUiKTsKKyAgICB2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisKICAgICBhcnRpY2xlLmlk
ID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8gPSAidG1w
TmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyItd2Via2l0LWZsb3ctaW50byJdID0gInRt
cE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29udGVudCA9ICJUaGlzIHRleHQgaXMgZnJv
bSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wiIjsKKworICAgIGRpdi5pZCA9ICJ0bXBE
aXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93LWZyb20iXSA9ICJ0bXBOYW1lZEZsb3ci
OworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4IjsKKyAgICBkaXYuc3R5bGVbIndpZHRo
Il0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFydGljbGUpOwor
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKIH0KIAogZnVuY3Rpb24gcmVtb3Zl
TmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFydGljbGUp
OworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsKICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwogICAgIEluc3BlY3RvclRlc3QucnVu
VGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24x
KG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5leHQp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9j
dW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTQ3LDE2ICs1NSwyMCBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93
Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50LmlkLCBuYW1lZEZsb3dDYWxsYmFjayk7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxv
d3MpCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dNYXAp
CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQo
Ij09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0iKTsKIAotICAgICAgICAg
ICAgICAgIGlmICghbmFtZWRGbG93cykgeworICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93
TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbIV0g
RmFpbGVkIHRvIGdldCBOYW1lZCBGbG93cyIpOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgbmFtZWRGbG93cyA9IFtdOworICAgICAg
ICAgICAgICAgIGZvciAodmFyIGZsb3dOYW1lIGluIG5hbWVkRmxvd01hcCkKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZWRGbG93cy5wdXNoKG5hbWVkRmxvd01hcFtmbG93TmFtZV0pOworCiAgICAg
ICAgICAgICAgICAgbmFtZWRGbG93cy5zb3J0KGZ1bmN0aW9uIChuZjEsIG5mMikgewogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gKChuZjEubmFtZSA9PSBuZjIubmFtZSkgPyAwIDogKChuZjEu
bmFtZSA+IG5mMi5uYW1lKSA/IDEgOiAtMSkpOwogICAgICAgICAgICAgICAgIH0pOwpAQCAtNjgs
NyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKIAot
ICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIobmV4dCkKKyAgICAg
ICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50
KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1
ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTgyLDExICs5NCwxMSBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0TmFt
ZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRGbG93Q2FsbGJhY2spOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZs
b3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93TWFw
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3VtZW50ID09PSIpOwogCi0gICAgICAg
ICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAgICAgICAgICBpZiAobmFtZWRGbG93
TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJbIV0g
RmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzEwOSw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9u
IHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5
TmFtZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
cmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC0xMjIsNyArMTM0LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKLSAgICAgICAgZnVu
Y3Rpb24gdGVzdEdldEZsb3dCeU5hbWUyKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRG
bG93QnlOYW1lV2l0aEludmFsaWROYW1lKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAK
QEAgLTE1MywxNSArMTY1LDI5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmdW5j
dGlvbiBjYWxsYmFjayhldmVudCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAo
ZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOworCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0Ny
ZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAotICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRh
Lm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
ci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAg
ICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBmdW5jdGlv
biB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZChuZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlZCwgY2FsbGJhY2ssIHRoaXMpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoXCJyZWdpb24zXCIpLnN0eWxlW1wid2lkdGhcIl0gPSBcIjIwMHB4XCIiKTsKKworICAg
ICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gImZsb3czIikKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dDcmVhdGVkOiBcInRtcE5hbWVkRmxvd1wiIik7
CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVwZGF0ZWQs
IGNhbGxiYWNrLCB0aGlzKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJSZWdpb25MYXlvdXRVcGRhdGVkOiBcImZsb3czXCIiKTsKICAgICAgICAgICAgICAgICBu
ZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0xNzMsMTIgKzE5OSwxMCBAQCBm
dW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCiAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxv
d1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0
YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEuZmxv
d05hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5h
bWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVkOiBcInRtcE5hbWVkRmxvd1wiIik7
CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjA0LDYgKzIyOCw3IEBAIFRlc3RzIHRoZSBm
b2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKICAgICA8bGk+Z2V0Rmxvd0J5TmFtZSA8YSBo
cmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTUiPkJ1ZyA5
MTg1NTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dDcmVhdGVkIDxhIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9hPjwvbGk+
CiAgICAgPGxpPm5hbWVkRmxvd1JlbW92ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkyNzM5Ij5CdWcgOTI3Mzk8L2E+PC9saT4KKyAgICA8bGk+cmVn
aW9uTGF5b3V0VXBkYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTM0NDMiPkJ1ZyA5MzQ0MzwvYT48L2xpPgogPC91bD4KIDwvcD4KIApAQCAtMjE2
LDggKzI0MSwxMCBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6CiA8
ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2PgogPGRpdiBzdHlsZT0i
LXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAotPGFydGljbGUgc3R5bGU9Ii13ZWJr
aXQtZmxvdy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgotPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93
LWZyb206IGZsb3czIj48L2Rpdj4KKzxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzog
ZmxvdzMiPgorICAgIFRoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCis8
L2FydGljbGU+Cis8ZGl2IGlkPSJyZWdpb24zIiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZs
b3czOyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiA1cHgiPjwvZGl2PgogCiA8ZGl2IGlkPSJmYWtlLWRv
Y3VtZW50Ij48L2Rpdj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQwNzE5ZWEuLjQyMmUzY2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw2MyBAQAorMjAxMi0wOS0wNCAgQW5kcmVpIFBvZW5hcnUgIDxwb2VuYXJ1
QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm90b2NvbCBFeHRlbnNpb246
IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudCB0
byB0aGUgcHJvdG9jb2wuCisKKyAgICAgICAgUmVtb3ZlZCAiZ2V0Rmxvd0J5TmFtZSIgZnJvbSBw
cm90b2NvbC4KKworICAgICAgICBUaGUgZnJvbnQtZW5kIGtlZXBzIGluIHN5bmMgdGhlIHJlcXVl
c3RlZCBOYW1lZCBGbG93IENvbGxlY3Rpb25zLgorCisgICAgICAgIE1vZGlmaWVkIGV4aXN0aW5n
IHRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRt
bAorCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3cpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRVcGRhdGVSZWdpb25MYXlvdXQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0
ZWRGbG93c0lkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAg
ICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVk
Rmxvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1l
ZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
UmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMuY2FsbGJhY2spOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5hbWVkRmxvd0Nv
bGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUuZ2V0Rmxvd0J5TmFtZUFzeW5jLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5bmMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dDcmVhdGVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fbmFtZWRGbG93
UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUu
X3JlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwucHJvdG90eXBlLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5yZWdpb25M
YXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLmFwcGVuZE5hbWVkRmxvdyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlTmFt
ZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3Rv
dHlwZS5mbG93QnlOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlzcGF0
Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisKIDIwMTItMDktMDQgIEFuZHJleSBBZGFpa2lu
ICA8YWFuZHJleUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1dlYkdM
XSBCdWdmaXg6IHdyb25nIHRleHR1cmUgYmluZGluZyB0YXJnZXQgaW4gcmVwbGF5IGZvciAzRCB0
ZXh0dXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4
IDE1ODhmYzYuLjU1NDc1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZs
b3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IE5h
bWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcKICAgICBS
ZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRGbG93OjpjcmVhdGUo
dGhpcywgZmxvd05hbWUpOwogICAgIG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7CiAK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3Vt
ZW50LCBuZXdGbG93LT5uYW1lKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5ld0Zsb3cuZ2V0KCkpOwogCiAgICAgcmV0dXJu
IG5ld0Zsb3cucmVsZWFzZSgpOwogfQpAQCAtOTUsOSArOTUsOSBAQCB2b2lkIE5hbWVkRmxvd0Nv
bGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiAg
ICAgQVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93
U3RhdGVOdWxsKTsKICAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykp
OwogCi0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOworICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1lZEZsb3cp
OwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3cobV9k
b2N1bWVudCwgbmFtZWRGbG93LT5uYW1lKCkpOworICAgIG1fbmFtZWRGbG93cy5yZW1vdmUobmFt
ZWRGbG93KTsKIH0KIAogdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1bWVudERlc3Ryb3ll
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24g
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZTJkZTMzMC4u
YzFlMjY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjQx
MiwxOCArMjQxMiw2IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvd3MgZnJvbSB0aGUgZG9jdW1lbnQuIiwK
ICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGbG93QnlOYW1lIiwKLSAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJk
b2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhl
IGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5h
bWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlm
aWVyLiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgInJldHVybnMiOiBb
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFt
ZWRGbG93IiwgImRlc2NyaXB0aW9uIjogIkEgTmFtZWQgRmxvdy4iIH0KLSAgICAgICAgICAgICAg
ICBdLAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBG
bG93IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIG5hbWUiLAotICAgICAgICAgICAgICAgICJoaWRk
ZW4iOiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBb
CkBAIC0yNDQxLDggKzI0MjksNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJu
YW1lIjogIm5hbWVkRmxvd0NyZWF0ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjog
WwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYi
OiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3Ry
aW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1lZCBGbG93LiIg
fQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5h
bWVkRmxvdyIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbmV3IE5hbWVkIEZsb3cuIiB9CiAgICAgICAg
ICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBh
IE5hbWVkIEZsb3cgaXMgY3JlYXRlZC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVl
CkBAIC0yNDUxLDEwICsyNDM4LDE4IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRG
bG93UmVtb3ZlZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlk
IiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3Jp
cHRpb24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImZsb3dOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KICAg
ICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3
aGVuIGEgTmFtZWQgRmxvdyBpcyByZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBjb250ZW50IG5v
ZGVzIGFuZCByZWdpb25zLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVnaW9u
TGF5b3V0VXBkYXRlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93Iiwg
ImRlc2NyaXB0aW9uIjogIlRoZSBOYW1lZCBGbG93IHdob3NlIGxheW91dCBtYXkgaGF2ZSBjaGFu
Z2VkLiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93J3MgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQuIiwK
KyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBd
CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
U1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCmluZGV4IDI0YzcxOTcuLmVkY2QzOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTM3LDIyICs1MzcsMzMgQEAgdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQogICAgICAgICBtX2Zyb250
ZW5kLT5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0Fn
ZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3co
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKLSAgICBp
bnQgbm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOwotICAgIGlmICgh
bm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJ
ZCkpCisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZs
b3dzSWQoZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQobm9kZUlkLCBuYW1lLnN0cmlu
ZygpKTsKKyAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKyAgICBtX2Zyb250ZW5kLT5uYW1l
ZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRG
bG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50
KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJ
ZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8
fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAg
IGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRv
Y3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dSZW1vdmVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7Cisg
ICAgbV9mcm9udGVuZC0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93
LT5uYW1lKCkuc3RyaW5nKCkpOworfQorCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRVcGRh
dGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVk
RmxvdykKK3sKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVz
dGVkRmxvd3NJZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAgbV9mcm9udGVuZC0+
cmVnaW9uTGF5b3V0VXBkYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcs
IG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRv
VHlwZSBwc2V1ZG9UeXBlKQpAQCAtODI4LDMyICs4MzksMTYgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGlu
dCBkb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVl
c3RlZC5hZGQoZG9jdW1lbnROb2RlSWQpOworCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1l
ZEZsb3c+ID4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVk
Rmxvd3MoKTsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6
Ok5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVy
OjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwogCi0KICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8
V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4o
KTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgbmFtZWRGbG93
cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgaXQtPmdldCgp
LCBkb2N1bWVudE5vZGVJZCkpOwogCiAgICAgcmVzdWx0ID0gbmFtZWRGbG93cy5yZWxlYXNlKCk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpCi17Ci0gICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcs
IGRvY3VtZW50Tm9kZUlkKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRvY3VtZW50LT5uYW1lZEZs
b3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOwotICAgIGlmICghd2Via2l0TmFtZWRGbG93KSB7
Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5hbWVkIEZsb3cgZm91bmQi
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4g
cHJvdGVjdG9yKHdlYmtpdE5hbWVkRmxvdyk7Ci0gICAgcmVzdWx0ID0gYnVpbGRPYmplY3RGb3JO
YW1lZEZsb3coZXJyb3JTdHJpbmcsIHdlYmtpdE5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwot
fQotCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JT
dHJpbmcqKQogewogICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9IGFkb3B0UHRyKG5ldyBT
ZWxlY3RvclByb2ZpbGUoKSk7CkBAIC05MzMsNiArOTI4LDE1IEBAIEVsZW1lbnQqIEluc3BlY3Rv
ckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9k
ZUlkKQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiB9CiAKK2ludCBJbnNwZWN0b3JDU1NB
Z2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqIGRvY3VtZW50
KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRv
Y3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rp
b25zUmVxdWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qIHJlc3Vs
dCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gYmlu
ZFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0eWxlU2hlZXQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggZmUxYTNi
MS4uNzFiODI3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKQEAgLTk5LDggKzk5LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxl
KEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgbWVkaWFRdWVyeVJl
c3VsdENoYW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9j
dW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGlkQ3JlYXRlTmFt
ZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCB3aWxsUmVtb3Zl
TmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCBkaWRVcGRh
dGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKIAogICAgIHZpcnR1
YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQs
IFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRT
dHlsZVByb3BlcnR5PiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5v
ZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYg
YXR0cmlidXRlcyk7CkBAIC0xMTYsNyArMTE3LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+ID4mIHJlc3VsdCk7
CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9k
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGlu
dCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6
Q1NTOjpOYW1lZEZsb3c+ID4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb3dCeU5h
bWUoRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05h
bWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpOwogCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwogICAgIHZp
cnR1YWwgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJlZlB0cjxUeXBl
QnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+Jik7CkBAIC0xNDUsNiArMTQ1LDcgQEAgcHJp
dmF0ZToKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0
b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVsZW1lbnRGb3JJ
ZChFcnJvclN0cmluZyosIGludCBub2RlSWQpOworICAgIGludCBkb2N1bWVudE5vZGVXaXRoUmVx
dWVzdGVkRmxvd3NJZChEb2N1bWVudCopOwogICAgIHZvaWQgY29sbGVjdFN0eWxlU2hlZXRzKENT
U1N0eWxlU2hlZXQqLCBUeXBlQnVpbGRlcjo6QXJyYXk8V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGJp
bmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNDFiN2JjOC4uMTQx
YzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTIzMSwxNiArMjMxLDIyIEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1CiAgICAgICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93KQogewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlk
Q3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENy
ZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5h
bWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICAgICBpZiAo
SW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1
bWVudCwgbmFtZSk7CisgICAgICAgIGNzc0FnZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3Vt
ZW50LCBuYW1lZEZsb3cpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
VXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQor
eworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkVXBkYXRlUmVn
aW9uTGF5b3V0KGRvY3VtZW50LCBuYW1lZEZsb3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBjMjVkMzcyLi4yMzczNjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC0xMTMsOCArMTEzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlS
ZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jv
b3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BT
aGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3Vt
ZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVk
RmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVw
ZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3Rh
dGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3Vz
ZVByZXNzKFBhZ2UqKTsKQEAgLTI5MCw4ICsyOTEsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNo
YWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dS
b290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0
YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERv
Y3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktp
dE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0
YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RS
ZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVN
b3VzZVByZXNzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC01NjEsMjEgKzU2MywzMCBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290
KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1JvbwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXRO
YW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50
KGRvY3VtZW50KSkKLSAgICAgICAgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3co
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQq
IGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVtb3ZlTmFtZWRGbG93
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIHdpbGxS
ZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZs
b3cpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93
KiBuYW1lZEZsb3cpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpCisgICAgICAgIGRpZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyMDY5NWIu
LjE3MDE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1N0eWxlTW9kZWwuanMKQEAgLTM5LDYgKzM5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb1JlcXVlc3RlZCwgdGhp
cy5fdW5kb1JlZG9SZXF1ZXN0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9Db21w
bGV0ZWQsIHRoaXMuX3VuZG9SZWRvQ29tcGxldGVkLCB0aGlzKTsKICAgICB0aGlzLl9yZXNvdXJj
ZUJpbmRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmco
dGhpcyk7CisgICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZl
bnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9ucywgdGhp
cyk7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdlYklu
c3BlY3Rvci5DU1NEaXNwYXRjaGVyKHRoaXMpKTsKICAgICBDU1NBZ2VudC5lbmFibGUoKTsKIH0K
QEAgLTU4LDcgKzYwLDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewog
ICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiLAogICAgIE1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQiLAogICAgIE5hbWVkRmxv
d0NyZWF0ZWQ6ICJOYW1lZEZsb3dDcmVhdGVkIiwKLSAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFt
ZWRGbG93UmVtb3ZlZCIKKyAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIs
CisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDogIlJlZ2lvbkxheW91dFVwZGF0ZWQiCiB9CiAKIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTE3MiwxMCArMTc1LDE2
IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKE9iamVjdCl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAg
IGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJh
Y2spCisgICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5v
ZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rp
b24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAg
IGlmIChuYW1lZEZsb3dDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFt
ZWRGbG93Q29sbGVjdGlvbi5uYW1lZEZsb3dNYXApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKICAgICAgICAgLyoqCiAgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5
LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBAcGFy
YW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKQEAgLTE4NSwxMSArMTk0LDE0IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxs
YmFjayhudWxsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJh
Y2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXls
b2FkKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93
Q29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbihuYW1lZEZs
b3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tk
b2N1bWVudE5vZGVJZF0gPSBuYW1lZEZsb3dDb2xsZWN0aW9uOworICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLm5hbWVkRmxvd01hcCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9u
KG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKKyAgICAgICAgQ1NT
QWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmlu
ZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xOTcsMjIgKzIw
OSwyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5z
cGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldEZsb3dCeU5h
bWVBc3luYzogZnVuY3Rpb24obm9kZUlkLCBmbG93TmFtZSwgdXNlckNhbGxiYWNrKQorICAgIGdl
dEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCB1c2Vy
Q2FsbGJhY2spCiAgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMu
X25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVk
Rmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xs
ZWN0aW9uLmZsb3dCeU5hbWUoZmxvd05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNw
ZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxiYWNrCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3Rv
Y29sLkVycm9yfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZsb3c9
fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxv
dz19IG5hbWVkRmxvd01hcAogICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
dXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2sodXNlckNhbGxiYWNrLCBuYW1lZEZsb3dNYXApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgICAgIGlmIChlcnJv
ciB8fCAhbmFtZWRGbG93TWFwKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsK
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVj
dG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCkpOworICAgICAgICAg
ICAgICAgIHVzZXJDYWxsYmFjayh0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5v
ZGVJZF0uZmxvd0J5TmFtZShmbG93TmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdl
bnQuZ2V0Rmxvd0J5TmFtZShub2RlSWQsIGZsb3dOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVz
ZXJDYWxsYmFjaykpOworICAgICAgICB0aGlzLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhk
b2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9
LAogCiAgICAgLyoqCkBAIC0zNTAsNTEgKzM2Nyw0OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9N
QWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
CisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAg
ICAgKi8KLSAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5h
bWUpCisgICAgX25hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAg
ICAgewotICAgICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8qKgotICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3Vt
ZW50fSByb290Ci0gICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2Fu
dCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAg
ICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBh
eWxvYWQobmFtZWRGbG93UGF5bG9hZCk7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9u
ID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsK
IAotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIHsgZG9jdW1lbnROb2RlSWQ6
IGRvY3VtZW50Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOwotICAgICAgICB9CisgICAgICAgIGlmICgh
bmFtZWRGbG93Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOwor
ICAgICAgICBuYW1lZEZsb3dDb2xsZWN0aW9uLmFwcGVuZE5hbWVkRmxvdyhuYW1lZEZsb3cpOwor
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgbmFtZWRGbG93KTsKICAgICB9LAogCiAg
ICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0g
ICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05h
bWUKICAgICAgKi8KLSAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2Rl
SWQsIG5hbWUpCisgICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlk
LCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAg
ICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNb
ZG9jdW1lbnROb2RlSWRdOworCisgICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvKioKLSAgICAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5ET01Eb2N1bWVudH0gcm9vdAotICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBj
YWxsYmFjayhyb290KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1v
bWVudCB3ZSBvbmx5IHdhbnQgc3VwcG9ydCBmb3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1
bWVudAotICAgICAgICAgICAgaWYgKGRvY3VtZW50Tm9kZUlkICE9PSByb290LmlkKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmFtZWRGbG93Q29sbGVjdGlvbi5yZW1vdmVOYW1l
ZEZsb3coZmxvd05hbWUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1
bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lOiBmbG93TmFtZSB9KTsKKyAgICB9
LAogCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJ
ZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7Ci0gICAgICAgIH0KKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAorICAgICAq
LworICAgIF9yZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQor
ICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvdyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFy
c2VQYXlsb2FkKG5hbWVkRmxvd1BheWxvYWQpOworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVj
dGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJ
ZF07CisKKyAgICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2Fs
bGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFt
ZWRGbG93KG5hbWVkRmxvdyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBu
YW1lZEZsb3cpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTQ2Myw2ICs0NzcsMTEgQEAgV2ViSW5z
cGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VN
YXBwaW5ncyA9IHt9OwogICAgIH0sCiAKKyAgICBfcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9uczog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7
fTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ1NTTG9j
YXRpb259IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5VSUxvY2F0
aW9ufQpAQCAtMTMyNiwyMSArMTM0NSwyOCBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQu
Tm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8K
LSAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAg
ICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQogICAgIHsKLSAg
ICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5h
bWUpOworICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3dQ
YXlsb2FkKTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2Rl
SWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBA
cGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAgICAgKi8KLSAgICBuYW1lZEZsb3dSZW1vdmVkOiBm
dW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5j
dGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NN
b2RlbC5fbmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRo
aXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7
CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBu
YW1lZEZsb3dQYXlsb2FkCisgICAgICovCisgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rp
b24obmFtZWRGbG93UGF5bG9hZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9yZWdp
b25MYXlvdXRVcGRhdGVkKG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0KIH0KIApAQCAtMTM1MCw3
ICsxMzc2LDcgQEAgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICov
CiBXZWJJbnNwZWN0b3IuTmFtZWRGbG93ID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICB0aGlz
Lm5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7CisgICAgdGhpcy5kb2N1bWVudE5vZGVJ
ZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1l
OwogICAgIHRoaXMub3ZlcnNldCA9IHBheWxvYWQub3ZlcnNldDsKICAgICB0aGlzLmNvbnRlbnQg
PSBwYXlsb2FkLmNvbnRlbnQ7CkBAIC0xMzY3LDIwICsxMzkzLDQ5IEBAIFdlYkluc3BlY3Rvci5O
YW1lZEZsb3cucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKIH0KIAogLyoqCi0gKiBA
cGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pj19IG5hbWVkRmxvd1BheWxvYWQKLSAq
IEByZXR1cm4gez9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz59CisgKiBAY29uc3RydWN0
b3IKKyAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gcGF5bG9hZAogICov
Ci1XZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5ID0gZnVuY3Rpb24obmFt
ZWRGbG93UGF5bG9hZCkKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uID0gZnVuY3Rp
b24ocGF5bG9hZCkKIHsKLSAgICBpZiAoIW5hbWVkRmxvd1BheWxvYWQpCi0gICAgICAgIHJldHVy
biBudWxsOworICAgIHRoaXMubmFtZWRGbG93TWFwID0ge307CiAKLSAgICB2YXIgcGFyc2VkQXJy
YXkgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVkRmxvd1BheWxvYWQubGVuZ3Ro
OyArK2kpCi0gICAgICAgIHBhcnNlZEFycmF5W2ldID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5w
YXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZFtpXSk7Ci0gICAgcmV0dXJuIHBhcnNlZEFycmF5
OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZC5sZW5ndGg7ICsraSkgeworICAgICAg
ICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQocGF5
bG9hZFtpXSk7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFwW25hbWVkRmxvdy5uYW1lXSA9IG5h
bWVkRmxvdzsKKyAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnBy
b3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OYW1lZEZs
b3d9IG5hbWVkRmxvdworICAgICAqLworICAgIGFwcGVuZE5hbWVkRmxvdzogZnVuY3Rpb24obmFt
ZWRGbG93KQorICAgIHsKKyAgICAgICAgdGhpcy5uYW1lZEZsb3dNYXBbbmFtZWRGbG93Lm5hbWVd
ID0gbmFtZWRGbG93OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
Zmxvd05hbWUKKyAgICAgKi8KKyAgICByZW1vdmVOYW1lZEZsb3c6IGZ1bmN0aW9uKGZsb3dOYW1l
KQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMubmFtZWRGbG93TWFwW2Zsb3dOYW1lXTsKKyAg
ICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCisgICAgICog
QHJldHVybiB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30KKyAgICAgKi8KKyAgICBmbG93QnlOYW1l
OiBmdW5jdGlvbihmbG93TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSB0aGlz
Lm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisKKyAgICAgICAgaWYgKG5hbWVkRmxvdyA9PT0gdW5k
ZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiBuYW1lZEZs
b3c7CisgICAgfQorfQogLyoqCiAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWx9
CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1Ro
cmVhZC5jcHAKaW5kZXggN2IxMWRmZi4uMTc0ZDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKIAogI2luY2x1ZGUgIkZsb3dUaHJl
YWRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIldlYktpdE5hbWVkRmxvdy5oIgpAQCAtMzM2LDYgKzMzNyw3IEBAIGNvbnN0IEF0b21pY1N0
cmluZyYgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB2b2lk
IFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgp
CiB7CiAgICAgUmVuZGVyRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVu
dCgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0
KGRvY3VtZW50KCksIG1fbmFtZWRGbG93LmdldCgpKTsKIAogICAgIGlmICghbV9yZWdpb25MYXlv
dXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZlKCkgJiYgbV9uYW1lZEZsb3ctPmhhc0V2ZW50TGlz
dGVuZXJzKCkpCiAgICAgICAgIG1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9u
ZVNob3QoMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162236</attachid>
            <date>2012-09-05 06:47:40 -0700</date>
            <delta_ts>2012-09-05 07:57:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>42220</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYTY5NWUyLi5hMTAyYmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MDUgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMDUgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgU2hhZG93Um9vdC5jbG9uZU5vZGUoKSBtdXN0IGFsd2F5cyB0aHJvdyBhIERBVEFfQ0xPTkVf
RVJSIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50
eHQKaW5kZXggN2M4MmI0OC4uOWZlOWNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21t
YW5kcy1leHBlY3RlZC50eHQKQEAgLTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0aW9u
IEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQgQnVn
IDkyNzM5CiBuYW1lZEZsb3dSZW1vdmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRlZCBC
dWcgOTM0NDMKK1RoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAKIAot
UnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0TmFt
ZWRGbG93Q29sbGVjdGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50ID09
PQogKiBOYW1lZCBGbG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIzICsy
MCwyNiBAQCBSZWdpb25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAKLVJ1
bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
ICNmYWtlLWRvY3VtZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAot
UnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZQog
PT09IE5hbWVkIEZsb3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVkIEZs
b3cgImZsb3cyIgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5nOiB0
ZXN0R2V0Rmxvd0J5TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWRO
YW1lCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUg
aXMgbm8gTmFtZWQgRmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5pbmc6
IHRlc3ROYW1lZEZsb3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93Igog
CitSdW5uaW5nOiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRlZDog
ImZsb3czIgorCiBSdW5uaW5nOiB0ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVtb3Zl
ZDogInRtcE5hbWVkRmxvdyIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGQ4
MzRjMmEuLjQwZWY2OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTIxLDI0
ICsyMSwzMiBAQCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljRWxlbWVudHMoKQogZnVuY3Rpb24gY3Jl
YXRlTmFtZWRGbG93KCkKIHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImFydGljbGUiKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisKICAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5bGUu
d2Via2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyItd2Vi
a2l0LWZsb3ctaW50byJdID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29udGVu
dCA9ICJUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wiIjsK
KworICAgIGRpdi5pZCA9ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93LWZy
b20iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4IjsK
KyAgICBkaXYuc3R5bGVbIndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsK
IH0KIAogZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBmdW5j
dGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwog
ICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTQ3LDE2
ICs1NSwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50LmlkLCBuYW1lZEZs
b3dDYWxsYmFjayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVk
Rmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dD
YWxsYmFjayhuYW1lZEZsb3dNYXApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVu
dCA9PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93cykgeworICAgICAgICAg
ICAgICAgIGlmICghbmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIHRvIGdldCBOYW1lZCBGbG93cyIpOwogICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgbmFt
ZWRGbG93cyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGZsb3dOYW1lIGluIG5hbWVk
Rmxvd01hcCkKKyAgICAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5wdXNoKG5hbWVkRmxvd01h
cFtmbG93TmFtZV0pOworCiAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5zb3J0KGZ1bmN0aW9u
IChuZjEsIG5mMikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChuZjEubmFtZSA9PSBu
ZjIubmFtZSkgPyAwIDogKChuZjEubmFtZSA+IG5mMi5uYW1lKSA/IDEgOiAtMSkpOwogICAgICAg
ICAgICAgICAgIH0pOwpAQCAtNjgsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93Q29s
bGVjdGlvbjIobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rp
b25XaXRoSW52YWxpZERvY3VtZW50KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAg
LTgyLDExICs5NCwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRG
bG93Q2FsbGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1l
ZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93
Q2FsbGJhY2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3Vt
ZW50ID09PSIpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAg
ICAgICAgICBpZiAobmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk3LDcgKzEwOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9
LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQorICAgICAgICBm
dW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwog
CkBAIC0xMjIsNyArMTM0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUyKG5leHQpCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lKG5leHQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQo
ZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTE1MywxNSArMTY1LDI5IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAotICAgICAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZs
b3dcIiIpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZChuZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlZCwg
Y2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWdpb24zXCIpLnN0eWxlW1wid2lkdGhcIl0g
PSBcIjIwMHB4XCIiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gImZs
b3czIikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dDcmVhdGVk
OiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01v
ZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRz
LlJlZ2lvbkxheW91dFVwZGF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWdpb25MYXlvdXRVcGRhdGVkOiBcImZsb3czXCIi
KTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBA
IC0xNzMsMTIgKzE5OSwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soZXZlbnQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAg
ICAgaWYgKGV2ZW50LmRhdGEuZmxvd05hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVk
OiBcInRtcE5hbWVkRmxvd1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjA0LDYg
KzIyOCw3IEBAIFRlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKICAgICA8
bGk+Z2V0Rmxvd0J5TmFtZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTE4NTUiPkJ1ZyA5MTg1NTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dDcmVh
dGVkIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjcz
OSI+QnVnIDkyNzM5PC9hPjwvbGk+CiAgICAgPGxpPm5hbWVkRmxvd1JlbW92ZWQgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5Ij5CdWcgOTI3Mzk8
L2E+PC9saT4KKyAgICA8bGk+cmVnaW9uTGF5b3V0VXBkYXRlZCA8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMiPkJ1ZyA5MzQ0MzwvYT48L2xpPgog
PC91bD4KIDwvcD4KIApAQCAtMjE2LDggKzI0MSwxMCBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNv
bW1hbmRzIGFuZCBldmVudHM6CiA8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIi
PjwvZGl2PgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAot
PGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgotPGRp
diBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3czIj48L2Rpdj4KKzxhcnRpY2xlIHN0eWxl
PSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPgorICAgIFRoaXMgdGV4dCBpcyBmcm9tIENTUyBO
YW1lZCBGbG93ICJmbG93MyIuCis8L2FydGljbGU+Cis8ZGl2IGlkPSJyZWdpb24zIiBzdHlsZT0i
LXdlYmtpdC1mbG93LWZyb206IGZsb3czOyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiA1cHgiPjwvZGl2
PgogCiA8ZGl2IGlkPSJmYWtlLWRvY3VtZW50Ij48L2Rpdj4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3NGQz
OWQuLjkxMzkxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMi0wOS0wNSAgQW5k
cmVpIFBvZW5hcnUgIDxwb2VuYXJ1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBQcm90b2NvbCBFeHRlbnNpb246IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCAicmVnaW9u
TGF5b3V0VXBkYXRlIiBldmVudCB0byB0aGUgcHJvdG9jb2wuCisKKyAgICAgICAgUmVtb3ZlZCAi
Z2V0Rmxvd0J5TmFtZSIgZnJvbSBwcm90b2NvbC4KKworICAgICAgICBUaGUgZnJvbnQtZW5kIGtl
ZXBzIGluIHN5bmMgdGhlIHJlcXVlc3RlZCBOYW1lZCBGbG93IENvbGxlY3Rpb25zLgorCisgICAg
ICAgIE1vZGlmaWVkIGV4aXN0aW5nIHRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3Nz
LXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxv
d1dpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmRpc2Nh
cmROYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoVXBkYXRlUmVn
aW9uTGF5b3V0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNr
OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZVJl
Z2lvbkxheW91dFRhc2s6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6c2NoZWR1bGVGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6b25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpyZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZs
b3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJlbW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlv
dXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMuY2Fs
bGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFtZUFzeW5jLmNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5bmMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZs
b3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlw
ZS5fbmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuX3JlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVh
dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1l
ZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3Rv
dHlwZS5yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZs
b3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLmFwcGVuZE5hbWVk
Rmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5
cGUucmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xs
ZWN0aW9uLnByb3RvdHlwZS5mbG93QnlOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisKIDIwMTItMDktMDUgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgU2hhZG93Um9vdC5j
bG9uZU5vZGUoKSBtdXN0IGFsd2F5cyB0aHJvdyBhIERBVEFfQ0xPTkVfRVJSIGV4Y2VwdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCAxNTg4ZmM2
Li41NTQ3NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dD
b2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nCiAgICAgUmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKHRoaXMsIGZs
b3dOYW1lKTsKICAgICBtX25hbWVkRmxvd3MuYWRkKG5ld0Zsb3cuZ2V0KCkpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmV3
Rmxvdy0+bmFtZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5h
bWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LmdldCgpKTsKIAogICAgIHJldHVybiBuZXdGbG93
LnJlbGVhc2UoKTsKIH0KQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9u
OjpkaXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogICAgIEFTU0VS
VChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVs
bCk7CiAgICAgQVNTRVJUKG1fbmFtZWRGbG93cy5jb250YWlucyhuYW1lZEZsb3cpKTsKIAotICAg
IG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmFtZWRGbG93KTsKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KG1fZG9jdW1lbnQs
IG5hbWVkRmxvdy0+bmFtZSgpKTsKKyAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7
CiB9CiAKIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnREZXN0cm95ZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGUyZGUzMzAuLmMxZTI2NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTI0MTIsMTggKzI0
MTIsNiBAQAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3dzIGZyb20gdGhlIGRvY3VtZW50LiIsCiAgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0Rmxvd0J5TmFtZSIsCi0gICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnRO
b2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVu
dCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk5hbWVkIEZsb3cgaWRlbnRpZmllci4iIH0K
LSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIs
ICJkZXNjcmlwdGlvbiI6ICJBIE5hbWVkIEZsb3cuIiB9Ci0gICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvdyBpZGVu
dGlmaWVkIGJ5IHRoZSBnaXZlbiBuYW1lIiwKLSAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1
ZQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwpAQCAtMjQ0
MSw4ICsyNDI5LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJu
YW1lZEZsb3dDcmVhdGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5O
b2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ci
LCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBG
bG93IGlzIGNyZWF0ZWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjQ1
MSwxMCArMjQzOCwxOCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd1JlbW92
ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJmbG93TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5h
bWVkIEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFzc29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQg
cmVnaW9ucy4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlZ2lvbkxheW91dFVw
ZGF0ZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgTmFtZWQgRmxvdyB3aG9zZSBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJl
cyB3aGVuIGEgTmFtZWQgRmxvdydzIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLiIsCisgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRl
eCAyNGM3MTk3Li5iZGFjZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTIyNiw2ICsyMjYsNDIgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JP
YmplY3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAorY2xhc3MgVXBkYXRlUmVn
aW9uTGF5b3V0VGFzayB7CitwdWJsaWM6CisgICAgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayhJbnNw
ZWN0b3JDU1NBZ2VudCopOworICAgIHZvaWQgc2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93Kiwg
aW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICB2b2lkIHJlc2V0KCkgeyBtX3RpbWVyLnN0b3AoKTsg
fQorICAgIHZvaWQgb25UaW1lcihUaW1lcjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiopOworCitw
cml2YXRlOgorICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2Nzc0FnZW50OworICAgIFRpbWVyPFVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdGltZXI7CisgICAgSGFzaE1hcDxXZWJLaXROYW1lZEZs
b3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKK307CisKK1VwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OlVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50KQorICAgIDog
bV9jc3NBZ2VudChjc3NBZ2VudCkKKyAgICAsIG1fdGltZXIodGhpcywgJlVwZGF0ZVJlZ2lvbkxh
eW91dFRhc2s6Om9uVGltZXIpCit7Cit9CisKK3ZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6
c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJ
ZCkKK3sKKyAgICBtX25hbWVkRmxvd3MuYWRkKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwor
CisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KDApOworfQorCit2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIoVGltZXI8
VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4qKQoreworICAgIC8vIFRoZSB0aW1lciBpcyBzdG9wcGVk
IG9uIG1fY3NzQWdlbnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUg
Y2FsbGVkIGFmdGVyIG1fY3NzQWdlbnQgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIGZvciAoSGFz
aE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+OjppdGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5i
ZWdpbigpLCBlbmQgPSBtX25hbWVkRmxvd3MuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgbV9jc3NBZ2VudC0+cmVnaW9uTGF5b3V0VXBkYXRlZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQp
OworCisgICAgbV9uYW1lZEZsb3dzLmNsZWFyKCk7Cit9CisKIGNsYXNzIEluc3BlY3RvckNTU0Fn
ZW50OjpTdHlsZVNoZWV0QWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3R5bGVTaGVldEFjdGlvbik7CiBwdWJsaWM6CkBA
IC01MTgsNiArNTU0LDggQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogICAgIG1f
bm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwogICAgIG1fZG9jdW1lbnRUb0luc3Bl
Y3RvclN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVz
dGVkLmNsZWFyKCk7CisgICAgaWYgKG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzaykKKyAgICAgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5yZXNldCgpOwogICAgIHJlc2V0UHNldWRvU3RhdGVz
KCk7CiB9CiAKQEAgLTUzNywyMiArNTc1LDQzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Om1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVuZC0+bWVkaWFRdWVyeVJl
c3VsdENoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFt
ZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJZCA9IG1fZG9t
QWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1l
ZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgIGludCBkb2N1
bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsK
KyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250
ZW5kLT5uYW1lZEZsb3dDcmVhdGVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7CisgICAgRXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7CisgICAgbV9mcm9udGVuZC0+bmFtZWRGbG93Q3JlYXRlZChidWls
ZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2Rl
SWQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlTmFtZWRGbG93KERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFub2RlSWQgfHwgIW1fbmFtZWRGbG93Q29s
bGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKKyAgICBpbnQgZG9jdW1lbnROb2Rl
SWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChkb2N1bWVudCk7CisgICAgaWYg
KCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZC0+bmFt
ZWRGbG93UmVtb3ZlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmQtPm5h
bWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygp
KTsKK30KKwordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERv
Y3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisgICAgaW50
IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1l
bnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQorICAgICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91
dFRhc2sgPSBhZG9wdFB0cihuZXcgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayh0aGlzKSk7CisgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5zY2hlZHVsZUZvcihuYW1lZEZsb3csIGRvY3VtZW50
Tm9kZUlkKTsKK30KKwordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRl
ZChXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQoreworICAg
IGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRl
TnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7Cisg
ICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBkYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxv
dygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKQpAQCAtODI4LDMyICs4ODcsMTYgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBkb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9uYW1lZEZsb3dD
b2xsZWN0aW9uc1JlcXVlc3RlZC5hZGQoZG9jdW1lbnROb2RlSWQpOworCiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1l
ZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwogCi0KICAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxv
d3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAg
ICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0
cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwogCiAgICAgcmVzdWx0ID0gbmFtZWRG
bG93cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5h
bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0
cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1
bHQpCi17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1l
bnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRv
Y3VtZW50LT5uYW1lZEZsb3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOwotICAgIGlmICghd2Vi
a2l0TmFtZWRGbG93KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5h
bWVkIEZsb3cgZm91bmQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKHdlYmtpdE5hbWVkRmxvdyk7Ci0gICAgcmVzdWx0ID0g
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIHdlYmtpdE5hbWVkRmxvdywgZG9j
dW1lbnROb2RlSWQpOwotfQotCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9y
UHJvZmlsZXIoRXJyb3JTdHJpbmcqKQogewogICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9
IGFkb3B0UHRyKG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7CkBAIC05MzMsNiArOTc2LDE1IEBAIEVs
ZW1lbnQqIEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiB9CiAKK2lu
dCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQt
PmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25h
bWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7Cit9CisKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0LCBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEhlYWRlcj4qIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JT
dHlsZVNoZWV0ID0gYmluZFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0
eWxlU2hlZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmgKaW5kZXggZmUxYTNiMS4uODhlNmYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNz
IE5vZGVMaXN0OwogY2xhc3MgU2VsZWN0b3JQcm9maWxlOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsK
K2NsYXNzIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
CkBAIC05OSw4ICsxMDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgbWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRG
bG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCB3aWxsUmVtb3ZlTmFt
ZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCBkaWRVcGRhdGVS
ZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIHJlZ2lv
bkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiYgYXR0cmlidXRlcyk7CkBAIC0xMTYsNyArMTE5LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+ID4m
IHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9D
bGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0
cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmlu
ZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQp
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyop
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+Jik7CkBAIC0xNDUsNiArMTQ3
LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSog
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVs
ZW1lbnRGb3JJZChFcnJvclN0cmluZyosIGludCBub2RlSWQpOworICAgIGludCBkb2N1bWVudE5v
ZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCopOwogICAgIHZvaWQgY29sbGVjdFN0eWxl
U2hlZXRzKENTU1N0eWxlU2hlZXQqLCBUeXBlQnVpbGRlcjo6QXJyYXk8V2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxl
U2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKQEAgLTE3Niw2ICsxNzksNyBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50VG9WaWFJbnNwZWN0b3JTdHlsZVNoZWV0IG1fZG9jdW1l
bnRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZSBt
X25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAgICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93
Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7CisgICAgT3duUHRyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+
IG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKIAogICAgIGludCBtX2xhc3RTdHlsZVNoZWV0SWQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggNDFiN2JjOC4uMTQxYzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTIzMSwx
NiArMjMxLDIyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93
Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1CiAgICAgICAgIGRvbUFnZW50LT53
aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogICAgIGlmIChJbnNwZWN0
b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NB
Z2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBu
YW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFt
ZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5h
bWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1l
ZEZsb3cqIG5hbWVkRmxvdykKIHsKICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3Nz
QWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIGNzc0Fn
ZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQs
IFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQoreworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2Vu
dCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQor
ICAgICAgICBjc3NBZ2VudC0+ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50LCBuYW1lZEZs
b3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjMjVkMzcyLi4yMzczNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMTMsOCArMTEzLDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9v
dCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNo
YWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5h
bWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7Cisg
ICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVk
RmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCos
IFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdz
KTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzKFBhZ2UqKTsKQEAgLTI5MCw4ICsy
OTEsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRv
d1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290
Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
Q3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxv
d0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2
b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVu
dCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxh
eW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93
Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZs
YWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKik7CkBAIC01NjEsMjEgKzU2MywzMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvbwog
I2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZs
b3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkQ3Jl
YXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7Cisg
ICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1l
bnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cq
IG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50
KSkKLSAgICAgICAgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBk
b2N1bWVudCwgbmFtZSk7CisgICAgICAgIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOworI2VuZGlmCit9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3Vt
ZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZFVwZGF0ZVJlZ2lv
bkxheW91dEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyMDY5NWIuLjE3MDE5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTM5LDYg
KzM5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50
LkV2ZW50cy5VbmRvUmVkb1JlcXVlc3RlZCwgdGhpcy5fdW5kb1JlZG9SZXF1ZXN0ZWQsIHRoaXMp
OwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9Db21wbGV0ZWQsIHRoaXMuX3VuZG9SZWRvQ29tcGxl
dGVkLCB0aGlzKTsKICAgICB0aGlzLl9yZXNvdXJjZUJpbmRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7CisgICAgdGhpcy5fbmFtZWRGbG93
Q29sbGVjdGlvbnMgPSB7fTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5f
cmVzZXROYW1lZEZsb3dDb2xsZWN0aW9ucywgdGhpcyk7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyKHRoaXMp
KTsKICAgICBDU1NBZ2VudC5lbmFibGUoKTsKIH0KQEAgLTU4LDcgKzYwLDggQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewogICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5
bGVTaGVldENoYW5nZWQiLAogICAgIE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQiLAogICAgIE5hbWVkRmxvd0NyZWF0ZWQ6ICJOYW1lZEZsb3dDcmVhdGVk
IiwKLSAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIKKyAgICBOYW1lZEZs
b3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIsCisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDog
IlJlZ2lvbkxheW91dFVwZGF0ZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBy
b3RvdHlwZSA9IHsKQEAgLTE3MiwxMCArMTc1LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9k
ZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9y
Lk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKE9iamVj
dCl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3lu
YzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCisgICAgZ2V0TmFtZWRGbG93Q29sbGVj
dGlvbkFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsK
KyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0
aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAgIGlmIChuYW1lZEZsb3dDb2xsZWN0aW9uKSB7
CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29sbGVjdGlvbi5uYW1lZEZsb3dN
YXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgLyoqCiAgICAg
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9
IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IK
QEAgLTE4NSwxMSArMTk0LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXls
b2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5w
YXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXlsb2FkKSk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuTmFtZWRGbG93Q29sbGVjdGlvbihuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0gPSBuYW1lZEZsb3dD
b2xsZWN0aW9uOworICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0
aW9uLm5hbWVkRmxvd01hcCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBD
U1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlz
LCB1c2VyQ2FsbGJhY2spKTsKKyAgICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlv
bihkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC0xOTcsMjIgKzIwOSwyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5zcGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxs
YmFjawogICAgICAqLwotICAgIGdldEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24obm9kZUlkLCBm
bG93TmFtZSwgdXNlckNhbGxiYWNrKQorICAgIGdldEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24o
ZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCB1c2VyQ2FsbGJhY2spCiAgICAgeworICAgICAgICB2
YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3Vt
ZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAg
ICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLmZsb3dCeU5hbWUoZmxvd05hbWUp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8qKgogICAgICAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxi
YWNrCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAgICAgICAg
KiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZsb3c9fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAg
ICAqIEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxvdz19IG5hbWVkRmxvd01hcAogICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRG
bG93UGF5bG9hZCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBuYW1l
ZEZsb3dNYXApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93
UGF5bG9hZCkKKyAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93TWFwKQogICAgICAg
ICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQo
bmFtZWRGbG93UGF5bG9hZCkpOworICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayh0aGlzLl9u
YW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0uZmxvd0J5TmFtZShmbG93TmFtZSkp
OwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdlbnQuZ2V0Rmxvd0J5TmFtZShub2RlSWQsIGZs
b3dOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOworICAgICAgICB0aGlz
LmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmlu
ZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNTAsNTEgKzM2
Nyw0OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJ
ZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5O
YW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAgICBfbmFtZWRGbG93Q3JlYXRl
ZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgX25hbWVkRmxvd0NyZWF0ZWQ6
IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuaGFz
RXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxv
d0NyZWF0ZWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8qKgotICAgICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSByb290Ci0gICAgICAgICovCi0gICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGlu
IHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJv
b3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgbmFtZWRGbG93ID0g
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCk7Cisg
ICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlv
bnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsKIAotICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVk
Rmxvd0NyZWF0ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLCBuYW1lOiBuYW1l
IH0pOwotICAgICAgICB9CisgICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERv
Y3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBuYW1lZEZsb3dDb2xsZWN0aW9u
LmFwcGVuZE5hbWVkRmxvdyhuYW1lZEZsb3cpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3Jl
YXRlZCwgbmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01B
Z2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAgICAgKi8KLSAgICBfbmFtZWRGbG93
UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgX25hbWVkRmxvd1Jl
bW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9u
ID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdOworCisgICAgICAg
IGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAvKioKLSAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Eb2N1bWVudH0gcm9vdAot
ICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyb290KQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVudCB3ZSBvbmx5IHdhbnQgc3VwcG9ydCBm
b3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1bWVudAotICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50Tm9kZUlkICE9PSByb290LmlkKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bmFtZWRGbG93Q29sbGVjdGlvbi5yZW1vdmVOYW1lZEZsb3coZmxvd05hbWUpOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQs
IGZsb3dOYW1lOiBmbG93TmFtZSB9KTsKKyAgICB9LAogCi0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFt
ZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5h
bWUgfSk7Ci0gICAgICAgIH0KKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVk
Rmxvd30gbmFtZWRGbG93UGF5bG9hZAorICAgICAqLworICAgIF9yZWdpb25MYXlvdXRVcGRhdGVk
OiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxv
dyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKG5hbWVkRmxvd1BheWxvYWQp
OworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxl
Y3Rpb25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJZF07CisKKyAgICAgICAgaWYgKCFuYW1lZEZs
b3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAg
IG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRGbG93KG5hbWVkRmxvdyk7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBuYW1lZEZsb3cpOwogICAgIH0sCiAKICAgICAv
KioKQEAgLTQ2Myw2ICs0NzcsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5ncyA9IHt9OwogICAgIH0sCiAKKyAg
ICBfcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICog
QHJldHVybiB7P1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQpAQCAtMTMyNiwyMSArMTM0NSwyOCBA
QCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAg
IC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZs
b3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5j
dGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlv
bihuYW1lZEZsb3dQYXlsb2FkKQogICAgIHsKLSAgICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVk
Rmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOworICAgICAgICB0aGlzLl9jc3NNb2Rl
bC5fbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3dQYXlsb2FkKTsKICAgICB9LAogCiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAg
ICAgKi8KLSAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFt
ZSkKKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05h
bWUpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93UmVtb3ZlZChkb2N1
bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1v
dmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICovCisg
ICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9yZWdpb25MYXlvdXRVcGRhdGVkKG5hbWVkRmxvd1Bh
eWxvYWQpOwogICAgIH0KIH0KIApAQCAtMTM1MCw3ICsxMzc2LDcgQEAgV2ViSW5zcGVjdG9yLkNT
U0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuTmFtZWRGbG93ID0g
ZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICB0aGlzLm5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnRO
b2RlSWQ7CisgICAgdGhpcy5kb2N1bWVudE5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7
CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRoaXMub3ZlcnNldCA9IHBheWxv
YWQub3ZlcnNldDsKICAgICB0aGlzLmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7CkBAIC0xMzY3
LDIwICsxMzkzLDQ5IEBAIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkID0gZnVu
Y3Rpb24ocGF5bG9hZCkKIH0KIAogLyoqCi0gKiBAcGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFt
ZWRGbG93Pj19IG5hbWVkRmxvd1BheWxvYWQKLSAqIEByZXR1cm4gez9BcnJheS48V2ViSW5zcGVj
dG9yLk5hbWVkRmxvdz59CisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7P0FycmF5LjxDU1NB
Z2VudC5OYW1lZEZsb3c+PX0gcGF5bG9hZAogICovCi1XZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBh
cnNlUGF5bG9hZEFycmF5ID0gZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKK1dlYkluc3BlY3Rv
ci5OYW1lZEZsb3dDb2xsZWN0aW9uID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICBpZiAoIW5h
bWVkRmxvd1BheWxvYWQpCi0gICAgICAgIHJldHVybiBudWxsOworICAgIHRoaXMubmFtZWRGbG93
TWFwID0ge307CiAKLSAgICB2YXIgcGFyc2VkQXJyYXkgPSBbXTsKLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG5hbWVkRmxvd1BheWxvYWQubGVuZ3RoOyArK2kpCi0gICAgICAgIHBhcnNlZEFycmF5
W2ldID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9h
ZFtpXSk7Ci0gICAgcmV0dXJuIHBhcnNlZEFycmF5OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cGF5bG9hZC5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVj
dG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQocGF5bG9hZFtpXSk7CisgICAgICAgIHRoaXMubmFt
ZWRGbG93TWFwW25hbWVkRmxvdy5uYW1lXSA9IG5hbWVkRmxvdzsKKyAgICB9CiB9CiAKK1dlYklu
c3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5OYW1lZEZsb3d9IG5hbWVkRmxvdworICAgICAqLworICAg
IGFwcGVuZE5hbWVkRmxvdzogZnVuY3Rpb24obmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgdGhp
cy5uYW1lZEZsb3dNYXBbbmFtZWRGbG93Lm5hbWVdID0gbmFtZWRGbG93OworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKKyAgICAgKi8KKyAgICByZW1v
dmVOYW1lZEZsb3c6IGZ1bmN0aW9uKGZsb3dOYW1lKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRo
aXMubmFtZWRGbG93TWFwW2Zsb3dOYW1lXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBh
cmFtIHtzdHJpbmd9IGZsb3dOYW1lCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLk5hbWVk
Rmxvd30KKyAgICAgKi8KKyAgICBmbG93QnlOYW1lOiBmdW5jdGlvbihmbG93TmFtZSkKKyAgICB7
CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSB0aGlzLm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisK
KyAgICAgICAgaWYgKG5hbWVkRmxvdyA9PT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgcmV0dXJu
IG51bGw7CisgICAgICAgIHJldHVybiBuYW1lZEZsb3c7CisgICAgfQorfQogLyoqCiAgKiBAdHlw
ZSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWx9CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNGU4M2NjYS4uNzQ2
MWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dU
aHJlYWQuaCIKIAogI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgpAQCAt
MzU3LDYgKzM1OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyTmFtZWRGbG93VGhyZWFk
OjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlz
cGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCiB7CiAgICAgUmVuZGVyRmxvd1RocmVhZDo6
ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50KCksIG1fbmFtZWRGbG93Lmdl
dCgpKTsKIAogICAgIGlmICghbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZl
KCkgJiYgbV9uYW1lZEZsb3ctPmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIG1fcmVnaW9u
TGF5b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162247</attachid>
            <date>2012-09-05 07:57:12 -0700</date>
            <delta_ts>2012-09-06 04:46:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>42205</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYTY5NWUyLi5hMTAyYmI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MDUgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMDUgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgU2hhZG93Um9vdC5jbG9uZU5vZGUoKSBtdXN0IGFsd2F5cyB0aHJvdyBhIERBVEFfQ0xPTkVf
RVJSIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50
eHQKaW5kZXggN2M4MmI0OC4uOWZlOWNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21t
YW5kcy1leHBlY3RlZC50eHQKQEAgLTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0aW9u
IEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQgQnVn
IDkyNzM5CiBuYW1lZEZsb3dSZW1vdmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRlZCBC
dWcgOTM0NDMKK1RoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAKIAot
UnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0TmFt
ZWRGbG93Q29sbGVjdGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50ID09
PQogKiBOYW1lZCBGbG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIzICsy
MCwyNiBAQCBSZWdpb25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAKLVJ1
bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dzIGlu
ICNmYWtlLWRvY3VtZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAot
UnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZQog
PT09IE5hbWVkIEZsb3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVkIEZs
b3cgImZsb3cyIgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5nOiB0
ZXN0R2V0Rmxvd0J5TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWRO
YW1lCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUg
aXMgbm8gTmFtZWQgRmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5pbmc6
IHRlc3ROYW1lZEZsb3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93Igog
CitSdW5uaW5nOiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRlZDog
ImZsb3czIgorCiBSdW5uaW5nOiB0ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVtb3Zl
ZDogInRtcE5hbWVkRmxvdyIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0
eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGQ4
MzRjMmEuLjQwZWY2OTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMv
cHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTIxLDI0
ICsyMSwzMiBAQCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljRWxlbWVudHMoKQogZnVuY3Rpb24gY3Jl
YXRlTmFtZWRGbG93KCkKIHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImFydGljbGUiKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisKICAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5bGUu
d2Via2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyItd2Vi
a2l0LWZsb3ctaW50byJdID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29udGVu
dCA9ICJUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wiIjsK
KworICAgIGRpdi5pZCA9ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93LWZy
b20iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4IjsK
KyAgICBkaXYuc3R5bGVbIndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsK
IH0KIAogZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9keS5y
ZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBmdW5j
dGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwog
ICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTQ3LDE2
ICs1NSwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50LmlkLCBuYW1lZEZs
b3dDYWxsYmFjayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVk
Rmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dD
YWxsYmFjayhuYW1lZEZsb3dNYXApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVu
dCA9PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93cykgeworICAgICAgICAg
ICAgICAgIGlmICghbmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIHRvIGdldCBOYW1lZCBGbG93cyIpOwogICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgbmFt
ZWRGbG93cyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGZsb3dOYW1lIGluIG5hbWVk
Rmxvd01hcCkKKyAgICAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5wdXNoKG5hbWVkRmxvd01h
cFtmbG93TmFtZV0pOworCiAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5zb3J0KGZ1bmN0aW9u
IChuZjEsIG5mMikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChuZjEubmFtZSA9PSBu
ZjIubmFtZSkgPyAwIDogKChuZjEubmFtZSA+IG5mMi5uYW1lKSA/IDEgOiAtMSkpOwogICAgICAg
ICAgICAgICAgIH0pOwpAQCAtNjgsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93Q29s
bGVjdGlvbjIobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rp
b25XaXRoSW52YWxpZERvY3VtZW50KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAg
LTgyLDExICs5NCwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRG
bG93Q2FsbGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1l
ZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93
Q2FsbGJhY2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3Vt
ZW50ID09PSIpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAg
ICAgICAgICBpZiAobmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAg
LTk3LDcgKzEwOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9
LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQorICAgICAgICBm
dW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwog
CkBAIC0xMjIsNyArMTM0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUyKG5leHQpCisgICAg
ICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lKG5leHQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQo
ZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTE1MywxNSArMTY1LDI5IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKICAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAotICAgICAgICAg
ICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZs
b3dcIiIpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZChuZXh0KQorICAg
ICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlZCwg
Y2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyZWdpb24zXCIpLnN0eWxlW1wid2lkdGhcIl0g
PSBcIjIwMHB4XCIiKTsKKworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gImZs
b3czIikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dDcmVhdGVk
OiBcInRtcE5hbWVkRmxvd1wiIik7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01v
ZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRz
LlJlZ2lvbkxheW91dFVwZGF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJSZWdpb25MYXlvdXRVcGRhdGVkOiBcImZsb3czXCIi
KTsKICAgICAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBA
IC0xNzMsMTIgKzE5OSwxMCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soZXZlbnQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAg
ICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAg
ICAgaWYgKGV2ZW50LmRhdGEuZmxvd05hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKQogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVk
OiBcInRtcE5hbWVkRmxvd1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjA0LDYg
KzIyOCw3IEBAIFRlc3RzIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKICAgICA8
bGk+Z2V0Rmxvd0J5TmFtZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTE4NTUiPkJ1ZyA5MTg1NTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dDcmVh
dGVkIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjcz
OSI+QnVnIDkyNzM5PC9hPjwvbGk+CiAgICAgPGxpPm5hbWVkRmxvd1JlbW92ZWQgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5Ij5CdWcgOTI3Mzk8
L2E+PC9saT4KKyAgICA8bGk+cmVnaW9uTGF5b3V0VXBkYXRlZCA8YSBocmVmPSJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMiPkJ1ZyA5MzQ0MzwvYT48L2xpPgog
PC91bD4KIDwvcD4KIApAQCAtMjE2LDggKzI0MSwxMCBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNv
bW1hbmRzIGFuZCBldmVudHM6CiA8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIi
PjwvZGl2PgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAot
PGFydGljbGUgc3R5bGU9Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgotPGRp
diBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3czIj48L2Rpdj4KKzxhcnRpY2xlIHN0eWxl
PSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPgorICAgIFRoaXMgdGV4dCBpcyBmcm9tIENTUyBO
YW1lZCBGbG93ICJmbG93MyIuCis8L2FydGljbGU+Cis8ZGl2IGlkPSJyZWdpb24zIiBzdHlsZT0i
LXdlYmtpdC1mbG93LWZyb206IGZsb3czOyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiA1cHgiPjwvZGl2
PgogCiA8ZGl2IGlkPSJmYWtlLWRvY3VtZW50Ij48L2Rpdj4KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3NGQz
OWQuLjkxMzkxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMi0wOS0wNSAgQW5k
cmVpIFBvZW5hcnUgIDxwb2VuYXJ1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBQcm90b2NvbCBFeHRlbnNpb246IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCAicmVnaW9u
TGF5b3V0VXBkYXRlIiBldmVudCB0byB0aGUgcHJvdG9jb2wuCisKKyAgICAgICAgUmVtb3ZlZCAi
Z2V0Rmxvd0J5TmFtZSIgZnJvbSBwcm90b2NvbC4KKworICAgICAgICBUaGUgZnJvbnQtZW5kIGtl
ZXBzIGluIHN5bmMgdGhlIHJlcXVlc3RlZCBOYW1lZCBGbG93IENvbGxlY3Rpb25zLgorCisgICAg
ICAgIE1vZGlmaWVkIGV4aXN0aW5nIHRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3Nz
LXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxv
d1dpdGhOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmRpc2Nh
cmROYW1lZEZsb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoVXBkYXRlUmVn
aW9uTGF5b3V0VGFzayk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNr
OjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZVJl
Z2lvbkxheW91dFRhc2s6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29y
ZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6c2NoZWR1bGVGb3IpOgorICAgICAgICAoV2ViQ29y
ZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6b25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NT
QWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpyZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZs
b3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFJlbW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlv
dXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMuY2Fs
bGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdl
dE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFtZUFzeW5jLmNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5bmMp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZs
b3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlw
ZS5fbmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuX3JlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVh
dGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1l
ZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3Rv
dHlwZS5yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZs
b3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLmFwcGVuZE5hbWVk
Rmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5
cGUucmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xs
ZWN0aW9uLnByb3RvdHlwZS5mbG93QnlOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisKIDIwMTItMDktMDUgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgU2hhZG93Um9vdC5j
bG9uZU5vZGUoKSBtdXN0IGFsd2F5cyB0aHJvdyBhIERBVEFfQ0xPTkVfRVJSIGV4Y2VwdGlvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCAxNTg4ZmM2
Li41NTQ3NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3Bw
CkBAIC04MSw3ICs4MSw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dD
b2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nCiAgICAgUmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKHRoaXMsIGZs
b3dOYW1lKTsKICAgICBtX25hbWVkRmxvd3MuYWRkKG5ld0Zsb3cuZ2V0KCkpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmV3
Rmxvdy0+bmFtZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5h
bWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LmdldCgpKTsKIAogICAgIHJldHVybiBuZXdGbG93
LnJlbGVhc2UoKTsKIH0KQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9u
OjpkaXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogICAgIEFTU0VS
VChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVs
bCk7CiAgICAgQVNTRVJUKG1fbmFtZWRGbG93cy5jb250YWlucyhuYW1lZEZsb3cpKTsKIAotICAg
IG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmFtZWRGbG93KTsKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KG1fZG9jdW1lbnQs
IG5hbWVkRmxvdy0+bmFtZSgpKTsKKyAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7
CiB9CiAKIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnREZXN0cm95ZWQoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IGUyZGUzMzAuLmMxZTI2NWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTI0MTIsMTggKzI0
MTIsNiBAQAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9u
IjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3dzIGZyb20gdGhlIGRvY3VtZW50LiIsCiAgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0Rmxvd0J5TmFtZSIsCi0gICAgICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnRO
b2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVu
dCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk5hbWVkIEZsb3cgaWRlbnRpZmllci4iIH0K
LSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIs
ICJkZXNjcmlwdGlvbiI6ICJBIE5hbWVkIEZsb3cuIiB9Ci0gICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvdyBpZGVu
dGlmaWVkIGJ5IHRoZSBnaXZlbiBuYW1lIiwKLSAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1
ZQogICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwpAQCAtMjQ0
MSw4ICsyNDI5LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJu
YW1lZEZsb3dDcmVhdGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5O
b2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ci
LCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAg
IF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBG
bG93IGlzIGNyZWF0ZWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjQ1
MSwxMCArMjQzOCwxOCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd1JlbW92
ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJmbG93TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5h
bWVkIEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFzc29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQg
cmVnaW9ucy4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlZ2lvbkxheW91dFVw
ZGF0ZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgTmFtZWQgRmxvdyB3aG9zZSBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iIH0K
KyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJl
cyB3aGVuIGEgTmFtZWQgRmxvdydzIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLiIsCisgICAgICAg
ICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRl
eCAyNGM3MTk3Li5iZGFjZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTIyNiw2ICsyMjYsNDIgQEAgUGFzc1JlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JP
YmplY3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAorY2xhc3MgVXBkYXRlUmVn
aW9uTGF5b3V0VGFzayB7CitwdWJsaWM6CisgICAgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayhJbnNw
ZWN0b3JDU1NBZ2VudCopOworICAgIHZvaWQgc2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93Kiwg
aW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICB2b2lkIHJlc2V0KCkgeyBtX3RpbWVyLnN0b3AoKTsg
fQorICAgIHZvaWQgb25UaW1lcihUaW1lcjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiopOworCitw
cml2YXRlOgorICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2Nzc0FnZW50OworICAgIFRpbWVyPFVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdGltZXI7CisgICAgSGFzaE1hcDxXZWJLaXROYW1lZEZs
b3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKK307CisKK1VwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OlVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50KQorICAgIDog
bV9jc3NBZ2VudChjc3NBZ2VudCkKKyAgICAsIG1fdGltZXIodGhpcywgJlVwZGF0ZVJlZ2lvbkxh
eW91dFRhc2s6Om9uVGltZXIpCit7Cit9CisKK3ZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6
c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJ
ZCkKK3sKKyAgICBtX25hbWVkRmxvd3MuYWRkKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwor
CisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KDApOworfQorCit2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIoVGltZXI8
VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4qKQoreworICAgIC8vIFRoZSB0aW1lciBpcyBzdG9wcGVk
IG9uIG1fY3NzQWdlbnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUg
Y2FsbGVkIGFmdGVyIG1fY3NzQWdlbnQgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIGZvciAoSGFz
aE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+OjppdGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5i
ZWdpbigpLCBlbmQgPSBtX25hbWVkRmxvd3MuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAg
ICAgbV9jc3NBZ2VudC0+cmVnaW9uTGF5b3V0VXBkYXRlZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQp
OworCisgICAgbV9uYW1lZEZsb3dzLmNsZWFyKCk7Cit9CisKIGNsYXNzIEluc3BlY3RvckNTU0Fn
ZW50OjpTdHlsZVNoZWV0QWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3R5bGVTaGVldEFjdGlvbik7CiBwdWJsaWM6CkBA
IC01MTgsNiArNTU0LDggQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogICAgIG1f
bm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwogICAgIG1fZG9jdW1lbnRUb0luc3Bl
Y3RvclN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVz
dGVkLmNsZWFyKCk7CisgICAgaWYgKG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzaykKKyAgICAgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5yZXNldCgpOwogICAgIHJlc2V0UHNldWRvU3RhdGVz
KCk7CiB9CiAKQEAgLTUzNywyMiArNTc1LDQzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Om1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVuZC0+bWVkaWFRdWVyeVJl
c3VsdENoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFt
ZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJZCA9IG1fZG9t
QWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1l
ZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgIGludCBkb2N1
bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsK
KyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250
ZW5kLT5uYW1lZEZsb3dDcmVhdGVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7CisgICAgRXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7CisgICAgbV9mcm9udGVuZC0+bmFtZWRGbG93Q3JlYXRlZChidWls
ZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2Rl
SWQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkUmVtb3ZlTmFtZWRGbG93KERv
Y3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFub2RlSWQgfHwgIW1fbmFtZWRGbG93Q29s
bGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKKyAgICBpbnQgZG9jdW1lbnROb2Rl
SWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChkb2N1bWVudCk7CisgICAgaWYg
KCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZC0+bmFt
ZWRGbG93UmVtb3ZlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmQtPm5h
bWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygp
KTsKK30KKwordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERv
Y3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisgICAgaW50
IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1l
bnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
ICghbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQorICAgICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91
dFRhc2sgPSBhZG9wdFB0cihuZXcgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayh0aGlzKSk7CisgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5zY2hlZHVsZUZvcihuYW1lZEZsb3csIGRvY3VtZW50
Tm9kZUlkKTsKK30KKwordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRl
ZChXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQoreworICAg
IGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRl
TnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7Cisg
ICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBkYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxv
dygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKIH0KIAogYm9vbCBJ
bnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NT
ZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKQpAQCAtODI4LDMyICs4ODcsMTYgQEAgdm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBkb2MKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9uYW1lZEZsb3dD
b2xsZWN0aW9uc1JlcXVlc3RlZC5hZGQoZG9jdW1lbnROb2RlSWQpOworCiAgICAgVmVjdG9yPFJl
ZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRGbG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1l
ZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5
cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFy
cmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNyZWF0ZSgpOwogCi0KICAgICBmb3Ig
KFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxv
d3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAg
ICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0
cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwogCiAgICAgcmVzdWx0ID0gbmFtZWRG
bG93cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5h
bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0
cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1
bHQpCi17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1l
bnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBXZWJLaXROYW1lZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRv
Y3VtZW50LT5uYW1lZEZsb3dzKCktPmZsb3dCeU5hbWUoZmxvd05hbWUpOwotICAgIGlmICghd2Vi
a2l0TmFtZWRGbG93KSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5h
bWVkIEZsb3cgZm91bmQiOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPFdl
YktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKHdlYmtpdE5hbWVkRmxvdyk7Ci0gICAgcmVzdWx0ID0g
YnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIHdlYmtpdE5hbWVkRmxvdywgZG9j
dW1lbnROb2RlSWQpOwotfQotCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9y
UHJvZmlsZXIoRXJyb3JTdHJpbmcqKQogewogICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9
IGFkb3B0UHRyKG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7CkBAIC05MzMsNiArOTc2LDE1IEBAIEVs
ZW1lbnQqIEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIHJldHVybiB0b0VsZW1lbnQobm9kZSk7CiB9CiAKK2lu
dCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9j
dW1lbnQqIGRvY3VtZW50KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQt
PmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25h
bWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7Cit9CisKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0LCBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVl
dEhlYWRlcj4qIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JT
dHlsZVNoZWV0ID0gYmluZFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0
eWxlU2hlZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmgKaW5kZXggZmUxYTNiMS4uODhlNmYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNz
IE5vZGVMaXN0OwogY2xhc3MgU2VsZWN0b3JQcm9maWxlOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsK
K2NsYXNzIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQog
CkBAIC05OSw4ICsxMDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgbWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1l
bnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRG
bG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCB3aWxsUmVtb3ZlTmFt
ZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCBkaWRVcGRhdGVS
ZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIHJlZ2lv
bkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
Q29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7CiAgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0
eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiYgYXR0cmlidXRlcyk7CkBAIC0xMTYsNyArMTE5LDYgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRy
PFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+ID4m
IHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9D
bGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0
cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmlu
ZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQp
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyop
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJl
ZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+Jik7CkBAIC0xNDUsNiArMTQ3
LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSog
YXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVs
ZW1lbnRGb3JJZChFcnJvclN0cmluZyosIGludCBub2RlSWQpOworICAgIGludCBkb2N1bWVudE5v
ZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCopOwogICAgIHZvaWQgY29sbGVjdFN0eWxl
U2hlZXRzKENTU1N0eWxlU2hlZXQqLCBUeXBlQnVpbGRlcjo6QXJyYXk8V2ViQ29yZTo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxl
U2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKQEAgLTE3Niw2ICsxNzksNyBA
QCBwcml2YXRlOgogICAgIERvY3VtZW50VG9WaWFJbnNwZWN0b3JTdHlsZVNoZWV0IG1fZG9jdW1l
bnRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZSBt
X25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAgICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93
Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7CisgICAgT3duUHRyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+
IG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKIAogICAgIGludCBtX2xhc3RTdHlsZVNoZWV0SWQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKaW5kZXggNDFiN2JjOC4uMTQxYzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTIzMSwx
NiArMjMxLDIyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93
Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1CiAgICAgICAgIGRvbUFnZW50LT53
aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogICAgIGlmIChJbnNwZWN0
b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NB
Z2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBu
YW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFt
ZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5h
bWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1l
ZEZsb3cqIG5hbWVkRmxvdykKIHsKICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3Nz
QWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIGNzc0Fn
ZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cpOworfQorCit2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQs
IFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQoreworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2Vu
dCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQor
ICAgICAgICBjc3NBZ2VudC0+ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50LCBuYW1lZEZs
b3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNv
bnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApp
bmRleCBjMjVkMzcyLi4yMzczNjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMTMsOCArMTEzLDkgQEAgcHVibGlj
OgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9v
dCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNo
YWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQq
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5h
bWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGlj
IHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7Cisg
ICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVk
RmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCos
IFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVs
ZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdz
KTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzKFBhZ2UqKTsKQEAgLTI5MCw4ICsy
OTEsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRv
d1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290
Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlk
Q3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxv
d0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2
b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVu
dCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxh
eW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93
Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZs
YWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzKik7CkBAIC01NjEsMjEgKzU2MywzMCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvbwog
I2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZs
b3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lk
KCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkQ3Jl
YXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7Cisg
ICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1l
bnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cq
IG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50
KSkKLSAgICAgICAgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBk
b2N1bWVudCwgbmFtZSk7CisgICAgICAgIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOworI2VuZGlmCit9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3Vt
ZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisjaWYgRU5BQkxF
KElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZFVwZGF0ZVJlZ2lv
bkxheW91dEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAj
ZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyMDY5NWIuLmEzYTRiMzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTM5LDYg
KzM5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwgPSBmdW5jdGlvbigpCiAgICAgV2Vi
SW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50
LkV2ZW50cy5VbmRvUmVkb1JlcXVlc3RlZCwgdGhpcy5fdW5kb1JlZG9SZXF1ZXN0ZWQsIHRoaXMp
OwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9Db21wbGV0ZWQsIHRoaXMuX3VuZG9SZWRvQ29tcGxl
dGVkLCB0aGlzKTsKICAgICB0aGlzLl9yZXNvdXJjZUJpbmRpbmcgPSBuZXcgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7CisgICAgdGhpcy5fbmFtZWRGbG93
Q29sbGVjdGlvbnMgPSB7fTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5f
cmVzZXROYW1lZEZsb3dDb2xsZWN0aW9ucywgdGhpcyk7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyKHRoaXMp
KTsKICAgICBDU1NBZ2VudC5lbmFibGUoKTsKIH0KQEAgLTU4LDcgKzYwLDggQEAgV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewogICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5
bGVTaGVldENoYW5nZWQiLAogICAgIE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVy
eVJlc3VsdENoYW5nZWQiLAogICAgIE5hbWVkRmxvd0NyZWF0ZWQ6ICJOYW1lZEZsb3dDcmVhdGVk
IiwKLSAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIKKyAgICBOYW1lZEZs
b3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIsCisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDog
IlJlZ2lvbkxheW91dFVwZGF0ZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnBy
b3RvdHlwZSA9IHsKQEAgLTE3MiwxMCArMTc1LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9k
ZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9y
Lk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKE9iamVj
dCl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3lu
YzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCisgICAgZ2V0TmFtZWRGbG93Q29sbGVj
dGlvbkFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsK
KyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0
aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAgIGlmIChuYW1lZEZsb3dDb2xsZWN0aW9uKSB7
CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29sbGVjdGlvbi5uYW1lZEZsb3dN
YXApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgLyoqCiAgICAg
ICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9
IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IK
QEAgLTE4NSwxMSArMTk0LDE0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXls
b2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5w
YXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXlsb2FkKSk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuTmFtZWRGbG93Q29sbGVjdGlvbihuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAg
ICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0gPSBuYW1lZEZsb3dD
b2xsZWN0aW9uOworICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0
aW9uLm5hbWVkRmxvd01hcCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBD
U1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlz
LCB1c2VyQ2FsbGJhY2spKTsKKyAgICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlv
bihkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC0xOTcsMjIgKzIwOSwyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5zcGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxs
YmFjawogICAgICAqLwotICAgIGdldEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24obm9kZUlkLCBm
bG93TmFtZSwgdXNlckNhbGxiYWNrKQorICAgIGdldEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24o
ZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCB1c2VyQ2FsbGJhY2spCiAgICAgeworICAgICAgICB2
YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3Vt
ZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAg
ICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLmZsb3dCeU5hbWUoZmxvd05hbWUp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8qKgogICAgICAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNwZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxi
YWNrCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAgICAgICAg
KiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZsb3c9fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAg
ICAqIEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxvdz19IG5hbWVkRmxvd01hcAogICAgICAgICAg
Ki8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRG
bG93UGF5bG9hZCkKKyAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBuYW1l
ZEZsb3dNYXApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93
UGF5bG9hZCkKKyAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93TWFwKQogICAgICAg
ICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQo
bmFtZWRGbG93UGF5bG9hZCkpOworICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayh0aGlzLl9u
YW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0uZmxvd0J5TmFtZShmbG93TmFtZSkp
OwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdlbnQuZ2V0Rmxvd0J5TmFtZShub2RlSWQsIGZs
b3dOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOworICAgICAgICB0aGlz
LmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmlu
ZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zNTAsNTEgKzM2
Nyw0OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJ
ZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5O
YW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAgICBfbmFtZWRGbG93Q3JlYXRl
ZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgX25hbWVkRmxvd0NyZWF0ZWQ6
IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuaGFz
RXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxv
d0NyZWF0ZWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8qKgotICAgICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSByb290Ci0gICAgICAgICovCi0gICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGlu
IHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJv
b3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgbmFtZWRGbG93ID0g
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCk7Cisg
ICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlv
bnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsKIAotICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVk
Rmxvd0NyZWF0ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLCBuYW1lOiBuYW1l
IH0pOwotICAgICAgICB9CisgICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKKyAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERv
Y3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBuYW1lZEZsb3dDb2xsZWN0aW9u
LmFwcGVuZE5hbWVkRmxvdyhuYW1lZEZsb3cpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3Jl
YXRlZCwgbmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01B
Z2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAgICAgKi8KLSAgICBfbmFtZWRGbG93
UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgX25hbWVkRmxvd1Jl
bW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9u
ID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdOworCisgICAgICAg
IGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICAvKioKLSAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Eb2N1bWVudH0gcm9vdAot
ICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyb290KQotICAgICAgICB7Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVudCB3ZSBvbmx5IHdhbnQgc3VwcG9ydCBm
b3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1bWVudAotICAgICAgICAgICAgaWYgKGRvY3Vt
ZW50Tm9kZUlkICE9PSByb290LmlkKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
bmFtZWRGbG93Q29sbGVjdGlvbi5yZW1vdmVOYW1lZEZsb3coZmxvd05hbWUpOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQs
IGZsb3dOYW1lOiBmbG93TmFtZSB9KTsKKyAgICB9LAogCi0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFt
ZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5h
bWUgfSk7Ci0gICAgICAgIH0KKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVk
Rmxvd30gbmFtZWRGbG93UGF5bG9hZAorICAgICAqLworICAgIF9yZWdpb25MYXlvdXRVcGRhdGVk
OiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxv
dyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKG5hbWVkRmxvd1BheWxvYWQp
OworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxl
Y3Rpb25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJZF07CisKKyAgICAgICAgaWYgKCFuYW1lZEZs
b3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFdlYkluc3BlY3Rv
ci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAg
IG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRGbG93KG5hbWVkRmxvdyk7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBuYW1lZEZsb3cpOwogICAgIH0sCiAKICAgICAv
KioKQEAgLTQ2Myw2ICs0NzcsMTEgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5ncyA9IHt9OwogICAgIH0sCiAKKyAg
ICBfcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
dGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICB9LAorCiAgICAgLyoqCiAgICAg
ICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb259IHJhd0xvY2F0aW9uCiAgICAgICog
QHJldHVybiB7P1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQpAQCAtMTMyNiwyMSArMTM0NSwyOCBA
QCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAg
IC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZs
b3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5j
dGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlv
bihuYW1lZEZsb3dQYXlsb2FkKQogICAgIHsKLSAgICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVk
Rmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOworICAgICAgICB0aGlzLl9jc3NNb2Rl
bC5fbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3dQYXlsb2FkKTsKICAgICB9LAogCiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAg
ICAgKi8KLSAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFt
ZSkKKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05h
bWUpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93UmVtb3ZlZChkb2N1
bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1v
dmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICovCisg
ICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKKyAgICB7
CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9yZWdpb25MYXlvdXRVcGRhdGVkKG5hbWVkRmxvd1Bh
eWxvYWQpOwogICAgIH0KIH0KIApAQCAtMTM1MCw3ICsxMzc2LDcgQEAgV2ViSW5zcGVjdG9yLkNT
U0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICovCiBXZWJJbnNwZWN0b3IuTmFtZWRGbG93ID0g
ZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICB0aGlzLm5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnRO
b2RlSWQ7CisgICAgdGhpcy5kb2N1bWVudE5vZGVJZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7
CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRoaXMub3ZlcnNldCA9IHBheWxv
YWQub3ZlcnNldDsKICAgICB0aGlzLmNvbnRlbnQgPSBwYXlsb2FkLmNvbnRlbnQ7CkBAIC0xMzY3
LDIwICsxMzkzLDQ5IEBAIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkID0gZnVu
Y3Rpb24ocGF5bG9hZCkKIH0KIAogLyoqCi0gKiBAcGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFt
ZWRGbG93Pj19IG5hbWVkRmxvd1BheWxvYWQKLSAqIEByZXR1cm4gez9BcnJheS48V2ViSW5zcGVj
dG9yLk5hbWVkRmxvdz59CisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7QXJyYXkuPENTU0Fn
ZW50Lk5hbWVkRmxvdz59IHBheWxvYWQKICAqLwotV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJz
ZVBheWxvYWRBcnJheSA9IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCitXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93Q29sbGVjdGlvbiA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7Ci0gICAgaWYgKCFuYW1l
ZEZsb3dQYXlsb2FkKQotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB0aGlzLm5hbWVkRmxvd01h
cCA9IHt9OwogCi0gICAgdmFyIHBhcnNlZEFycmF5ID0gW107Ci0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBuYW1lZEZsb3dQYXlsb2FkLmxlbmd0aDsgKytpKQotICAgICAgICBwYXJzZWRBcnJheVtp
XSA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKG5hbWVkRmxvd1BheWxvYWRb
aV0pOwotICAgIHJldHVybiBwYXJzZWRBcnJheTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
eWxvYWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvdyA9IFdlYkluc3BlY3Rv
ci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKHBheWxvYWRbaV0pOworICAgICAgICB0aGlzLm5hbWVk
Rmxvd01hcFtuYW1lZEZsb3cubmFtZV0gPSBuYW1lZEZsb3c7CisgICAgfQogfQogCitXZWJJbnNw
ZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fSBuYW1lZEZsb3cKKyAgICAgKi8KKyAgICBh
cHBlbmROYW1lZEZsb3c6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAgICB7CisgICAgICAgIHRoaXMu
bmFtZWRGbG93TWFwW25hbWVkRmxvdy5uYW1lXSA9IG5hbWVkRmxvdzsKKyAgICB9LAorCisgICAg
LyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCisgICAgICovCisgICAgcmVtb3Zl
TmFtZWRGbG93OiBmdW5jdGlvbihmbG93TmFtZSkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlz
Lm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBmbG93TmFtZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5OYW1lZEZs
b3d9CisgICAgICovCisgICAgZmxvd0J5TmFtZTogZnVuY3Rpb24oZmxvd05hbWUpCisgICAgewor
ICAgICAgICB2YXIgbmFtZWRGbG93ID0gdGhpcy5uYW1lZEZsb3dNYXBbZmxvd05hbWVdOworCisg
ICAgICAgIGlmICghbmFtZWRGbG93KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAg
IHJldHVybiBuYW1lZEZsb3c7CisgICAgfQorfQogLyoqCiAgKiBAdHlwZSB7V2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWx9CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNGU4M2NjYS4uNzQ2MWY0MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZsb3dUaHJlYWQuaCIKIAogI2lu
Y2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgpAQCAtMzU3LDYgKzM1OCw3IEBA
IGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpmbG93VGhyZWFkTmFt
ZSgpIGNvbnN0CiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlv
dXRVcGRhdGVFdmVudCgpCiB7CiAgICAgUmVuZGVyRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25M
YXlvdXRVcGRhdGVFdmVudCgpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBk
YXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50KCksIG1fbmFtZWRGbG93LmdldCgpKTsKIAogICAgIGlm
ICghbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0aXZlKCkgJiYgbV9uYW1lZEZs
b3ctPmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIG1fcmVnaW9uTGF5b3V0VXBkYXRlRXZl
bnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162476</attachid>
            <date>2012-09-06 04:46:50 -0700</date>
            <delta_ts>2012-09-06 09:48:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>42166</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZjNjZDVmLi41MjhmYWU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MDYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMDYgIEFkYW0gQmFydGggIDxhYmFydGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFRocmVlIFhTTFRQcm9jZXNzb3IgZnVuY3Rpb25zIGRvbid0IG5lZWQgdG8gYmUgW0N1c3RvbV0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJl
Z2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxl
cy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKaW5kZXggN2M4MmI0
OC4uOWZlOWNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90
b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50
eHQKQEAgLTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uIEJ1ZyA5MTYwNwogZ2V0
Rmxvd0J5TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQgQnVnIDkyNzM5CiBuYW1lZEZs
b3dSZW1vdmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRlZCBCdWcgOTM0NDMKK1RoaXMg
dGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAKIAotUnVubmluZzogdGVzdEdl
dE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlv
bgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50ID09PQogKiBOYW1lZCBGbG93
ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIzICsyMCwyNiBAQCBSZWdpb25z
OiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAKLVJ1bm5pbmc6IHRlc3RHZXRO
YW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb25X
aXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3VtZW50
ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQKIAotUnVubmluZzogdGVzdEdl
dEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZQogPT09IE5hbWVkIEZsb3cg
ImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVkIEZsb3cgImZsb3cyIgogQ29u
dGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFt
ZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lCiA9PT0gTmFtZSBG
bG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhlcmUgaXMgbm8gTmFtZWQgRmxv
dyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5pbmc6IHRlc3ROYW1lZEZsb3dD
cmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93IgogCitSdW5uaW5nOiB0ZXN0
UmVnaW9uTGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRlZDogImZsb3czIgorCiBSdW5u
aW5nOiB0ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVtb3ZlZDogInRtcE5hbWVkRmxv
dyIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1j
c3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9w
cm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4IGQ4MzRjMmEuLjQwZWY2OTEg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJl
Z2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3By
b3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTIxLDI0ICsyMSwzMiBAQCBmdW5j
dGlvbiBjcmVhdGVEeW5hbWljRWxlbWVudHMoKQogZnVuY3Rpb24gY3JlYXRlTmFtZWRGbG93KCkK
IHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImFydGljbGUiKTsK
KyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisKICAgICBhcnRp
Y2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5bGUud2Via2l0Rmxvd0ludG8g
PSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyItd2Via2l0LWZsb3ctaW50byJd
ID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29udGVudCA9ICJUaGlzIHRleHQg
aXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wiIjsKKworICAgIGRpdi5pZCA9
ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93LWZyb20iXSA9ICJ0bXBOYW1l
ZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4IjsKKyAgICBkaXYuc3R5bGVb
IndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGFydGlj
bGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKIH0KIAogZnVuY3Rpb24g
cmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFy
dGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBmdW5jdGlvbiB0ZXN0KCkKIHsK
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIpOwogICAgIEluc3BlY3RvclRl
c3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxl
Y3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9u
KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1
ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTQ3LDE2ICs1NSwyMCBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0TmFt
ZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50LmlkLCBuYW1lZEZsb3dDYWxsYmFjayk7CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5h
bWVkRmxvd3MpCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZs
b3dNYXApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9PT0iKTsKIAotICAg
ICAgICAgICAgICAgIGlmICghbmFtZWRGbG93cykgeworICAgICAgICAgICAgICAgIGlmICghbmFt
ZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJbIV0gRmFpbGVkIHRvIGdldCBOYW1lZCBGbG93cyIpOwogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAgbmFtZWRGbG93cyA9IFtdOwor
ICAgICAgICAgICAgICAgIGZvciAodmFyIGZsb3dOYW1lIGluIG5hbWVkRmxvd01hcCkKKyAgICAg
ICAgICAgICAgICAgICAgbmFtZWRGbG93cy5wdXNoKG5hbWVkRmxvd01hcFtmbG93TmFtZV0pOwor
CiAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5zb3J0KGZ1bmN0aW9uIChuZjEsIG5mMikgewog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChuZjEubmFtZSA9PSBuZjIubmFtZSkgPyAwIDog
KChuZjEubmFtZSA+IG5mMi5uYW1lKSA/IDEgOiAtMSkpOwogICAgICAgICAgICAgICAgIH0pOwpA
QCAtNjgsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIobmV4dCkK
KyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERv
Y3VtZW50KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2Vu
dC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTgyLDExICs5NCwxMSBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
Z2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFtZWRGbG93Q2FsbGJhY2spOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZsb3dDYWxsYmFjayhu
YW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2FsbGJhY2sobmFtZWRG
bG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRvY3VtZW50ID09PSIpOwogCi0g
ICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAgICAgICAgICAgICBpZiAobmFt
ZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJbIV0gRmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzEwOSw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0gICAgICAgIGZ1
bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0
Rmxvd0J5TmFtZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
QWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC0xMjIsNyArMTM0
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKLSAgICAg
ICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUyKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRl
c3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lKG5leHQpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFj
ayk7CiAKQEAgLTE1MywxNSArMTY1LDI5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVk
Rmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAotICAgICAgICAgICAgICAgIGlmIChldmVu
dC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7Ci0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBm
dW5jdGlvbiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZChuZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlZCwgY2FsbGJhY2ssIHRoaXMp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoXCJyZWdpb24zXCIpLnN0eWxlW1wid2lkdGhcIl0gPSBcIjIwMHB4XCIiKTsK
KworICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gImZsb3czIikKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dDcmVhdGVkOiBcInRtcE5hbWVkRmxv
d1wiIik7CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVw
ZGF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJSZWdpb25MYXlvdXRVcGRhdGVkOiBcImZsb3czXCIiKTsKICAgICAgICAgICAg
ICAgICBuZXh0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0xNzMsMTIgKzE5OSwx
MCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZl
bnQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVs
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5h
bWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKLSAgICAgICAgICAgICAgICBpZiAoZXZl
bnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikgewotICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0gICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRh
dGEuZmxvd05hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZl
bnRzLk5hbWVkRmxvd1JlbW92ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJOYW1lZEZsb3dSZW1vdmVkOiBcInRtcE5hbWVkRmxv
d1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwpAQCAtMjA0LDYgKzIyOCw3IEBAIFRlc3Rz
IHRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYW5kIGV2ZW50czoKICAgICA8bGk+Z2V0Rmxvd0J5TmFt
ZSA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE4NTUi
PkJ1ZyA5MTg1NTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dDcmVhdGVkIDxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9h
PjwvbGk+CiAgICAgPGxpPm5hbWVkRmxvd1JlbW92ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNzM5Ij5CdWcgOTI3Mzk8L2E+PC9saT4KKyAgICA8
bGk+cmVnaW9uTGF5b3V0VXBkYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM0NDMiPkJ1ZyA5MzQ0MzwvYT48L2xpPgogPC91bD4KIDwvcD4KIApA
QCAtMjE2LDggKzI0MSwxMCBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVu
dHM6CiA8ZGl2IHN0eWxlPSItd2Via2l0LWZsb3ctZnJvbTogZmxvdzIiPjwvZGl2PgogPGRpdiBz
dHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48L2Rpdj4KIAotPGFydGljbGUgc3R5bGU9
Ii13ZWJraXQtZmxvdy1pbnRvOiBmbG93MyI+PC9hcnRpY2xlPgotPGRpdiBzdHlsZT0iLXdlYmtp
dC1mbG93LWZyb206IGZsb3czIj48L2Rpdj4KKzxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ct
aW50bzogZmxvdzMiPgorICAgIFRoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93
MyIuCis8L2FydGljbGU+Cis8ZGl2IGlkPSJyZWdpb24zIiBzdHlsZT0iLXdlYmtpdC1mbG93LWZy
b206IGZsb3czOyBoZWlnaHQ6IDIwcHg7IHdpZHRoOiA1cHgiPjwvZGl2PgogCiA8ZGl2IGlkPSJm
YWtlLWRvY3VtZW50Ij48L2Rpdj4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA5NDJlNmYuLmNkMDI0OGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMi0wOS0wNiAgQW5kcmVpIFBvZW5hcnUgIDxw
b2VuYXJ1QGFkb2JlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm90b2NvbCBFeHRl
bnNpb246IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBldmVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM0NDMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCAicmVnaW9uTGF5b3V0VXBkYXRlIiBl
dmVudCB0byB0aGUgcHJvdG9jb2wuCisKKyAgICAgICAgUmVtb3ZlZCAiZ2V0Rmxvd0J5TmFtZSIg
ZnJvbSBwcm90b2NvbC4KKworICAgICAgICBUaGUgZnJvbnQtZW5kIGtlZXBzIGluIHN5bmMgdGhl
IHJlcXVlc3RlZCBOYW1lZCBGbG93IENvbGxlY3Rpb25zLgorCisgICAgICAgIE1vZGlmaWVkIGV4
aXN0aW5nIHRlc3Q6IGluc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFu
ZHMuaHRtbAorCisgICAgICAgICogZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhOYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1lZEZsb3cpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoVXBkYXRlUmVnaW9uTGF5b3V0VGFzayk6
CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNrOjpyZXNldCk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6
OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlUmVnaW9u
TGF5b3V0VGFzazo6c2NoZWR1bGVGb3IpOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlUmVnaW9u
TGF5b3V0VGFzazo6b25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0
ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJl
bW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
VXBkYXRlUmVnaW9uTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpyZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0Fn
ZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxv
d0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRV
cGRhdGVSZWdpb25MYXlvdXRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZs
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVt
b3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMuY2FsbGJhY2spOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5hbWVkRmxvd0NvbGxl
Y3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuZ2V0Rmxvd0J5TmFtZUFzeW5jLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5bmMpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dDcmVhdGVkKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fbmFtZWRGbG93UmVt
b3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuX3Jl
Z2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
cHJvdG90eXBlLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dSZW1vdmVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5yZWdpb25MYXlv
dXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLmFwcGVuZE5hbWVkRmxvdyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5cGUucmVtb3ZlTmFtZWRG
bG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlw
ZS5mbG93QnlOYW1lKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5hbWVkRmxvd1RocmVhZDo6ZGlzcGF0Y2hS
ZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisKIDIwMTItMDktMDYgIEFkYW0gQmFydGggIDxhYmFy
dGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRocmVlIFhTTFRQcm9jZXNzb3IgZnVuY3Rpb25z
IGRvbid0IG5lZWQgdG8gYmUgW0N1c3RvbV0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcAppbmRleCAxNTg4ZmM2Li41NTQ3NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCkBAIC04MSw3ICs4MSw3IEBAIFBhc3NSZWZQdHI8
V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xsZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUo
Y29uc3QgU3RyaW5nCiAgICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktp
dE5hbWVkRmxvdzo6Y3JlYXRlKHRoaXMsIGZsb3dOYW1lKTsKICAgICBtX25hbWVkRmxvd3MuYWRk
KG5ld0Zsb3cuZ2V0KCkpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmV3Rmxvdy0+bmFtZSgpKTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93Lmdl
dCgpKTsKIAogICAgIHJldHVybiBuZXdGbG93LnJlbGVhc2UoKTsKIH0KQEAgLTk1LDkgKzk1LDkg
QEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVk
RmxvdyogbmFtZWRGbG93KQogICAgIEFTU0VSVChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdl
YktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7CiAgICAgQVNTRVJUKG1fbmFtZWRGbG93cy5j
b250YWlucyhuYW1lZEZsb3cpKTsKIAotICAgIG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3cobV9k
b2N1bWVudCwgbmFtZWRGbG93KTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVtb3ZlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5hbWVkRmxvdy0+bmFtZSgpKTsKKyAgICBtX25h
bWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7CiB9CiAKIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlv
bjo6ZG9jdW1lbnREZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCmluZGV4IGUyZGUzMzAuLmMxZTI2NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yLmpzb24KQEAgLTI0MTIsMTggKzI0MTIsNiBAQAogICAgICAgICAgICAgICAgIF0sCiAg
ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3dzIGZy
b20gdGhlIGRvY3VtZW50LiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKLSAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAiZ2V0Rmxv
d0J5TmFtZSIsCi0gICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwg
ImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
Ik5hbWVkIEZsb3cgaWRlbnRpZmllci4iIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVk
RmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlwdGlvbiI6ICJBIE5hbWVkIEZsb3cu
IiB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
UmV0dXJucyB0aGUgTmFtZWQgRmxvdyBpZGVudGlmaWVkIGJ5IHRoZSBnaXZlbiBuYW1lIiwKLSAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdLAog
ICAgICAgICAiZXZlbnRzIjogWwpAQCAtMjQ0MSw4ICsyNDI5LDcgQEAKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dDcmVhdGVkIiwKICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1
bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRv
Y3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVk
RmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRo
ZSBuZXcgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1l
ZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBOYW1l
ZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIGNyZWF0ZWQuIiwKICAgICAgICAgICAg
ICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjQ1MSwxMCArMjQzOCwxOCBAQAogICAgICAgICAgICAg
ICAgICJuYW1lIjogIm5hbWVkRmxvd1JlbW92ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0
ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwg
IiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBp
ZC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFt
ZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmbG93TmFtZSIsICJ0
eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVk
IE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFz
c29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQgcmVnaW9ucy4iLAogICAgICAgICAgICAgICAgICJo
aWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICJuYW1lIjogInJlZ2lvbkxheW91dFVwZGF0ZWQiLAorICAgICAgICAgICAgICAgICJwYXJh
bWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIk
cmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlwdGlvbiI6ICJUaGUgTmFtZWQgRmxvdyB3aG9zZSBs
YXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iIH0KKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdydzIGxheW91dCBt
YXkgaGF2ZSBjaGFuZ2VkLiIsCisgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAg
ICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAyNGM3MTk3Li5iZGFjZmNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAgLTIyNiw2ICsy
MjYsNDIgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNl
bGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKIH0KIAorY2xhc3MgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayB7CitwdWJsaWM6CisgICAg
VXBkYXRlUmVnaW9uTGF5b3V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCopOworICAgIHZvaWQgc2No
ZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKKyAgICB2b2lk
IHJlc2V0KCkgeyBtX3RpbWVyLnN0b3AoKTsgfQorICAgIHZvaWQgb25UaW1lcihUaW1lcjxVcGRh
dGVSZWdpb25MYXlvdXRUYXNrPiopOworCitwcml2YXRlOgorICAgIEluc3BlY3RvckNTU0FnZW50
KiBtX2Nzc0FnZW50OworICAgIFRpbWVyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdGltZXI7
CisgICAgSGFzaE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKK307CisK
K1VwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9y
Q1NTQWdlbnQqIGNzc0FnZW50KQorICAgIDogbV9jc3NBZ2VudChjc3NBZ2VudCkKKyAgICAsIG1f
dGltZXIodGhpcywgJlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIpCit7Cit9CisKK3Zv
aWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiBu
YW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKK3sKKyAgICBtX25hbWVkRmxvd3MuYWRkKG5h
bWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOworCisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkp
CisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFVwZGF0ZVJlZ2lv
bkxheW91dFRhc2s6Om9uVGltZXIoVGltZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4qKQorewor
ICAgIC8vIFRoZSB0aW1lciBpcyBzdG9wcGVkIG9uIG1fY3NzQWdlbnQgZGVzdHJ1Y3Rpb24sIHNv
IHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGFmdGVyIG1fY3NzQWdlbnQgaGFzIGJl
ZW4gZGVzdHJveWVkLgorICAgIGZvciAoSGFzaE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+Ojpp
dGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5iZWdpbigpLCBlbmQgPSBtX25hbWVkRmxvd3MuZW5k
KCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgbV9jc3NBZ2VudC0+cmVnaW9uTGF5b3V0VXBk
YXRlZChpdC0+Zmlyc3QsIGl0LT5zZWNvbmQpOworCisgICAgbV9uYW1lZEZsb3dzLmNsZWFyKCk7
Cit9CisKIGNsYXNzIEluc3BlY3RvckNTU0FnZW50OjpTdHlsZVNoZWV0QWN0aW9uIDogcHVibGlj
IEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU3R5
bGVTaGVldEFjdGlvbik7CiBwdWJsaWM6CkBAIC01MTgsNiArNTU0LDggQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6cmVzZXQoKQogICAgIG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVh
cigpOwogICAgIG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBt
X25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNsZWFyKCk7CisgICAgaWYgKG1fdXBkYXRl
UmVnaW9uTGF5b3V0VGFzaykKKyAgICAgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5yZXNl
dCgpOwogICAgIHJlc2V0UHNldWRvU3RhdGVzKCk7CiB9CiAKQEAgLTUzNywyMiArNTc1LDQzIEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Om1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAg
ICAgbV9mcm9udGVuZC0+bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRl
TmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cp
CiB7Ci0gICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsK
LSAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250
YWlucyhub2RlSWQpKQorICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhS
ZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dDcmVhdGVkKG5vZGVJZCwg
bmFtZS5zdHJpbmcoKSk7CisgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAgbV9mcm9u
dGVuZC0+bmFtZWRGbG93Q3JlYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJp
bmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxv
dyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAg
IGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYg
KCFub2RlSWQgfHwgIW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9k
ZUlkKSkKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVk
Rmxvd3NJZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9mcm9udGVuZC0+bmFtZWRGbG93UmVtb3ZlZChub2RlSWQsIG5hbWUuc3Ry
aW5nKCkpOworICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQs
IG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3cpCit7CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2Rl
V2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQor
ICAgICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2sgPSBhZG9wdFB0cihuZXcgVXBkYXRlUmVn
aW9uTGF5b3V0VGFzayh0aGlzKSk7CisgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5zY2hl
ZHVsZUZvcihuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKK30KKwordm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRlZChXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywg
aW50IGRvY3VtZW50Tm9kZUlkKQoreworICAgIGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09
IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBk
YXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9j
dW1lbnROb2RlSWQpKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9T
dGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBl
KQpAQCAtODI4LDMyICs4ODcsMTYgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRG
bG93Q29sbGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2MKICAgICAgICAg
cmV0dXJuOwogCiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5hZGQoZG9jdW1l
bnROb2RlSWQpOworCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRG
bG93c1ZlY3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKICAgICBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiBu
YW1lZEZsb3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxv
dz46OmNyZWF0ZSgpOwogCi0KICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93
PiA+OjppdGVyYXRvciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRG
bG93c1ZlY3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWls
ZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJ
ZCkpOwogCiAgICAgcmVzdWx0ID0gbmFtZWRGbG93cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpCi17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gbV9kb21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlk
KTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJLaXROYW1l
ZEZsb3cqIHdlYmtpdE5hbWVkRmxvdyA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPmZsb3dCeU5h
bWUoZmxvd05hbWUpOwotICAgIGlmICghd2Via2l0TmFtZWRGbG93KSB7Ci0gICAgICAgICplcnJv
clN0cmluZyA9ICJObyB0YXJnZXQgQ1NTIE5hbWVkIEZsb3cgZm91bmQiOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKHdlYmtp
dE5hbWVkRmxvdyk7Ci0gICAgcmVzdWx0ID0gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JT
dHJpbmcsIHdlYmtpdE5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwotfQotCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKQogewogICAg
IG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZSA9IGFkb3B0UHRyKG5ldyBTZWxlY3RvclByb2ZpbGUo
KSk7CkBAIC05MzMsNiArOTc2LDE1IEBAIEVsZW1lbnQqIEluc3BlY3RvckNTU0FnZW50OjplbGVt
ZW50Rm9ySWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIHJldHVy
biB0b0VsZW1lbnQobm9kZSk7CiB9CiAKK2ludCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnRO
b2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGludCBk
b2N1bWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAgICBp
ZiAoIWRvY3VtZW50Tm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNv
bnRhaW5zKGRvY3VtZW50Tm9kZUlkKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4g
ZG9jdW1lbnROb2RlSWQ7Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHls
ZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qIHJlc3VsdCkKIHsKICAgICBJbnNw
ZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gYmluZFN0eWxlU2hlZXQoc3Rh
dGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHN0eWxlU2hlZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggZmUxYTNiMS4uODhlNmYyMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTU1LDYg
KzU1LDcgQEAgY2xhc3MgTm9kZTsKIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgU2VsZWN0b3JQcm9m
aWxlOwogY2xhc3MgU3R5bGVSZXNvbHZlcjsKK2NsYXNzIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s7
CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCkBAIC05OSw4ICsxMDAsMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgp
OwogICAgIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0
ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgdm9p
ZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
OworICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93
Kik7CisgICAgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRG
bG93Kik7CisgICAgdm9pZCBkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXRO
YW1lZEZsb3cqKTsKKyAgICB2b2lkIHJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93
KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0
eWxlRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7CiAg
ICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwg
UmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7CkBAIC0xMTYs
NyArMTE5LDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+ID4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGZv
cmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVm
UHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4mIHJl
c3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqLCBpbnQg
ZG9jdW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2Vs
ZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU2VsZWN0
b3JQcm9maWxlcihFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3Rv
clByb2ZpbGU+Jik7CkBAIC0xNDUsNiArMTQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3Rv
clN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQq
IGVsZW1lbnQpOwogICAgIEVsZW1lbnQqIGVsZW1lbnRGb3JJZChFcnJvclN0cmluZyosIGludCBu
b2RlSWQpOworICAgIGludCBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVu
dCopOwogICAgIHZvaWQgY29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqLCBUeXBlQnVp
bGRlcjo6QXJyYXk8V2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRl
cj4qKTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxl
U2hlZXQqKTsKQEAgLTE3Niw2ICsxNzksNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50VG9WaWFJ
bnNwZWN0b3JTdHlsZVNoZWV0IG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAg
Tm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZSBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAg
ICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7CisgICAgT3du
UHRyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKIAog
ICAgIGludCBtX2xhc3RTdHlsZVNoZWV0SWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggNDFiN2JjOC4uMTQx
YzI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKQEAgLTIzMSwxNiArMjMxLDIyIEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1CiAgICAgICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93KQogewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlk
Q3JlYXRlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENy
ZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5h
bWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICAgICBpZiAo
SW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVj
dG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1
bWVudCwgbmFtZSk7CisgICAgICAgIGNzc0FnZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3Vt
ZW50LCBuYW1lZEZsb3cpOworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
VXBkYXRlUmVnaW9uTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQor
eworICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkVXBkYXRlUmVn
aW9uTGF5b3V0KGRvY3VtZW50LCBuYW1lZEZsb3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCBjMjVkMzcyLi4yMzczNjczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CkBAIC0xMTMsOCArMTEzLDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlS
ZXN1bHRDaGFuZ2VkKERvY3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jv
b3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BT
aGFkb3dSb290KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3Vt
ZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVk
RmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVw
ZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3Rh
dGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1
bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3Vz
ZVByZXNzKFBhZ2UqKTsKQEAgLTI5MCw4ICsyOTEsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMq
LCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNo
YWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dS
b290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0
YXRpYyB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERv
Y3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRD
cmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktp
dE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0
YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyos
IERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RS
ZXN1bHQmLCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVN
b3VzZVByZXNzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC01NjEsMjEgKzU2MywzMCBA
QCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290
KEVsZW1lbnQqIGhvc3QsIFNoYWRvd1JvbwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXRO
YW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50
KGRvY3VtZW50KSkKLSAgICAgICAgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5n
QWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIAot
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3co
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQq
IGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlm
IChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGlu
Z0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVtb3ZlTmFtZWRGbG93
SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIHdpbGxS
ZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZs
b3cpOworI2VuZGlmCit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93
KiBuYW1lZEZsb3cpCit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpCisgICAgICAgIGRpZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyMDY5NWIu
LjliZjljN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1N0eWxlTW9kZWwuanMKQEAgLTM5LDYgKzM5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwgPSBmdW5jdGlvbigpCiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb1JlcXVlc3RlZCwgdGhp
cy5fdW5kb1JlZG9SZXF1ZXN0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9Db21w
bGV0ZWQsIHRoaXMuX3VuZG9SZWRvQ29tcGxldGVkLCB0aGlzKTsKICAgICB0aGlzLl9yZXNvdXJj
ZUJpbmRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmco
dGhpcyk7CisgICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICBXZWJJbnNw
ZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZl
bnRzLkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9ucywgdGhp
cyk7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdlYklu
c3BlY3Rvci5DU1NEaXNwYXRjaGVyKHRoaXMpKTsKICAgICBDU1NBZ2VudC5lbmFibGUoKTsKIH0K
QEAgLTU4LDcgKzYwLDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewog
ICAgIFN0eWxlU2hlZXRDaGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiLAogICAgIE1lZGlhUXVl
cnlSZXN1bHRDaGFuZ2VkOiAiTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQiLAogICAgIE5hbWVkRmxv
d0NyZWF0ZWQ6ICJOYW1lZEZsb3dDcmVhdGVkIiwKLSAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFt
ZWRGbG93UmVtb3ZlZCIKKyAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIs
CisgICAgUmVnaW9uTGF5b3V0VXBkYXRlZDogIlJlZ2lvbkxheW91dFVwZGF0ZWQiCiB9CiAKIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTE3MiwxMCArMTc1LDE2
IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKIAogICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKE9iamVjdCl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAg
IGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJh
Y2spCisgICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5v
ZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rp
b24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAg
IGlmIChuYW1lZEZsb3dDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFt
ZWRGbG93Q29sbGVjdGlvbi5uYW1lZEZsb3dNYXApOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKICAgICAgICAgLyoqCiAgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5
LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBAcGFy
YW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKQEAgLTE4NSwxMSArMTk0LDE0IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxs
YmFjayhudWxsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJh
Y2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXls
b2FkKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93
Q29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbihuYW1lZEZs
b3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tk
b2N1bWVudE5vZGVJZF0gPSBuYW1lZEZsb3dDb2xsZWN0aW9uOworICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLm5hbWVkRmxvd01hcCk7CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0aW9u
KG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKKyAgICAgICAgQ1NT
QWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJZCwgY2FsbGJhY2suYmlu
ZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xOTcsMjIgKzIw
OSwyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5z
cGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldEZsb3dCeU5h
bWVBc3luYzogZnVuY3Rpb24obm9kZUlkLCBmbG93TmFtZSwgdXNlckNhbGxiYWNrKQorICAgIGdl
dEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCB1c2Vy
Q2FsbGJhY2spCiAgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMu
X25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVk
Rmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xs
ZWN0aW9uLmZsb3dCeU5hbWUoZmxvd05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNw
ZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxiYWNrCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3Rv
Y29sLkVycm9yfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZsb3c9
fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P0NTU0FnZW50Lk5hbWVkRmxv
dz19IG5hbWVkRmxvd01hcAogICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
dXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2sodXNlckNhbGxiYWNrLCBuYW1lZEZsb3dNYXApCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgICAgIGlmICghbmFt
ZWRGbG93TWFwKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCkpOworICAgICAgICAgICAgICAgIHVz
ZXJDYWxsYmFjayh0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0uZmxv
d0J5TmFtZShmbG93TmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdlbnQuZ2V0Rmxv
d0J5TmFtZShub2RlSWQsIGZsb3dOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFj
aykpOworICAgICAgICB0aGlzLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudE5v
ZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0zNTAsNTEgKzM2Nyw0OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90
b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9k
ZUlkfSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICog
QHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAg
ICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAg
X25hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewotICAg
ICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIC8qKgotICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSByb290
Ci0gICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBwb3J0
IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAoZG9j
dW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFt
ZWRGbG93UGF5bG9hZCk7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5f
bmFtZWRGbG93Q29sbGVjdGlvbnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsKIAotICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50
Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOwotICAgICAgICB9CisgICAgICAgIGlmICghbmFtZWRGbG93
Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0b3Iu
ZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBu
YW1lZEZsb3dDb2xsZWN0aW9uLmFwcGVuZE5hbWVkRmxvdyhuYW1lZEZsb3cpOworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5F
dmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgbmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAgICAg
Ki8KLSAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUp
CisgICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFt
ZSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgIHZhciBu
YW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnRO
b2RlSWRdOworCisgICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAvKioKLSAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5E
T01Eb2N1bWVudH0gcm9vdAotICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhy
b290KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVudCB3ZSBv
bmx5IHdhbnQgc3VwcG9ydCBmb3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1bWVudAotICAg
ICAgICAgICAgaWYgKGRvY3VtZW50Tm9kZUlkICE9PSByb290LmlkKQotICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgbmFtZWRGbG93Q29sbGVjdGlvbi5yZW1vdmVOYW1lZEZsb3coZmxv
d05hbWUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJ
ZDogZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lOiBmbG93TmFtZSB9KTsKKyAgICB9LAogCi0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9jdW1l
bnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7Ci0gICAgICAgIH0KKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAorICAgICAqLworICAgIF9y
ZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAg
ICAgICAgdmFyIG5hbWVkRmxvdyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2Fk
KG5hbWVkRmxvd1BheWxvYWQpOworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRo
aXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJZF07CisKKyAg
ICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRGbG93KG5h
bWVkRmxvdyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBuYW1lZEZsb3cp
OwogICAgIH0sCiAKICAgICAvKioKQEAgLTQ2Myw2ICs0NzcsMTEgQEAgV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5ncyA9
IHt9OwogICAgIH0sCiAKKyAgICBfcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9uczogZnVuY3Rpb24o
KQorICAgIHsKKyAgICAgICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICB9
LAorCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb259IHJh
d0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQpAQCAt
MTMyNiwyMSArMTM0NSwyOCBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUg
PSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBk
b2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFt
IHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAgICBuYW1l
ZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1lZEZs
b3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQogICAgIHsKLSAgICAgICAgdGhp
cy5fY3NzTW9kZWwuX25hbWVkRmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOworICAg
ICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3dQYXlsb2FkKTsK
ICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3Vt
ZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZmxvd05hbWUKICAgICAgKi8KLSAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihk
b2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1
bWVudE5vZGVJZCwgZmxvd05hbWUpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFt
ZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01v
ZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQ
YXlsb2FkCisgICAgICovCisgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRG
bG93UGF5bG9hZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9yZWdpb25MYXlvdXRV
cGRhdGVkKG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0KIH0KIApAQCAtMTM1MCw3ICsxMzc2LDcg
QEAgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICovCiBXZWJJbnNw
ZWN0b3IuTmFtZWRGbG93ID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICB0aGlzLm5vZGVJZCA9
IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7CisgICAgdGhpcy5kb2N1bWVudE5vZGVJZCA9IHBheWxv
YWQuZG9jdW1lbnROb2RlSWQ7CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAgIHRo
aXMub3ZlcnNldCA9IHBheWxvYWQub3ZlcnNldDsKICAgICB0aGlzLmNvbnRlbnQgPSBwYXlsb2Fk
LmNvbnRlbnQ7CkBAIC0xMzY3LDIwICsxMzkzLDQ5IEBAIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cu
cGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKIH0KIAogLyoqCi0gKiBAcGFyYW0gez9B
cnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pj19IG5hbWVkRmxvd1BheWxvYWQKLSAqIEByZXR1cm4g
ez9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz59CisgKiBAY29uc3RydWN0b3IKKyAqIEBw
YXJhbSB7QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz59IHBheWxvYWQKICAqLwotV2ViSW5zcGVj
dG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheSA9IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxv
YWQpCitXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbiA9IGZ1bmN0aW9uKHBheWxvYWQp
CiB7Ci0gICAgaWYgKCFuYW1lZEZsb3dQYXlsb2FkKQotICAgICAgICByZXR1cm4gbnVsbDsKKyAg
ICB0aGlzLm5hbWVkRmxvd01hcCA9IHt9OwogCi0gICAgdmFyIHBhcnNlZEFycmF5ID0gW107Ci0g
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lZEZsb3dQYXlsb2FkLmxlbmd0aDsgKytpKQotICAg
ICAgICBwYXJzZWRBcnJheVtpXSA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2Fk
KG5hbWVkRmxvd1BheWxvYWRbaV0pOwotICAgIHJldHVybiBwYXJzZWRBcnJheTsKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHBheWxvYWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIG5hbWVk
RmxvdyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKHBheWxvYWRbaV0pOwor
ICAgICAgICB0aGlzLm5hbWVkRmxvd01hcFtuYW1lZEZsb3cubmFtZV0gPSBuYW1lZEZsb3c7Cisg
ICAgfQogfQogCitXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5cGUgPSB7
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fSBuYW1lZEZs
b3cKKyAgICAgKi8KKyAgICBhcHBlbmROYW1lZEZsb3c6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAg
ICB7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFwW25hbWVkRmxvdy5uYW1lXSA9IG5hbWVkRmxv
dzsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCisg
ICAgICovCisgICAgcmVtb3ZlTmFtZWRGbG93OiBmdW5jdGlvbihmbG93TmFtZSkKKyAgICB7Cisg
ICAgICAgIGRlbGV0ZSB0aGlzLm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQorICAgICAqIEByZXR1cm4ge1dl
Ykluc3BlY3Rvci5OYW1lZEZsb3d9CisgICAgICovCisgICAgZmxvd0J5TmFtZTogZnVuY3Rpb24o
Zmxvd05hbWUpCisgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93ID0gdGhpcy5uYW1lZEZsb3dN
YXBbZmxvd05hbWVdOworCisgICAgICAgIGlmICghbmFtZWRGbG93KQorICAgICAgICAgICAgcmV0
dXJuIG51bGw7CisgICAgICAgIHJldHVybiBuYW1lZEZsb3c7CisgICAgfQorfQogLyoqCiAgKiBA
dHlwZSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWx9CiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNGU4M2NjYS4u
NzQ2MWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVk
Rmxvd1RocmVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJOYW1lZEZs
b3dUaHJlYWQuaCIKIAogI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVnaW9uLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxvdy5oIgpA
QCAtMzU3LDYgKzM1OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6
ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCiB7CiAgICAgUmVuZGVyRmxvd1RocmVh
ZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50KCksIG1fbmFtZWRGbG93
LmdldCgpKTsKIAogICAgIGlmICghbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLmlzQWN0
aXZlKCkgJiYgbV9uYW1lZEZsb3ctPmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAgIG1fcmVn
aW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162526</attachid>
            <date>2012-09-06 09:48:14 -0700</date>
            <delta_ts>2012-09-10 01:41:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93443-20120906194754.patch</filename>
            <type>text/plain</type>
            <size>43026</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY0ODQxOTcyZDQwMmQ2
NWE3NjJjNTk4NDY3Yjc3ZGVjMjQxNTk1MS4uN2M2YTRjNDE4MjE3ZjI4ZTQxMDFhYTk3ZmE3YTNm
NzJhODZhOGI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA5LTA2ICBBbmRy
ZWkgUG9lbmFydSAgPHBvZW5hcnVAYWRvYmUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFByb3RvY29sIEV4dGVuc2lvbjogQWRkICJyZWdpb25MYXlvdXRVcGRhdGUiIGV2ZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzQ0MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhhbmRlciBQYXZsb3YuCisKKyAgICAgICAgQWRkZWQgInJlZ2lv
bkxheW91dFVwZGF0ZSIgZXZlbnQgdG8gdGhlIHByb3RvY29sLgorCisgICAgICAgIFJlbW92ZWQg
ImdldEZsb3dCeU5hbWUiIGZyb20gcHJvdG9jb2wuCisKKyAgICAgICAgVGhlIGZyb250LWVuZCBr
ZWVwcyBpbiBzeW5jIHRoZSByZXF1ZXN0ZWQgTmFtZWQgRmxvdyBDb2xsZWN0aW9ucy4KKworICAg
ICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNz
cy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZs
b3dXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNj
YXJkTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFVwZGF0ZVJl
Z2lvbkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFz
azo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRhdGVS
ZWdpb25MYXlvdXRUYXNrOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnNjaGVkdWxlRm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRG
bG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxSZW1vdmVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbCk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkQ3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5
b3V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jLmNh
bGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5n
ZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlLmdldEZsb3dCeU5hbWVBc3luYy5jYWxsYmFjayk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFtZUFzeW5j
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fbmFtZWRG
bG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5
cGUuX25hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwucHJvdG90eXBlLl9yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9ucyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUubmFtZWRGbG93Q3Jl
YXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUubmFt
ZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90
b3R5cGUucmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRG
bG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlwZS5hcHBlbmROYW1l
ZEZsb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90
eXBlLnJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29s
bGVjdGlvbi5wcm90b3R5cGUuZmxvd0J5TmFtZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpOgorCiAyMDEyLTA5LTA2ICBF
dWdlbmUgS2x5dWNobmlrb3YgIDxldXN0YXMuYnVnQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBUaW1lbGluZTogY2FjaGUgImZpbHRlcmVkUmVjb3JkcyIgZm9yIGJldHRlciBz
Y3JvbGxpbmcgcGVyZm9ybWFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFt
ZWRGbG93Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVj
dGlvbi5jcHAKaW5kZXggMTU4OGZjNmMwMzc3NDczOWViNThiZmUxMTY3ZTAxOTI5OTAxYWUyMS4u
NTU0NzUwNjI2ZDAzZDcxYTdiNWQyMTk0NjVkOWQ4ODRmOGIwNmMxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcApAQCAtODEsNyArODEsNyBAQCBQYXNzUmVm
UHRyPFdlYktpdE5hbWVkRmxvdz4gTmFtZWRGbG93Q29sbGVjdGlvbjo6ZW5zdXJlRmxvd1dpdGhO
YW1lKGNvbnN0IFN0cmluZwogICAgIFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5ld0Zsb3cgPSBX
ZWJLaXROYW1lZEZsb3c6OmNyZWF0ZSh0aGlzLCBmbG93TmFtZSk7CiAgICAgbV9uYW1lZEZsb3dz
LmFkZChuZXdGbG93LmdldCgpKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
Q3JlYXRlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5ld0Zsb3ctPm5hbWUoKSk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmV3Rmxv
dy5nZXQoKSk7CiAKICAgICByZXR1cm4gbmV3Rmxvdy5yZWxlYXNlKCk7CiB9CkBAIC05NSw5ICs5
NSw5IEBAIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZGlzY2FyZE5hbWVkRmxvdyhXZWJLaXRO
YW1lZEZsb3cqIG5hbWVkRmxvdykKICAgICBBU1NFUlQobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9
PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpOwogICAgIEFTU0VSVChtX25hbWVkRmxv
d3MuY29udGFpbnMobmFtZWRGbG93KSk7CiAKLSAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVk
Rmxvdyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93
KG1fZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1lZEZsb3ctPm5hbWUoKSk7CisgICAg
bV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOwogfQogCiB2b2lkIE5hbWVkRmxvd0NvbGxl
Y3Rpb246OmRvY3VtZW50RGVzdHJveWVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgppbmRleCBlMmRlMzMwMWFjODE2NWQ5NmE1MDdlMDJlNWMyNGEyYzRkNjczMmMyLi5j
MWUyNjVjNGIxNGJiYWQxZmJkOTM2MmIwMDg0YTkwNzk4YzU1MjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0yNDEyLDE4ICsyNDEyLDYgQEAKICAgICAgICAg
ICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBO
YW1lZCBGbG93cyBmcm9tIHRoZSBkb2N1bWVudC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICJu
YW1lIjogImdldEZsb3dCeU5hbWUiLAotICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAi
RE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJk
ZXNjcmlwdGlvbiI6ICJOYW1lZCBGbG93IGlkZW50aWZpZXIuIiB9Ci0gICAgICAgICAgICAgICAg
XSwKLSAgICAgICAgICAgICAgICAicmV0dXJucyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3JpcHRpb24iOiAi
QSBOYW1lZCBGbG93LiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImRl
c2NyaXB0aW9uIjogIlJldHVybnMgdGhlIE5hbWVkIEZsb3cgaWRlbnRpZmllZCBieSB0aGUgZ2l2
ZW4gbmFtZSIsCi0gICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0K
ICAgICAgICAgXSwKICAgICAgICAgImV2ZW50cyI6IFsKQEAgLTI0NDEsOCArMjQyOSw3IEBACiAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93Q3JlYXRlZCIs
CiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0
aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRl
bnRpZmllciBvZiB0aGUgbmV3IE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRlc2NyaXB0aW9uIjog
IlRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBpcyBjcmVhdGVkLiIs
CiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKQEAgLTI0NTEsMTAgKzI0MzgsMTggQEAK
ICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1lZEZsb3dSZW1vdmVkIiwKICAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1
bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRv
Y3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVk
RmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRo
ZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Zmxvd05hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBv
ZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAg
ICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93IGlzIHJlbW92
ZWQ6IGhhcyBubyBhc3NvY2lhdGVkIGNvbnRlbnQgbm9kZXMgYW5kIHJlZ2lvbnMuIiwKICAgICAg
ICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJyZWdpb25MYXlvdXRVcGRhdGVkIiwKKyAgICAgICAg
ICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJu
YW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAiZGVzY3JpcHRpb24iOiAiVGhlIE5hbWVk
IEZsb3cgd2hvc2UgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQuIiB9CisgICAgICAgICAgICAgICAg
XSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZs
b3cncyBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iLAorICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggMjRjNzE5N2I2ZWViNjBi
MzE3NjM3MGQ1NTM0ZWY0NmQxM2I0ZWJkZi4uYmRhY2ZjYmRlYmUwNjE3YWRkODZhODQyYjMyZTMy
MjljZDhlYjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCkBAIC0yMjYsNiArMjI2LDQyIEBAIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6U2VsZWN0b3JQcm9maWxlPiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVjdG9yT2JqZWN0CiAg
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKK2NsYXNzIFVwZGF0ZVJlZ2lvbkxheW91
dFRhc2sgeworcHVibGljOgorICAgIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9yQ1NT
QWdlbnQqKTsKKyAgICB2b2lkIHNjaGVkdWxlRm9yKFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1
bWVudE5vZGVJZCk7CisgICAgdm9pZCByZXNldCgpIHsgbV90aW1lci5zdG9wKCk7IH0KKyAgICB2
b2lkIG9uVGltZXIoVGltZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4qKTsKKworcHJpdmF0ZToK
KyAgICBJbnNwZWN0b3JDU1NBZ2VudCogbV9jc3NBZ2VudDsKKyAgICBUaW1lcjxVcGRhdGVSZWdp
b25MYXlvdXRUYXNrPiBtX3RpbWVyOworICAgIEhhc2hNYXA8V2ViS2l0TmFtZWRGbG93KiwgaW50
PiBtX25hbWVkRmxvd3M7Cit9OworCitVcGRhdGVSZWdpb25MYXlvdXRUYXNrOjpVcGRhdGVSZWdp
b25MYXlvdXRUYXNrKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCkKKyAgICA6IG1fY3NzQWdl
bnQoY3NzQWdlbnQpCisgICAgLCBtX3RpbWVyKHRoaXMsICZVcGRhdGVSZWdpb25MYXlvdXRUYXNr
OjpvblRpbWVyKQoreworfQorCit2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnNjaGVkdWxl
Rm9yKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCit7Cisg
ICAgbV9uYW1lZEZsb3dzLmFkZChuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKKworICAgIGlm
ICghbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
K30KKwordm9pZCBVcGRhdGVSZWdpb25MYXlvdXRUYXNrOjpvblRpbWVyKFRpbWVyPFVwZGF0ZVJl
Z2lvbkxheW91dFRhc2s+KikKK3sKKyAgICAvLyBUaGUgdGltZXIgaXMgc3RvcHBlZCBvbiBtX2Nz
c0FnZW50IGRlc3RydWN0aW9uLCBzbyB0aGlzIG1ldGhvZCB3aWxsIG5ldmVyIGJlIGNhbGxlZCBh
ZnRlciBtX2Nzc0FnZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAgICBmb3IgKEhhc2hNYXA8V2Vi
S2l0TmFtZWRGbG93KiwgaW50Pjo6aXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3MuYmVnaW4oKSwg
ZW5kID0gbV9uYW1lZEZsb3dzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIG1fY3Nz
QWdlbnQtPnJlZ2lvbkxheW91dFVwZGF0ZWQoaXQtPmZpcnN0LCBpdC0+c2Vjb25kKTsKKworICAg
IG1fbmFtZWRGbG93cy5jbGVhcigpOworfQorCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5
bGVTaGVldEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFN0eWxlU2hlZXRBY3Rpb24pOwogcHVibGljOgpAQCAtNTE4LDYg
KzU1NCw4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKICAgICBtX25vZGVUb0lu
c3BlY3RvclN0eWxlU2hlZXQuY2xlYXIoKTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jbGVh
cigpOworICAgIGlmIChtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCisgICAgICAgIG1fdXBkYXRl
UmVnaW9uTGF5b3V0VGFzay0+cmVzZXQoKTsKICAgICByZXNldFBzZXVkb1N0YXRlcygpOwogfQog
CkBAIC01MzcsMjIgKzU3NSw0MyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjptZWRpYVF1ZXJ5
UmVzdWx0Q2hhbmdlZCgpCiAgICAgICAgIG1fZnJvbnRlbmQtPm1lZGlhUXVlcnlSZXN1bHRDaGFu
Z2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhE
b2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93KQogewotICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5i
b3VuZE5vZGVJZChkb2N1bWVudCk7Ci0gICAgaWYgKCFub2RlSWQgfHwgIW1fbmFtZWRGbG93Q29s
bGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMobm9kZUlkKSkKKyAgICBpbnQgZG9jdW1lbnROb2Rl
SWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChkb2N1bWVudCk7CisgICAgaWYg
KCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9mcm9udGVuZC0+bmFt
ZWRGbG93Q3JlYXRlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworICAgIEVycm9yU3RyaW5nIGVy
cm9yU3RyaW5nOworICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQoYnVpbGRPYmplY3RG
b3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCog
ZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZs
b3cqIG5hbWVkRmxvdykKIHsKLSAgICBpbnQgbm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2Rl
SWQoZG9jdW1lbnQpOwotICAgIGlmICghbm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25z
UmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJZCkpCisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9j
dW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1l
bnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd1Jl
bW92ZWQobm9kZUlkLCBuYW1lLnN0cmluZygpKTsKKyAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dS
ZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQoreworICAgIGludCBkb2N1bWVu
dE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAg
ICBpZiAoIWRvY3VtZW50Tm9kZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fdXBk
YXRlUmVnaW9uTGF5b3V0VGFzaykKKyAgICAgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrID0g
YWRvcHRQdHIobmV3IFVwZGF0ZVJlZ2lvbkxheW91dFRhc2sodGhpcykpOworICAgIG1fdXBkYXRl
UmVnaW9uTGF5b3V0VGFzay0+c2NoZWR1bGVGb3IobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7
Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0
TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKK3sKKyAgICBpZiAobmFt
ZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCisg
ICAgICAgIHJldHVybjsKKworICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOworICAgIG1fZnJv
bnRlbmQtPnJlZ2lvbkxheW91dFVwZGF0ZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9y
U3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6
OlBzZXVkb1R5cGUgcHNldWRvVHlwZSkKQEAgLTgyOCwzMiArODg3LDE2IEBAIHZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgZG9jCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fbmFtZWRGbG93Q29sbGVjdGlv
bnNSZXF1ZXN0ZWQuYWRkKGRvY3VtZW50Tm9kZUlkKTsKKwogICAgIFZlY3RvcjxSZWZQdHI8V2Vi
S2l0TmFtZWRGbG93PiA+IG5hbWVkRmxvd3NWZWN0b3IgPSBkb2N1bWVudC0+bmFtZWRGbG93cygp
LT5uYW1lZEZsb3dzKCk7CiAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRl
cjo6Q1NTOjpOYW1lZEZsb3c+ID4gbmFtZWRGbG93cyA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+OjpjcmVhdGUoKTsKIAotCiAgICAgZm9yIChWZWN0b3I8
UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPjo6aXRlcmF0b3IgaXQgPSBuYW1lZEZsb3dzVmVjdG9y
LmJlZ2luKCk7IGl0ICE9IG5hbWVkRmxvd3NWZWN0b3IuZW5kKCk7ICsraXQpCiAgICAgICAgIG5h
bWVkRmxvd3MtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcsIGl0
LT5nZXQoKSwgZG9jdW1lbnROb2RlSWQpKTsKIAogICAgIHJlc3VsdCA9IG5hbWVkRmxvd3MucmVs
ZWFzZSgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRGbG93QnlOYW1lKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvY3VtZW50Tm9kZUlkLCBjb25zdCBTdHJpbmcmIGZs
b3dOYW1lLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiYgcmVzdWx0KQotewot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZG9tQWdlbnQtPmFzc2VydERvY3VtZW50KGVycm9y
U3RyaW5nLCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgV2ViS2l0TmFtZWRGbG93KiB3ZWJraXROYW1lZEZsb3cgPSBkb2N1bWVudC0+
bmFtZWRGbG93cygpLT5mbG93QnlOYW1lKGZsb3dOYW1lKTsKLSAgICBpZiAoIXdlYmtpdE5hbWVk
RmxvdykgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gdGFyZ2V0IENTUyBOYW1lZCBGbG93
IGZvdW5kIjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJLaXROYW1l
ZEZsb3c+IHByb3RlY3Rvcih3ZWJraXROYW1lZEZsb3cpOwotICAgIHJlc3VsdCA9IGJ1aWxkT2Jq
ZWN0Rm9yTmFtZWRGbG93KGVycm9yU3RyaW5nLCB3ZWJraXROYW1lZEZsb3csIGRvY3VtZW50Tm9k
ZUlkKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c3RhcnRTZWxlY3RvclByb2ZpbGVy
KEVycm9yU3RyaW5nKikKIHsKICAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUgPSBhZG9wdFB0
cihuZXcgU2VsZWN0b3JQcm9maWxlKCkpOwpAQCAtOTMzLDYgKzk3NiwxNSBAQCBFbGVtZW50KiBJ
bnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZvcklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IG5vZGVJZCkKICAgICByZXR1cm4gdG9FbGVtZW50KG5vZGUpOwogfQogCitpbnQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBk
b2N1bWVudCkKK3sKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5v
ZGVJZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCB8fCAhbV9uYW1lZEZsb3dD
b2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhkb2N1bWVudE5vZGVJZCkpCisgICAgICAgIHJl
dHVybiAwOworCisgICAgcmV0dXJuIGRvY3VtZW50Tm9kZUlkOworfQorCiB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50Ojpjb2xsZWN0U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwg
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+
KiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVl
dCA9IGJpbmRTdHlsZVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4
IGZlMWEzYjEwOTQwMjY3ZDVjNjZmNzFhZWIzMjE5NzQwMzY0NmEyYjEuLjg4ZTZmMjE5Zjk0ZDU4
YzI5MGVlMTIzN2UxYzYwNmFmZThlNWI5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01NSw2ICs1NSw3IEBAIGNsYXNzIE5vZGU7CiBjbGFz
cyBOb2RlTGlzdDsKIGNsYXNzIFNlbGVjdG9yUHJvZmlsZTsKIGNsYXNzIFN0eWxlUmVzb2x2ZXI7
CitjbGFzcyBVcGRhdGVSZWdpb25MYXlvdXRUYXNrOwogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
IApAQCAtOTksOCArMTAwLDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOwogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIG1lZGlhUXVlcnlSZXN1
bHRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgZGlkUmVtb3ZlTmFtZWRGbG93KERvY3Vt
ZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICB2b2lkIGRpZENyZWF0ZU5hbWVk
RmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHZvaWQgd2lsbFJlbW92ZU5h
bWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHZvaWQgZGlkVXBkYXRl
UmVnaW9uTGF5b3V0KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCByZWdp
b25MYXlvdXRVcGRhdGVkKFdlYktpdE5hbWVkRmxvdyosIGludCBkb2N1bWVudE5vZGVJZCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBp
bnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNT
U0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gPiYpOwogICAgIHZpcnR1YWwgdm9pZCBnZXRJbmxpbmVT
dHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpD
U1NTdHlsZT4mIGF0dHJpYnV0ZXMpOwpAQCAtMTE2LDcgKzExOSw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0
cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTUHJvcGVydHlJbmZvPiA+
JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgZm9yY2VkUHNldWRv
Q2xhc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JT
dHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlw
ZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBn
ZXRGbG93QnlOYW1lKEVycm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBjb25zdCBTdHJp
bmcmIGZsb3dOYW1lLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiYgcmVzdWx0
KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcq
KTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiYpOwpAQCAtMTQ1LDYgKzE0
Nyw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGUq
IGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVtZW50KTsKICAgICBFbGVtZW50KiBl
bGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAgICBpbnQgZG9jdW1lbnRO
b2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsKICAgICB2b2lkIGNvbGxlY3RTdHls
ZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiwgVHlwZUJ1aWxkZXI6OkFycmF5PFdlYkNvcmU6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+Kik7CiAKICAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0KiBiaW5kU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0Kik7CkBAIC0xNzYsNiArMTc5LDcg
QEAgcHJpdmF0ZToKICAgICBEb2N1bWVudFRvVmlhSW5zcGVjdG9yU3R5bGVTaGVldCBtX2RvY3Vt
ZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwogICAgIE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUg
bV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOwogICAgIEhhc2hTZXQ8aW50PiBtX25hbWVkRmxv
d0NvbGxlY3Rpb25zUmVxdWVzdGVkOworICAgIE93blB0cjxVcGRhdGVSZWdpb25MYXlvdXRUYXNr
PiBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CiAKICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElk
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IDQxYjdiYzgxYWRlZGEwYWU4ODFlYmU5NmVlZjdkMDdlNjNkMTQ5
YWQuLjE0MWMyOWEwNWZlYTJlZGMxMGEzNzdjMWE4YTdhZDViN2ZlMTRlNTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC0yMzEsMTYgKzIzMSwyMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydQogICAgICAgICBk
b21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0
ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICAgICBp
ZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5hbWVkRmxvdyhk
b2N1bWVudCwgbmFtZSk7CisgICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9j
dW1lbnQsIG5hbWVkRmxvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwg
V2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAgICAgaWYgKEluc3BlY3RvckNTU0FnZW50
KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50KCkpCi0g
ICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWUpOworICAg
ICAgICBjc3NBZ2VudC0+d2lsbFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZWRGbG93KTsK
K30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0ZVJlZ2lvbkxheW91
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQq
IGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAgICBpZiAoSW5zcGVj
dG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NT
QWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZFVwZGF0ZVJlZ2lvbkxheW91dChkb2N1bWVu
dCwgbmFtZWRGbG93KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Om1vdXNl
RGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVkIG1vZGlmaWVyRmxh
Z3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgKaW5kZXggYzI1ZDM3MjJiOWFhNzJhYTFkNjc1YTZhNTg2MDNkNmUzZjZjMzhmNC4u
MjM3MzY3M2IzMTE0M2E0NTMxYjYyMDFiZTYwMmQxZmU5MTg3N2QyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTEz
LDggKzExMyw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZChEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVsZW1l
bnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9v
dChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRl
TmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdl
YktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3coRG9j
dW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRVcGRhdGVSZWdp
b25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKIAogICAgIHN0YXRpYyB2b2lk
IG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2UqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5z
aWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzcyhQ
YWdlKik7CkBAIC0yOTAsOCArMjkxLDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBtZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0YXRp
YyB2b2lkIGRpZFB1c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVu
dCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwot
ICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyosIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCos
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFt
ZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZs
b3cqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVu
dCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3Zl
ckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVzdWx0Jiwg
dW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVz
c0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNTYxLDIxICs1NjMsMzAgQEAgaW5saW5l
IHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50
KiBob3N0LCBTaGFkb3dSb28KICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93
KiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVu
dCkpCi0gICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywg
ZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKGluc3RydW1l
bnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOwogI2VuZGlmCiB9CiAKLWlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50
KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNG
b3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWUpOworICAgICAgICB3aWxsUmVtb3ZlTmFt
ZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsKKyNl
bmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0
ZVJlZ2lvbkxheW91dChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRG
bG93KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJP
TlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAg
ICAgICBkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3Vt
ZW50LCBuYW1lZEZsb3cpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCA4MjA2OTViZjhkNmMzODUz
MGU5MTA1MDYxNTI4NWZhODQzOGY4M2U1Li45YmY5YzdiNzhlMjBlYTc1ZjkxYzhiZjBiMmIwYTNm
MzRmZTY5N2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC0zOSw2ICszOSw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9SZXF1ZXN0ZWQsIHRo
aXMuX3VuZG9SZWRvUmVxdWVzdGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLlVuZG9SZWRvQ29t
cGxldGVkLCB0aGlzLl91bmRvUmVkb0NvbXBsZXRlZCwgdGhpcyk7CiAgICAgdGhpcy5fcmVzb3Vy
Y2VCaW5kaW5nID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VCaW5kaW5n
KHRoaXMpOworICAgIHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zID0ge307CisgICAgV2ViSW5z
cGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2
ZW50cy5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMuX3Jlc2V0TmFtZWRGbG93Q29sbGVjdGlvbnMsIHRo
aXMpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKG5ldyBXZWJJ
bnNwZWN0b3IuQ1NTRGlzcGF0Y2hlcih0aGlzKSk7CiAgICAgQ1NTQWdlbnQuZW5hYmxlKCk7CiB9
CkBAIC01OCw3ICs2MCw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cyA9IHsK
ICAgICBTdHlsZVNoZWV0Q2hhbmdlZDogIlN0eWxlU2hlZXRDaGFuZ2VkIiwKICAgICBNZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZDogIk1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkIiwKICAgICBOYW1lZEZs
b3dDcmVhdGVkOiAiTmFtZWRGbG93Q3JlYXRlZCIsCi0gICAgTmFtZWRGbG93UmVtb3ZlZDogIk5h
bWVkRmxvd1JlbW92ZWQiCisgICAgTmFtZWRGbG93UmVtb3ZlZDogIk5hbWVkRmxvd1JlbW92ZWQi
LAorICAgIFJlZ2lvbkxheW91dFVwZGF0ZWQ6ICJSZWdpb25MYXlvdXRVcGRhdGVkIgogfQogCiBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CkBAIC0xNzIsMTAgKzE3NSwx
NiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAKICAgICAvKioK
ICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICogQHBhcmFtIHtm
dW5jdGlvbig/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNlckNhbGxiYWNrCisg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihPYmplY3QpfSB1c2VyQ2FsbGJhY2sKICAgICAgKi8KLSAg
ICBnZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwgdXNlckNhbGxi
YWNrKQorICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24oZG9jdW1lbnRO
b2RlSWQsIHVzZXJDYWxsYmFjaykKICAgICB7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0
aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdOworICAgICAg
ICBpZiAobmFtZWRGbG93Q29sbGVjdGlvbikgeworICAgICAgICAgICAgdXNlckNhbGxiYWNrKG5h
bWVkRmxvd0NvbGxlY3Rpb24ubmFtZWRGbG93TWFwKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJh
eS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKICAgICAgICAgICogQHBh
cmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCkBAIC0xODUsMTEgKzE5NCwxNCBAQCBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmIChlcnJvciB8fCAhbmFtZWRGbG93UGF5bG9hZCkKICAgICAgICAgICAgICAgICB1c2VyQ2Fs
bGJhY2sobnVsbCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdXNlckNhbGxi
YWNrKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkQXJyYXkobmFtZWRGbG93UGF5
bG9hZCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIG5hbWVkRmxv
d0NvbGxlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24obmFtZWRG
bG93UGF5bG9hZCk7CisgICAgICAgICAgICAgICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNb
ZG9jdW1lbnROb2RlSWRdID0gbmFtZWRGbG93Q29sbGVjdGlvbjsKKyAgICAgICAgICAgICAgICB1
c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29sbGVjdGlvbi5uYW1lZEZsb3dNYXApOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlv
bihub2RlSWQsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNhbGxiYWNrKSk7CisgICAgICAgIENT
U0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24oZG9jdW1lbnROb2RlSWQsIGNhbGxiYWNrLmJp
bmQodGhpcywgdXNlckNhbGxiYWNrKSk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTk3LDIyICsy
MDksMjcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYklu
c3BlY3Rvci5OYW1lZEZsb3cpfSB1c2VyQ2FsbGJhY2sKICAgICAgKi8KLSAgICBnZXRGbG93QnlO
YW1lQXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwgZmxvd05hbWUsIHVzZXJDYWxsYmFjaykKKyAgICBn
ZXRGbG93QnlOYW1lQXN5bmM6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgdXNl
ckNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlz
Ll9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAgIGlmIChuYW1l
ZEZsb3dDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29s
bGVjdGlvbi5mbG93QnlOYW1lKGZsb3dOYW1lKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKwogICAgICAgICAvKioKICAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5z
cGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxsYmFjawotICAgICAgICAgKiBAcGFyYW0gez9Qcm90
b2NvbC5FcnJvcn0gZXJyb3IKLSAgICAgICAgICogQHBhcmFtIHs/Q1NTQWdlbnQuTmFtZWRGbG93
PX0gbmFtZWRGbG93UGF5bG9hZAorICAgICAgICAgKiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZs
b3c9fSBuYW1lZEZsb3dNYXAKICAgICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNr
KHVzZXJDYWxsYmFjaywgZXJyb3IsIG5hbWVkRmxvd1BheWxvYWQpCisgICAgICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKHVzZXJDYWxsYmFjaywgbmFtZWRGbG93TWFwKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoZXJyb3IgfHwgIW5hbWVkRmxvd1BheWxvYWQpCisgICAgICAgICAgICBpZiAoIW5h
bWVkRmxvd01hcCkKICAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKFdlYkluc3BlY3Rvci5OYW1l
ZEZsb3cucGFyc2VQYXlsb2FkKG5hbWVkRmxvd1BheWxvYWQpKTsKKyAgICAgICAgICAgICAgICB1
c2VyQ2FsbGJhY2sodGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdLmZs
b3dCeU5hbWUoZmxvd05hbWUpKTsKICAgICAgICAgfQogCi0gICAgICAgIENTU0FnZW50LmdldEZs
b3dCeU5hbWUobm9kZUlkLCBmbG93TmFtZSwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJh
Y2spKTsKKyAgICAgICAgdGhpcy5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMoZG9jdW1lbnRO
b2RlSWQsIGNhbGxiYWNrLmJpbmQodGhpcywgdXNlckNhbGxiYWNrKSk7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMzUwLDUxICszNjcsNDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJv
dG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5v
ZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAq
IEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXlsb2FkCiAgICAgICovCi0g
ICAgX25hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAg
IF9uYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQogICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLmhhc0V2ZW50TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICAvKioKLSAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Eb2N1bWVudH0gcm9v
dAotICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhyb290KQotICAgICAgICB7
Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVudCB3ZSBvbmx5IHdhbnQgc3VwcG9y
dCBmb3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1bWVudAotICAgICAgICAgICAgaWYgKGRv
Y3VtZW50Tm9kZUlkICE9PSByb290LmlkKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgdmFyIG5hbWVkRmxvdyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKG5h
bWVkRmxvd1BheWxvYWQpOworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMu
X25hbWVkRmxvd0NvbGxlY3Rpb25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJZF07CiAKLSAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHls
ZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVu
dE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoIW5hbWVkRmxv
d0NvbGxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAg
bmFtZWRGbG93Q29sbGVjdGlvbi5hcHBlbmROYW1lZEZsb3cobmFtZWRGbG93KTsKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwu
RXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIG5hbWVkRmxvdyk7CiAgICAgfSwKIAogICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAgICAg
ICovCi0gICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1l
KQorICAgIF9uYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgZmxvd05h
bWUpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQpKQorICAgICAgICB2YXIg
bmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50
Tm9kZUlkXTsKKworICAgICAgICBpZiAoIW5hbWVkRmxvd0NvbGxlY3Rpb24pCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgLyoqCi0gICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3Iu
RE9NRG9jdW1lbnR9IHJvb3QKLSAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2so
cm9vdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQgd2Ug
b25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQKLSAg
ICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24ucmVtb3ZlTmFtZWRGbG93KGZs
b3dOYW1lKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIHsgZG9jdW1lbnROb2Rl
SWQ6IGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZTogZmxvd05hbWUgfSk7CisgICAgfSwKIAotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3Vt
ZW50Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOwotICAgICAgICB9CisgICAgLyoqCisgICAgICogQHBh
cmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgKi8KKyAgICBf
cmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKKyAgICB7Cisg
ICAgICAgIHZhciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9h
ZChuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0
aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tuYW1lZEZsb3cuZG9jdW1lbnROb2RlSWRdOworCisg
ICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKIAot
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJp
bmQodGhpcykpOworICAgICAgICBuYW1lZEZsb3dDb2xsZWN0aW9uLmFwcGVuZE5hbWVkRmxvdyhu
YW1lZEZsb3cpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlZCwgbmFtZWRGbG93
KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC00NjMsNiArNDc3LDExIEBAIFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc291cmNlTWFwcGluZ3Mg
PSB7fTsKICAgICB9LAogCisgICAgX3Jlc2V0TmFtZWRGbG93Q29sbGVjdGlvbnM6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zID0ge307CisgICAg
fSwKKwogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNTU0xvY2F0aW9ufSBy
YXdMb2NhdGlvbgogICAgICAqIEByZXR1cm4gez9XZWJJbnNwZWN0b3IuVUlMb2NhdGlvbn0KQEAg
LTEzMjYsMjEgKzEzNDUsMjggQEAgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0g
ZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJh
bSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXlsb2FkCiAgICAgICovCi0gICAgbmFt
ZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgbmFtZWRG
bG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKICAgICB7Ci0gICAgICAgIHRo
aXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dDcmVhdGVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsKKyAg
ICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd0NyZWF0ZWQobmFtZWRGbG93UGF5bG9hZCk7
CiAgICAgfSwKIAogICAgIC8qKgogICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1
bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBhcmFtIHtz
dHJpbmd9IGZsb3dOYW1lCiAgICAgICovCi0gICAgbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24o
ZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9j
dW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAgdGhpcy5fY3NzTW9kZWwuX25h
bWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOworICAgICAgICB0aGlzLl9jc3NN
b2RlbC5fbmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUpOworICAgIH0s
CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93
UGF5bG9hZAorICAgICAqLworICAgIHJlZ2lvbkxheW91dFVwZGF0ZWQ6IGZ1bmN0aW9uKG5hbWVk
Rmxvd1BheWxvYWQpCisgICAgeworICAgICAgICB0aGlzLl9jc3NNb2RlbC5fcmVnaW9uTGF5b3V0
VXBkYXRlZChuYW1lZEZsb3dQYXlsb2FkKTsKICAgICB9CiB9CiAKQEAgLTEzNTAsNyArMTM3Niw3
IEBAIFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAqLwogV2ViSW5z
cGVjdG9yLk5hbWVkRmxvdyA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7Ci0gICAgdGhpcy5ub2RlSWQg
PSBwYXlsb2FkLmRvY3VtZW50Tm9kZUlkOworICAgIHRoaXMuZG9jdW1lbnROb2RlSWQgPSBwYXls
b2FkLmRvY3VtZW50Tm9kZUlkOwogICAgIHRoaXMubmFtZSA9IHBheWxvYWQubmFtZTsKICAgICB0
aGlzLm92ZXJzZXQgPSBwYXlsb2FkLm92ZXJzZXQ7CiAgICAgdGhpcy5jb250ZW50ID0gcGF5bG9h
ZC5jb250ZW50OwpAQCAtMTM2NywyMCArMTM5Myw0OSBAQCBXZWJJbnNwZWN0b3IuTmFtZWRGbG93
LnBhcnNlUGF5bG9hZCA9IGZ1bmN0aW9uKHBheWxvYWQpCiB9CiAKIC8qKgotICogQHBhcmFtIHs/
QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQYXlsb2FkCi0gKiBAcmV0dXJu
IHs/QXJyYXkuPFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+fQorICogQGNvbnN0cnVjdG9yCisgKiBA
cGFyYW0ge0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+fSBwYXlsb2FkCiAgKi8KLVdlYkluc3Bl
Y3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkQXJyYXkgPSBmdW5jdGlvbihuYW1lZEZsb3dQYXls
b2FkKQorV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24gPSBmdW5jdGlvbihwYXlsb2Fk
KQogewotICAgIGlmICghbmFtZWRGbG93UGF5bG9hZCkKLSAgICAgICAgcmV0dXJuIG51bGw7Cisg
ICAgdGhpcy5uYW1lZEZsb3dNYXAgPSB7fTsKIAotICAgIHZhciBwYXJzZWRBcnJheSA9IFtdOwot
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmFtZWRGbG93UGF5bG9hZC5sZW5ndGg7ICsraSkKLSAg
ICAgICAgcGFyc2VkQXJyYXlbaV0gPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9h
ZChuYW1lZEZsb3dQYXlsb2FkW2ldKTsKLSAgICByZXR1cm4gcGFyc2VkQXJyYXk7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwYXlsb2FkLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBuYW1l
ZEZsb3cgPSBXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChwYXlsb2FkW2ldKTsK
KyAgICAgICAgdGhpcy5uYW1lZEZsb3dNYXBbbmFtZWRGbG93Lm5hbWVdID0gbmFtZWRGbG93Owor
ICAgIH0KIH0KIAorV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlID0g
eworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30gbmFtZWRG
bG93CisgICAgICovCisgICAgYXBwZW5kTmFtZWRGbG93OiBmdW5jdGlvbihuYW1lZEZsb3cpCisg
ICAgeworICAgICAgICB0aGlzLm5hbWVkRmxvd01hcFtuYW1lZEZsb3cubmFtZV0gPSBuYW1lZEZs
b3c7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQor
ICAgICAqLworICAgIHJlbW92ZU5hbWVkRmxvdzogZnVuY3Rpb24oZmxvd05hbWUpCisgICAgewor
ICAgICAgICBkZWxldGUgdGhpcy5uYW1lZEZsb3dNYXBbZmxvd05hbWVdOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKKyAgICAgKiBAcmV0dXJuIHtX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93fQorICAgICAqLworICAgIGZsb3dCeU5hbWU6IGZ1bmN0aW9u
KGZsb3dOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIG5hbWVkRmxvdyA9IHRoaXMubmFtZWRGbG93
TWFwW2Zsb3dOYW1lXTsKKworICAgICAgICBpZiAoIW5hbWVkRmxvdykKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICByZXR1cm4gbmFtZWRGbG93OworICAgIH0KK30KIC8qKgogICog
QHR5cGUge1dlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsfQogICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCmluZGV4IDRlODNjY2E5
ZTYyNDkyMGVkN2NiODk0N2M2NDI0YTViMmU5YmRkNDAuLjc0NjFmNDJjMjJhYjBhZTIyOTkzMWE0
NjRhZGQ0NjU1YmNlYTI3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAKICNpbmNsdWRlICJGbG93VGhyZWFkQ29udHJvbGxlci5o
IgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRl
clJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJXZWJLaXROYW1l
ZEZsb3cuaCIKQEAgLTM1Nyw2ICszNTgsNyBAQCBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlck5h
bWVkRmxvd1RocmVhZDo6Zmxvd1RocmVhZE5hbWUoKSBjb25zdAogdm9pZCBSZW5kZXJOYW1lZEZs
b3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKQogewogICAgIFJlbmRl
ckZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQoKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0ZVJlZ2lvbkxheW91dChkb2N1bWVudCgpLCBt
X25hbWVkRmxvdy5nZXQoKSk7CiAKICAgICBpZiAoIW1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRU
aW1lci5pc0FjdGl2ZSgpICYmIG1fbmFtZWRGbG93LT5oYXNFdmVudExpc3RlbmVycygpKQogICAg
ICAgICBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIuc3RhcnRPbmVTaG90KDApOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDI1ODVhYjM1ZjhlOGYwZTEwNTc5MTk4YjBhNTAxYjdmNWQ3OTExZTIuLmVjMjMxYjgzZWU2
NGMyMjk5Mzc5ZWU2NTY5NjVlMWVkMDc0MWI0M2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wOS0wNiAgQW5kcmVpIFBvZW5hcnUgIDxwb2VuYXJ1QGFkb2JlLmNvbT4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBQcm90b2NvbCBFeHRlbnNpb246IEFkZCAicmVnaW9uTGF5b3V0VXBkYXRl
IiBldmVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTM0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4YW5kZXIgUGF2bG92LgorCisgICAgICAg
IFZhbGlkYXRlICJyZWdpb25MYXlvdXRVcGRhdGUiIGV2ZW50LgorCisgICAgICAgICogaW5zcGVj
dG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5o
dG1sOgorCiAyMDEyLTA5LTA2ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFr
b3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIEdhcmRlbmluZyBhZnRlciByMTI3NzI4LCBy
MTI3NTM0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29s
LWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CmluZGV4
IDdjODJiNDhlNzUzMTE0NmI2YjJhMGE4ODNmYWZkOTk3NzNiMjIwZTguLjlmZTljZjM2NzIyZjYz
YmVmYmM1Y2NjZGYxYjAxNTlhMWE5OWRkOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29t
bWFuZHMtZXhwZWN0ZWQudHh0CkBAIC00LDkgKzQsMTEgQEAgZ2V0TmFtZWRGbG93Q29sbGVjdGlv
biBCdWcgOTE2MDcKIGdldEZsb3dCeU5hbWUgQnVnIDkxODU1CiBuYW1lZEZsb3dDcmVhdGVkIEJ1
ZyA5MjczOQogbmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKK3JlZ2lvbkxheW91dFVwZGF0ZWQg
QnVnIDkzNDQzCitUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMiLgogCiAK
LVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMQorUnVubmluZzogdGVzdEdldE5h
bWVkRmxvd0NvbGxlY3Rpb24KID09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1bWVudCA9
PT0KICogTmFtZWQgRmxvdyAiZmxvdzEiCiBDb250ZW50IEVsZW1lbnRzOiAxCkBAIC0xOCwyMyAr
MjAsMjYgQEAgUmVnaW9uczogMgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMQogCi1S
dW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIKK1J1bm5pbmc6IHRlc3RHZXROYW1l
ZEZsb3dDb2xsZWN0aW9uV2l0aEludmFsaWREb2N1bWVudAogPT09IENTUyBOYW1lZCBGbG93cyBp
biAjZmFrZS1kb2N1bWVudCA9PT0KICNmYWtlLWRvY3VtZW50IGlzIG5vdCBhIGRvY3VtZW50CiAK
LVJ1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lMQorUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUK
ID09PSBOYW1lZCBGbG93ICJmbG93MiIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogKiBOYW1lZCBG
bG93ICJmbG93MiIKIENvbnRlbnQgRWxlbWVudHM6IDEKIFJlZ2lvbnM6IDIKIAotUnVubmluZzog
dGVzdEdldEZsb3dCeU5hbWUyCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJbnZhbGlk
TmFtZQogPT09IE5hbWUgRmxvdyAiZmxvdzQiIGZyb20gbWFpbiBkb2N1bWVudCA9PT0KIFRoZXJl
IGlzIG5vIE5hbWVkIEZsb3cgImZsb3c0IiBpbiB0aGUgbWFpbiBkb2N1bWVudAogCiBSdW5uaW5n
OiB0ZXN0TmFtZWRGbG93Q3JlYXRlZAogTmFtZWRGbG93Q3JlYXRlZDogInRtcE5hbWVkRmxvdyIK
IAorUnVubmluZzogdGVzdFJlZ2lvbkxheW91dFVwZGF0ZWQKK1JlZ2lvbkxheW91dFVwZGF0ZWQ6
ICJmbG93MyIKKwogUnVubmluZzogdGVzdE5hbWVkRmxvd1JlbW92ZWQKIE5hbWVkRmxvd1JlbW92
ZWQ6ICJ0bXBOYW1lZEZsb3ciCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbCBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAppbmRleCBk
ODM0YzJhN2ZjZmVkOTJlYWQ4MWY0ZjA2ZjRkODVjZDgwZjkxYjU0Li40MGVmNjkxZmFkYTRiOWFl
MTI5MDRhODVhZDgwNjI3NGVkMzNiNjc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1s
CkBAIC0yMSwyNCArMjEsMzIgQEAgZnVuY3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKIGZ1
bmN0aW9uIGNyZWF0ZU5hbWVkRmxvdygpCiB7CiAgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJhcnRpY2xlIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworCiAgICAgYXJ0aWNsZS5pZCA9ICJ0bXBBcnRpY2xlIjsKLSAgICBhcnRp
Y2xlLnN0eWxlLndlYmtpdEZsb3dJbnRvID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS5z
dHlsZVsiLXdlYmtpdC1mbG93LWludG8iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGFydGljbGUu
dGV4dENvbnRlbnQgPSAiVGhpcyB0ZXh0IGlzIGZyb20gQ1NTIE5hbWVkIEZsb3cgXCJ0bXBOYW1l
ZEZsb3dcIiI7CisKKyAgICBkaXYuaWQgPSAidG1wRGl2IjsKKyAgICBkaXYuc3R5bGVbIi13ZWJr
aXQtZmxvdy1mcm9tIl0gPSAidG1wTmFtZWRGbG93IjsKKyAgICBkaXYuc3R5bGVbImhlaWdodCJd
ID0gIjVweCI7CisgICAgZGl2LnN0eWxlWyJ3aWR0aCJdID0gIjIwcHgiOwogCiAgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGRpdik7CiB9CiAKIGZ1bmN0aW9uIHJlbW92ZU5hbWVkRmxvdygpCiB7Ci0gICAgdmFyIGFy
dGljbGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wQXJ0aWNsZSIpOwotCi0gICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92
ZUNoaWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIikpOworICAgIGRvY3Vt
ZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcERpdiIpKTsK
IH0KIAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxl
bWVudHMiKTsKICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0
aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0
ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwog
CkBAIC00NywxNiArNTUsMjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmNzc01vZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudC5p
ZCwgbmFtZWRGbG93Q2FsbGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5j
dGlvbiBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24g
bmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluIG1h
aW4gZG9jdW1lbnQgPT09Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3MpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCB0byBnZXQgTmFtZWQgRmxvd3Mi
KTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAg
ICAgICAgIG5hbWVkRmxvd3MgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBmbG93TmFt
ZSBpbiBuYW1lZEZsb3dNYXApCisgICAgICAgICAgICAgICAgICAgIG5hbWVkRmxvd3MucHVzaChu
YW1lZEZsb3dNYXBbZmxvd05hbWVdKTsKKwogICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Muc29y
dChmdW5jdGlvbiAobmYxLCBuZjIpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgobmYx
Lm5hbWUgPT0gbmYyLm5hbWUpID8gMCA6ICgobmYxLm5hbWUgPiBuZjIubmFtZSkgPyAxIDogLTEp
KTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTY4LDcgKzgwLDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5h
bWVkRmxvd0NvbGxlY3Rpb24yKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZs
b3dDb2xsZWN0aW9uV2l0aEludmFsaWREb2N1bWVudChuZXh0KQogICAgICAgICB7CiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJh
Y2spOwogCkBAIC04MiwxMSArOTQsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhub2Rl
SWQsIG5hbWVkRmxvd0NhbGxiYWNrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVu
Y3Rpb24gbmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93cykKKyAgICAgICAgICAgIGZ1bmN0aW9u
IG5hbWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd01hcCkKICAgICAgICAgICAgIHsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBGbG93cyBpbiAj
ZmFrZS1kb2N1bWVudCA9PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmIChuYW1lZEZsb3dzKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOwogICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05Nyw3ICsxMDksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0K
ICAgICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZTEobmV4dCkK
KyAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUobmV4dCkKICAgICAgICAgewogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENh
bGxiYWNrKTsKIApAQCAtMTIyLDcgKzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAg
ICAgfQogICAgICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMihu
ZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJbnZhbGlkTmFtZShu
ZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVz
dERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC0xNTMsMTUgKzE2NSwyOSBAQCBmdW5j
dGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCiAgICAg
ICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5h
bWVkRmxvdyIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CiAK
LSAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93Iikg
ewotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7
Ci0gICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0ZWQ6IFwi
dG1wTmFtZWRGbG93XCIiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlZ2lvbkxheW91dFVwZGF0ZWQo
bmV4dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91
dFVwZGF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZh
bHVhdGVJblBhZ2UoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVnaW9uM1wiKS5zdHlsZVtc
IndpZHRoXCJdID0gXCIyMDBweFwiIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNr
KGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5h
bWUgIT09ICJmbG93MyIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRG
bG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVnaW9uTGF5b3V0VXBkYXRlZDog
XCJmbG93M1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9LApAQCAtMTczLDEyICsxOTksMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7
Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIp
IHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIp
OwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
ICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmZsb3dOYW1lICE9PSAidG1wTmFtZWRGbG93IikK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywg
dGhpcyk7CiAKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRG
bG93UmVtb3ZlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOwogICAgICAgICAgICAgICAgIG5leHQoKTsK
QEAgLTIwNCw2ICsyMjgsNyBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVu
dHM6CiAgICAgPGxpPmdldEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KICAgICA8bGk+bmFt
ZWRGbG93Q3JlYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTI3MzkiPkJ1ZyA5MjczOTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVk
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+
QnVnIDkyNzM5PC9hPjwvbGk+CisgICAgPGxpPnJlZ2lvbkxheW91dFVwZGF0ZWQgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzIj5CdWcgOTM0NDM8
L2E+PC9saT4KIDwvdWw+CiA8L3A+CiAKQEAgLTIxNiw4ICsyNDEsMTAgQEAgVGVzdHMgdGhlIGZv
bGxvd2luZyBjb21tYW5kcyBhbmQgZXZlbnRzOgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZy
b206IGZsb3cyIj48L2Rpdj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+
PC9kaXY+CiAKLTxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPjwvYXJ0
aWNsZT4KLTxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MyI+PC9kaXY+Cis8YXJ0
aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3czIj4KKyAgICBUaGlzIHRleHQgaXMg
ZnJvbSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMiLgorPC9hcnRpY2xlPgorPGRpdiBpZD0icmVnaW9u
MyIgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MzsgaGVpZ2h0OiAyMHB4OyB3aWR0aDog
NXB4Ij48L2Rpdj4KIAogPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163066</attachid>
            <date>2012-09-10 01:41:50 -0700</date>
            <delta_ts>2012-09-10 06:36:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>42628</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NmI4M2E2Li5kODA5NGNkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MTAgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMTAgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNv
bT4KIAogICAgICAgICBbRUZMXSBTa2lwIDMgc3BhdGlhbCBuYXZpZ2F0aW9uIHRlc3QgY2FzZXMg
ZmFpbGluZyBhZnRlciByMTI4MDA2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhw
ZWN0ZWQudHh0CmluZGV4IDdjODJiNDguLjlmZTljZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lv
bnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0CkBAIC00LDkgKzQsMTEgQEAgZ2V0TmFtZWRGbG93Q29s
bGVjdGlvbiBCdWcgOTE2MDcKIGdldEZsb3dCeU5hbWUgQnVnIDkxODU1CiBuYW1lZEZsb3dDcmVh
dGVkIEJ1ZyA5MjczOQogbmFtZWRGbG93UmVtb3ZlZCBCdWcgOTI3MzkKK3JlZ2lvbkxheW91dFVw
ZGF0ZWQgQnVnIDkzNDQzCitUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMi
LgogCiAKLVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMQorUnVubmluZzogdGVz
dEdldE5hbWVkRmxvd0NvbGxlY3Rpb24KID09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1
bWVudCA9PT0KICogTmFtZWQgRmxvdyAiZmxvdzEiCiBDb250ZW50IEVsZW1lbnRzOiAxCkBAIC0x
OCwyMyArMjAsMjYgQEAgUmVnaW9uczogMgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczog
MQogCi1SdW5uaW5nOiB0ZXN0R2V0TmFtZWRGbG93Q29sbGVjdGlvbjIKK1J1bm5pbmc6IHRlc3RH
ZXROYW1lZEZsb3dDb2xsZWN0aW9uV2l0aEludmFsaWREb2N1bWVudAogPT09IENTUyBOYW1lZCBG
bG93cyBpbiAjZmFrZS1kb2N1bWVudCA9PT0KICNmYWtlLWRvY3VtZW50IGlzIG5vdCBhIGRvY3Vt
ZW50CiAKLVJ1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lMQorUnVubmluZzogdGVzdEdldEZsb3dC
eU5hbWUKID09PSBOYW1lZCBGbG93ICJmbG93MiIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogKiBO
YW1lZCBGbG93ICJmbG93MiIKIENvbnRlbnQgRWxlbWVudHM6IDEKIFJlZ2lvbnM6IDIKIAotUnVu
bmluZzogdGVzdEdldEZsb3dCeU5hbWUyCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJ
bnZhbGlkTmFtZQogPT09IE5hbWUgRmxvdyAiZmxvdzQiIGZyb20gbWFpbiBkb2N1bWVudCA9PT0K
IFRoZXJlIGlzIG5vIE5hbWVkIEZsb3cgImZsb3c0IiBpbiB0aGUgbWFpbiBkb2N1bWVudAogCiBS
dW5uaW5nOiB0ZXN0TmFtZWRGbG93Q3JlYXRlZAogTmFtZWRGbG93Q3JlYXRlZDogInRtcE5hbWVk
RmxvdyIKIAorUnVubmluZzogdGVzdFJlZ2lvbkxheW91dFVwZGF0ZWQKK1JlZ2lvbkxheW91dFVw
ZGF0ZWQ6ICJmbG93MyIKKwogUnVubmluZzogdGVzdE5hbWVkRmxvd1JlbW92ZWQKIE5hbWVkRmxv
d1JlbW92ZWQ6ICJ0bXBOYW1lZEZsb3ciCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9zdHlsZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbApp
bmRleCBkODM0YzJhLi40MGVmNjkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
c3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCkBA
IC0yMSwyNCArMjEsMzIgQEAgZnVuY3Rpb24gY3JlYXRlRHluYW1pY0VsZW1lbnRzKCkKIGZ1bmN0
aW9uIGNyZWF0ZU5hbWVkRmxvdygpCiB7CiAgICAgdmFyIGFydGljbGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJhcnRpY2xlIik7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworCiAgICAgYXJ0aWNsZS5pZCA9ICJ0bXBBcnRpY2xlIjsKLSAgICBhcnRpY2xl
LnN0eWxlLndlYmtpdEZsb3dJbnRvID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS5zdHls
ZVsiLXdlYmtpdC1mbG93LWludG8iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGFydGljbGUudGV4
dENvbnRlbnQgPSAiVGhpcyB0ZXh0IGlzIGZyb20gQ1NTIE5hbWVkIEZsb3cgXCJ0bXBOYW1lZEZs
b3dcIiI7CisKKyAgICBkaXYuaWQgPSAidG1wRGl2IjsKKyAgICBkaXYuc3R5bGVbIi13ZWJraXQt
Zmxvdy1mcm9tIl0gPSAidG1wTmFtZWRGbG93IjsKKyAgICBkaXYuc3R5bGVbImhlaWdodCJdID0g
IjVweCI7CisgICAgZGl2LnN0eWxlWyJ3aWR0aCJdID0gIjIwcHgiOwogCiAgICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGRpdik7CiB9CiAKIGZ1bmN0aW9uIHJlbW92ZU5hbWVkRmxvdygpCiB7Ci0gICAgdmFyIGFydGlj
bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wQXJ0aWNsZSIpOwotCi0gICAgZG9jdW1l
bnQuYm9keS5yZW1vdmVDaGlsZChhcnRpY2xlKTsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIikpOworICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcERpdiIpKTsKIH0K
IAogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgiZWxlbWVu
dHMiKTsKICAgICBJbnNwZWN0b3JUZXN0LnJ1blRlc3RTdWl0ZShbCi0gICAgICAgIGZ1bmN0aW9u
IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0ZXN0
R2V0TmFtZWRGbG93Q29sbGVjdGlvbihuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBA
IC00NywxNiArNTUsMjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVudC5pZCwg
bmFtZWRGbG93Q2FsbGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlv
biBuYW1lZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFt
ZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluIG1haW4g
ZG9jdW1lbnQgPT09Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3MpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCB0byBnZXQgTmFtZWQgRmxvd3MiKTsK
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAg
ICAgIG5hbWVkRmxvd3MgPSBbXTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBmbG93TmFtZSBp
biBuYW1lZEZsb3dNYXApCisgICAgICAgICAgICAgICAgICAgIG5hbWVkRmxvd3MucHVzaChuYW1l
ZEZsb3dNYXBbZmxvd05hbWVdKTsKKwogICAgICAgICAgICAgICAgIG5hbWVkRmxvd3Muc29ydChm
dW5jdGlvbiAobmYxLCBuZjIpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgobmYxLm5h
bWUgPT0gbmYyLm5hbWUpID8gMCA6ICgobmYxLm5hbWUgPiBuZjIubmFtZSkgPyAxIDogLTEpKTsK
ICAgICAgICAgICAgICAgICB9KTsKQEAgLTY4LDcgKzgwLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24yKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dD
b2xsZWN0aW9uV2l0aEludmFsaWREb2N1bWVudChuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2sp
OwogCkBAIC04MiwxMSArOTQsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhub2RlSWQs
IG5hbWVkRmxvd0NhbGxiYWNrKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rp
b24gbmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93cykKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5h
bWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd01hcCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiPT09IENTUyBOYW1lZCBGbG93cyBpbiAjZmFr
ZS1kb2N1bWVudCA9PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmIChuYW1lZEZsb3dzKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd01hcCkgewogICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOwogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CkBAIC05Nyw3ICsxMDksNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZTEobmV4dCkKKyAg
ICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUobmV4dCkKICAgICAgICAgewogICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChkb2N1bWVudENhbGxi
YWNrKTsKIApAQCAtMTIyLDcgKzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAg
fQogICAgICAgICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMihuZXh0
KQorICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZVdpdGhJbnZhbGlkTmFtZShuZXh0
KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERv
Y3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC0xNTMsMTUgKzE2NSwyOSBAQCBmdW5jdGlv
biB0ZXN0KCkKIAogICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXZlbnQpCiAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVk
RmxvdyIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBjYWxsYmFjaywgdGhpcyk7CiAKLSAg
ICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93Iikgewot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3IuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7Ci0g
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk5hbWVkRmxvd0NyZWF0ZWQ6IFwidG1w
TmFtZWRGbG93XCIiKTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0sCisKKyAgICAgICAgZnVuY3Rpb24gdGVzdFJlZ2lvbkxheW91dFVwZGF0ZWQobmV4
dCkKKyAgICAgICAgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91dFVw
ZGF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVnaW9uM1wiKS5zdHlsZVtcIndp
ZHRoXCJdID0gXCIyMDBweFwiIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV2
ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUg
IT09ICJmbG93MyIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93
Q3JlYXRlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVnaW9uTGF5b3V0VXBkYXRlZDogXCJm
bG93M1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9LApAQCAtMTczLDEyICsxOTksMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpIHsK
LSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOwot
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAg
ICAgICAgICAgIGlmIChldmVudC5kYXRhLmZsb3dOYW1lICE9PSAidG1wTmFtZWRGbG93IikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhp
cyk7CiAKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93
UmVtb3ZlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAg
LTIwNCw2ICsyMjgsNyBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6
CiAgICAgPGxpPmdldEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KICAgICA8bGk+bmFtZWRG
bG93Q3JlYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTI3MzkiPkJ1ZyA5MjczOTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVkIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+QnVn
IDkyNzM5PC9hPjwvbGk+CisgICAgPGxpPnJlZ2lvbkxheW91dFVwZGF0ZWQgPGEgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzIj5CdWcgOTM0NDM8L2E+
PC9saT4KIDwvdWw+CiA8L3A+CiAKQEAgLTIxNiw4ICsyNDEsMTAgQEAgVGVzdHMgdGhlIGZvbGxv
d2luZyBjb21tYW5kcyBhbmQgZXZlbnRzOgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206
IGZsb3cyIj48L2Rpdj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+PC9k
aXY+CiAKLTxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPjwvYXJ0aWNs
ZT4KLTxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MyI+PC9kaXY+Cis8YXJ0aWNs
ZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3czIj4KKyAgICBUaGlzIHRleHQgaXMgZnJv
bSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMiLgorPC9hcnRpY2xlPgorPGRpdiBpZD0icmVnaW9uMyIg
c3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MzsgaGVpZ2h0OiAyMHB4OyB3aWR0aDogNXB4
Ij48L2Rpdj4KIAogPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAxNGYyNmM0Li5jYzk4MDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzEgQEAKKzIwMTItMDkt
MTAgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQg
InJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQgdG8gdGhlIHByb3RvY29sLgorCisgICAgICAgIFJl
bW92ZWQgImdldEZsb3dCeU5hbWUiIGZyb20gcHJvdG9jb2wuCisKKyAgICAgICAgVGhlIGZyb250
LWVuZCBrZWVwcyBpbiBzeW5jIHRoZSByZXF1ZXN0ZWQgTmFtZWQgRmxvdyBDb2xsZWN0aW9ucy4K
KworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3Rv
Y29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmVu
c3VyZUZsb3dXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9u
OjpkaXNjYXJkTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29yZTo6VXBkYXRlUmVnaW9uTGF5
b3V0VGFzazo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpV
cGRhdGVSZWdpb25MYXlvdXRUYXNrOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnNjaGVkdWxlRm9yKToKKyAgICAgICAg
KFdlYkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29sbGVjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3Rl
ZEZsb3dzSWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRl
TmFtZWRGbG93SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0SW1wbCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVn
aW9uTGF5b3V0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFz
eW5jLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldEZsb3dCeU5hbWVBc3luYy5jYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFt
ZUFzeW5jKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUuX25hbWVkRmxvd1JlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlLl9yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5fcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9u
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5cGUubmFtZWRG
bG93Q3JlYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5
cGUubmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hl
ci5wcm90b3R5cGUucmVnaW9uTGF5b3V0VXBkYXRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlwZS5hcHBl
bmROYW1lZEZsb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24u
cHJvdG90eXBlLnJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRG
bG93Q29sbGVjdGlvbi5wcm90b3R5cGUuZmxvd0J5TmFtZSk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZlbnQpOgorCiAyMDEyLTA5
LTA5ICBUYWlqdSBUc3Vpa2kgIDx0emlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBzdWNjZXNz
Q2FsbGJhY2sgb2YgUmVzb2x2ZUxvY2FsRmlsZVN5c3RlbVVSTCBzaG91bGQgbm90IGJlIG9wdGlv
bmFsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4IDE1
ODhmYzYuLjU1NDc1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IE5hbWVk
Rmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcKICAgICBSZWZQ
dHI8V2ViS2l0TmFtZWRGbG93PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRGbG93OjpjcmVhdGUodGhp
cywgZmxvd05hbWUpOwogICAgIG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3VtZW50
LCBuZXdGbG93LT5uYW1lKCkpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5ld0Zsb3cuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG5l
d0Zsb3cucmVsZWFzZSgpOwogfQpAQCAtOTUsOSArOTUsOSBAQCB2b2lkIE5hbWVkRmxvd0NvbGxl
Y3Rpb246OmRpc2NhcmROYW1lZEZsb3coV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiAgICAg
QVNTRVJUKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3Rh
dGVOdWxsKTsKICAgICBBU1NFUlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwog
Ci0gICAgbV9uYW1lZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1lZEZsb3cpOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3cobV9kb2N1
bWVudCwgbmFtZWRGbG93LT5uYW1lKCkpOworICAgIG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRG
bG93KTsKIH0KIAogdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1bWVudERlc3Ryb3llZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggODE4NGNjMC4uZjk4
ZWEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29u
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjMzOSwx
OCArMjMzOSw2IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvd3MgZnJvbSB0aGUgZG9jdW1lbnQuIiwKICAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJnZXRGbG93QnlOYW1lIiwKLSAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1
bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRv
Y3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVy
LiIgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRG
bG93IiwgImRlc2NyaXB0aW9uIjogIkEgTmFtZWQgRmxvdy4iIH0KLSAgICAgICAgICAgICAgICBd
LAotICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93
IGlkZW50aWZpZWQgYnkgdGhlIGdpdmVuIG5hbWUiLAotICAgICAgICAgICAgICAgICJoaWRkZW4i
OiB0cnVlCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBA
IC0yMzY4LDggKzIzNTYsNyBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1l
IjogIm5hbWVkRmxvd0NyZWF0ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAi
RE9NLk5vZGVJZCIsICJkZXNjcmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1lZCBGbG93LiIgfQor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVk
RmxvdyIsICJkZXNjcmlwdGlvbiI6ICJUaGUgbmV3IE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAg
ICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5h
bWVkIEZsb3cgaXMgY3JlYXRlZC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBA
IC0yMzc4LDEwICsyMzY1LDE4IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93
UmVtb3ZlZCIsCiAgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwg
ImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRp
b24iOiAiSWRlbnRpZmllciBvZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImZsb3dOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2Ny
aXB0aW9uIjogIklkZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KICAgICAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVu
IGEgTmFtZWQgRmxvdyBpcyByZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBjb250ZW50IG5vZGVz
IGFuZCByZWdpb25zLiIsCiAgICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVnaW9uTGF5
b3V0VXBkYXRlZCIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRl
c2NyaXB0aW9uIjogIlRoZSBOYW1lZCBGbG93IHdob3NlIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2Vk
LiIgfQorICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93J3MgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQuIiwKKyAg
ICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdCiAg
ICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CmluZGV4IDI0YzcxOTcuLmJkYWNmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMjI2LDYgKzIyNiw0MiBAQCBQYXNzUmVmUHRyPFR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4gU2VsZWN0b3JQcm9maWxlOjp0b0luc3Bl
Y3Rvck9iamVjdAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCitjbGFzcyBVcGRh
dGVSZWdpb25MYXlvdXRUYXNrIHsKK3B1YmxpYzoKKyAgICBVcGRhdGVSZWdpb25MYXlvdXRUYXNr
KEluc3BlY3RvckNTU0FnZW50Kik7CisgICAgdm9pZCBzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZs
b3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOworICAgIHZvaWQgcmVzZXQoKSB7IG1fdGltZXIuc3Rv
cCgpOyB9CisgICAgdm9pZCBvblRpbWVyKFRpbWVyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+Kik7
CisKK3ByaXZhdGU6CisgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1fY3NzQWdlbnQ7CisgICAgVGlt
ZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4gbV90aW1lcjsKKyAgICBIYXNoTWFwPFdlYktpdE5h
bWVkRmxvdyosIGludD4gbV9uYW1lZEZsb3dzOworfTsKKworVXBkYXRlUmVnaW9uTGF5b3V0VGFz
azo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQpCisg
ICAgOiBtX2Nzc0FnZW50KGNzc0FnZW50KQorICAgICwgbV90aW1lcih0aGlzLCAmVXBkYXRlUmVn
aW9uTGF5b3V0VGFzazo6b25UaW1lcikKK3sKK30KKwordm9pZCBVcGRhdGVSZWdpb25MYXlvdXRU
YXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50
Tm9kZUlkKQoreworICAgIG1fbmFtZWRGbG93cy5hZGQobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJ
ZCk7CisKKyAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6b25UaW1lcihU
aW1lcjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiopCit7CisgICAgLy8gVGhlIHRpbWVyIGlzIHN0
b3BwZWQgb24gbV9jc3NBZ2VudCBkZXN0cnVjdGlvbiwgc28gdGhpcyBtZXRob2Qgd2lsbCBuZXZl
ciBiZSBjYWxsZWQgYWZ0ZXIgbV9jc3NBZ2VudCBoYXMgYmVlbiBkZXN0cm95ZWQuCisgICAgZm9y
IChIYXNoTWFwPFdlYktpdE5hbWVkRmxvdyosIGludD46Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZs
b3dzLmJlZ2luKCksIGVuZCA9IG1fbmFtZWRGbG93cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQor
ICAgICAgICBtX2Nzc0FnZW50LT5yZWdpb25MYXlvdXRVcGRhdGVkKGl0LT5maXJzdCwgaXQtPnNl
Y29uZCk7CisKKyAgICBtX25hbWVkRmxvd3MuY2xlYXIoKTsKK30KKwogY2xhc3MgSW5zcGVjdG9y
Q1NTQWdlbnQ6OlN0eWxlU2hlZXRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0
aW9uIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTdHlsZVNoZWV0QWN0aW9uKTsKIHB1Ymxp
YzoKQEAgLTUxOCw2ICs1NTQsOCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAg
ICAgbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9kb2N1bWVudFRv
SW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwogICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNS
ZXF1ZXN0ZWQuY2xlYXIoKTsKKyAgICBpZiAobV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQorICAg
ICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2stPnJlc2V0KCk7CiAgICAgcmVzZXRQc2V1ZG9T
dGF0ZXMoKTsKIH0KIApAQCAtNTM3LDIyICs1NzUsNDMgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQogICAgICAgICBtX2Zyb250ZW5kLT5tZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVh
dGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
Cit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRv
Y3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKLSAgICBpbnQgbm9kZUlkID0g
bV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOwotICAgIGlmICghbm9kZUlkIHx8ICFt
X25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKG5vZGVJZCkpCisgICAgaW50
IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1l
bnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1f
ZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQobm9kZUlkLCBuYW1lLnN0cmluZygpKTsKKyAgICBF
cnJvclN0cmluZyBlcnJvclN0cmluZzsKKyAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dDcmVhdGVk
KGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93LCBkb2N1bWVu
dE5vZGVJZCkpOwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVOYW1lZEZs
b3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIElu
c3BlY3RvckNTU0FnZW50Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwg
V2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJZCA9IG1fZG9tQWdl
bnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1lZEZs
b3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgIGludCBkb2N1bWVu
dE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAg
ICBpZiAoIWRvY3VtZW50Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250ZW5k
LT5uYW1lZEZsb3dSZW1vdmVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7CisgICAgbV9mcm9udGVu
ZC0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93LT5uYW1lKCkuc3Ry
aW5nKCkpOworfQorCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRVcGRhdGVSZWdpb25MYXlv
dXQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAg
ICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChk
b2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCisgICAgICAgIG1fdXBkYXRlUmVnaW9u
TGF5b3V0VGFzayA9IGFkb3B0UHRyKG5ldyBVcGRhdGVSZWdpb25MYXlvdXRUYXNrKHRoaXMpKTsK
KyAgICBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2stPnNjaGVkdWxlRm9yKG5hbWVkRmxvdywgZG9j
dW1lbnROb2RlSWQpOworfQorCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZWdpb25MYXlvdXRV
cGRhdGVkKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCit7
CisgICAgaWYgKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93
U3RhdGVOdWxsKQorICAgICAgICByZXR1cm47CisKKyAgICBFcnJvclN0cmluZyBlcnJvclN0cmlu
ZzsKKyAgICBtX2Zyb250ZW5kLT5yZWdpb25MYXlvdXRVcGRhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFt
ZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCiBi
b29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQs
IENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUpCkBAIC04MjgsMzIgKzg4NywxNiBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogICAgICAgICByZXR1cm47CiAKICAgICBtX25hbWVk
Rmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7CisKICAgICBWZWN0
b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzVmVjdG9yID0gZG9jdW1lbnQt
Pm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygpOwogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJy
YXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+IG5hbWVkRmxvd3MgPSBUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAKLQogICAg
IGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID46Oml0ZXJhdG9yIGl0ID0gbmFt
ZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgpOyArK2l0
KQogICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KGVy
cm9yU3RyaW5nLCBpdC0+Z2V0KCksIGRvY3VtZW50Tm9kZUlkKSk7CiAKICAgICByZXN1bHQgPSBu
YW1lZEZsb3dzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0Rmxv
d0J5TmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJZCwgY29u
c3QgU3RyaW5nJiBmbG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4m
IHJlc3VsdCkKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnRE
b2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlmICghZG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFtZWRGbG93
ID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0gICAgaWYg
KCF3ZWJraXROYW1lZEZsb3cpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHRhcmdldCBD
U1MgTmFtZWQgRmxvdyBmb3VuZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQ
dHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Iod2Via2l0TmFtZWRGbG93KTsKLSAgICByZXN1
bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgd2Via2l0TmFtZWRGbG93
LCBkb2N1bWVudE5vZGVJZCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0YXJ0U2Vs
ZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCiB7CiAgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9m
aWxlID0gYWRvcHRQdHIobmV3IFNlbGVjdG9yUHJvZmlsZSgpKTsKQEAgLTkzMyw2ICs5NzYsMTUg
QEAgRWxlbWVudCogSW5zcGVjdG9yQ1NTQWdlbnQ6OmVsZW1lbnRGb3JJZChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgcmV0dXJuIHRvRWxlbWVudChub2RlKTsKIH0K
IAoraW50IEluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJ
ZChEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gbV9kb21B
Z2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQgfHwg
IW1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY29udGFpbnMoZG9jdW1lbnROb2RlSWQp
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBkb2N1bWVudE5vZGVJZDsKK30KKwog
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQq
IHN0eWxlU2hlZXQsIFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHls
ZVNoZWV0SGVhZGVyPiogcmVzdWx0KQogewogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3Bl
Y3RvclN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0
Kj4oc3R5bGVTaGVldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaAppbmRleCA5MzFlZDNkLi5jMTkwNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBOb2RlOwog
Y2xhc3MgTm9kZUxpc3Q7CiBjbGFzcyBTZWxlY3RvclByb2ZpbGU7CiBjbGFzcyBTdHlsZVJlc29s
dmVyOworY2xhc3MgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKIAogI2lmIEVOQUJMRShJTlNQRUNU
T1IpCiAKQEAgLTk5LDggKzEwMCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5
UmVzdWx0Q2hhbmdlZCgpOwotICAgIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICB2b2lkIGRpZFJlbW92ZU5hbWVkRmxvdyhE
b2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgdm9pZCBkaWRDcmVhdGVO
YW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIHdpbGxSZW1v
dmVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lkIGRpZFVw
ZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHZvaWQg
cmVnaW9uTGF5b3V0VXBkYXRlZChXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQp
OwogCiAgICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NDb21wdXRlZFN0eWxlUHJvcGVydHk+ID4mKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5s
aW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTU3R5bGU+JiBhdHRyaWJ1dGVzKTsKQEAgLTExNiw3ICsxMTksNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcqLCBS
ZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5m
bz4gPiYgcmVzdWx0KTsKICAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGZvcmNlZFBz
ZXVkb0NsYXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCBnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVy
cm9yU3RyaW5nKiwgaW50IGRvY3VtZW50Tm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZv
aWQgZ2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgY29uc3Qg
U3RyaW5nJiBmbG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4mIHJl
c3VsdCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRTZWxlY3RvclByb2ZpbGVyKEVycm9yU3Ry
aW5nKik7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BTZWxlY3RvclByb2ZpbGVyKEVycm9yU3RyaW5n
KiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZT4mKTsKQEAgLTE0NSw2
ICsxNDcsNyBAQCBwcml2YXRlOgogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0
eWxlKiBhc0luc3BlY3RvclN0eWxlU2hlZXQoRWxlbWVudCogZWxlbWVudCk7CiAgICAgRWxlbWVu
dCogZWxlbWVudEZvcklkKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCk7CisgICAgaW50IGRvY3Vt
ZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50Kik7CiAgICAgdm9pZCBjb2xsZWN0
U3R5bGVTaGVldHMoQ1NTU3R5bGVTaGVldCosIFR5cGVCdWlsZGVyOjpBcnJheTxXZWJDb3JlOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPiopOwogCiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldCogYmluZFN0eWxlU2hlZXQoQ1NTU3R5bGVTaGVldCopOwpAQCAtMTc2LDYgKzE3
OSw3IEBAIHByaXZhdGU6CiAgICAgRG9jdW1lbnRUb1ZpYUluc3BlY3RvclN0eWxlU2hlZXQgbV9k
b2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICBOb2RlSWRUb0ZvcmNlZFBzZXVkb1N0
YXRlIG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTsKICAgICBIYXNoU2V0PGludD4gbV9uYW1l
ZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZDsKKyAgICBPd25QdHI8VXBkYXRlUmVnaW9uTGF5b3V0
VGFzaz4gbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrOwogCiAgICAgaW50IG1fbGFzdFN0eWxlU2hl
ZXRJZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcAppbmRleCA0MWI3YmM4Li4xNDFjMjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAt
MjMxLDE2ICsyMzEsMjIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BT
aGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnUKICAgICAgICAgZG9tQWdl
bnQtPndpbGxQb3BTaGFkb3dSb290KGhvc3QsIHJvb3QpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1l
ZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3Vt
ZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAgICAgaWYgKElu
c3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coZG9jdW1l
bnQsIG5hbWUpOworICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93KGRvY3VtZW50
LCBuYW1lZEZsb3cpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVt
b3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3Nz
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAg
ICBjc3NBZ2VudC0+ZGlkUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAg
Y3NzQWdlbnQtPndpbGxSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQsIG5hbWVkRmxvdyk7Cit9CisK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisgICAgaWYgKEluc3BlY3RvckNT
U0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNTU0FnZW50
KCkpCisgICAgICAgIGNzc0FnZW50LT5kaWRVcGRhdGVSZWdpb25MYXlvdXQoZG9jdW1lbnQsIG5h
bWVkRmxvdyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjptb3VzZURpZE1v
dmVPdmVyRWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCB1bnNpZ25lZCBtb2RpZmllckZsYWdzKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bi5oCmluZGV4IGMyNWQzNzIuLjIzNzM2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTExMyw4ICsxMTMsOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoRG9jdW1lbnQq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFk
b3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9z
dCwgU2hhZG93Um9vdCopOwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1
bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVt
b3ZlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cq
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0
TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3Vt
ZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVP
dmVyRWxlbWVudChQYWdlKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOwpAQCAtMjkw
LDggKzI5MSw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgbWVkaWFRdWVyeVJlc3VsdENo
YW5nZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQdXNo
U2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRv
d1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEVsZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCos
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgc3RhdGljIHZvaWQgZGlkUmVtb3ZlTmFt
ZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3Rh
dGljIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERv
Y3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgZGlkVXBkYXRlUmVn
aW9uTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1l
ZEZsb3cqKTsKIAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlm
aWVyRmxhZ3MpOwogICAgIHN0YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqKTsKQEAgLTU2MSwyMSArNTYzLDMwIEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93
Um9vCiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5h
bWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQog
ewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICBk
aWRDcmVhdGVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1l
KTsKKyAgICAgICAgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBk
b2N1bWVudCwgbmFtZWRGbG93KTsKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVk
RmxvdyogbmFtZWRGbG93KQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQotICAgICAgICBkaWRSZW1vdmVOYW1lZEZsb3dJbXBsKGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgd2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoaW5z
dHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CisjZW5kaWYKK30KKworaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQo
RG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyNpZiBF
TkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5z
dHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlkVXBkYXRl
UmVnaW9uTGF5b3V0SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93
KTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1N0eWxlTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5kZXggODIwNjk1Yi4uOTcwYTM2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAt
MzksNiArMzksOCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbCA9IGZ1bmN0aW9uKCkKICAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9N
QWdlbnQuRXZlbnRzLlVuZG9SZWRvUmVxdWVzdGVkLCB0aGlzLl91bmRvUmVkb1JlcXVlc3RlZCwg
dGhpcyk7CiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb0NvbXBsZXRlZCwgdGhpcy5fdW5kb1JlZG9D
b21wbGV0ZWQsIHRoaXMpOwogICAgIHRoaXMuX3Jlc291cmNlQmluZGluZyA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbFJlc291cmNlQmluZGluZyh0aGlzKTsKKyAgICB0aGlzLl9uYW1l
ZEZsb3dDb2xsZWN0aW9ucyA9IHt9OworICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuRG9jdW1lbnRVcGRhdGVkLCB0
aGlzLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zLCB0aGlzKTsKICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyQ1NTRGlzcGF0Y2hlcihuZXcgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIo
dGhpcykpOwogICAgIENTU0FnZW50LmVuYWJsZSgpOwogfQpAQCAtNTgsNyArNjAsOCBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMgPSB7CiAgICAgU3R5bGVTaGVldENoYW5nZWQ6
ICJTdHlsZVNoZWV0Q2hhbmdlZCIsCiAgICAgTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6ICJNZWRp
YVF1ZXJ5UmVzdWx0Q2hhbmdlZCIsCiAgICAgTmFtZWRGbG93Q3JlYXRlZDogIk5hbWVkRmxvd0Ny
ZWF0ZWQiLAotICAgIE5hbWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIgorICAgIE5h
bWVkRmxvd1JlbW92ZWQ6ICJOYW1lZEZsb3dSZW1vdmVkIiwKKyAgICBSZWdpb25MYXlvdXRVcGRh
dGVkOiAiUmVnaW9uTGF5b3V0VXBkYXRlZCIKIH0KIAogV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9k
ZWwucHJvdG90eXBlID0gewpAQCAtMTcxLDQ4ICsxNzQsNjIgQEAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0g
e0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbig/QXJyYXku
PFdlYkluc3BlY3Rvci5OYW1lZEZsb3c+KX0gdXNlckNhbGxiYWNrCisgICAgICogQHBhcmFtIHtE
T01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCisgICAgICogQHBhcmFtIHtmdW5jdGlvbihP
YmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKICAg
ICAgKi8KLSAgICBnZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmM6IGZ1bmN0aW9uKG5vZGVJZCwg
dXNlckNhbGxiYWNrKQorICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzogZnVuY3Rpb24o
ZG9jdW1lbnROb2RlSWQsIHVzZXJDYWxsYmFjaykKICAgICB7CisgICAgICAgIHZhciBuYW1lZEZs
b3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRd
OworICAgICAgICBpZiAobmFtZWRGbG93Q29sbGVjdGlvbikgeworICAgICAgICAgICAgdXNlckNh
bGxiYWNrKG5hbWVkRmxvd0NvbGxlY3Rpb24ubmFtZWRGbG93TWFwKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIC8qKgotICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKD9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbihPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdz4pfSB1c2VyQ2FsbGJhY2sKICAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9
IGVycm9yCi0gICAgICAgICAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0g
bmFtZWRGbG93UGF5bG9hZAorICAgICAgICAgKiBAcGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFt
ZWRGbG93Pn0gbmFtZWRGbG93UGF5bG9hZAogICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2sodXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9hZCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2FkKQogICAgICAgICAg
ICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJh
eShuYW1lZEZsb3dQYXlsb2FkKSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29s
bGVjdGlvbihuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9uYW1lZEZs
b3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0gPSBuYW1lZEZsb3dDb2xsZWN0aW9uOworICAg
ICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uLm5hbWVkRmxvd01h
cCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBDU1NBZ2VudC5nZXROYW1l
ZEZsb3dDb2xsZWN0aW9uKG5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2sp
KTsKKyAgICAgICAgQ1NTQWdlbnQuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihkb2N1bWVudE5vZGVJ
ZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAgICAgLyoq
Ci0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAorICAgICAqIEBwYXJhbSB7
RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJZAogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBm
bG93TmFtZQogICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1dlYkluc3BlY3Rvci5OYW1lZEZsb3cp
fSB1c2VyQ2FsbGJhY2sKICAgICAgKi8KLSAgICBnZXRGbG93QnlOYW1lQXN5bmM6IGZ1bmN0aW9u
KG5vZGVJZCwgZmxvd05hbWUsIHVzZXJDYWxsYmFjaykKKyAgICBnZXRGbG93QnlOYW1lQXN5bmM6
IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgdXNlckNhbGxiYWNrKQogICAgIHsK
KyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0
aW9uc1tkb2N1bWVudE5vZGVJZF07CisgICAgICAgIGlmIChuYW1lZEZsb3dDb2xsZWN0aW9uKSB7
CisgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29sbGVjdGlvbi5mbG93QnlOYW1l
KGZsb3dOYW1lKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICAv
KioKICAgICAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5zcGVjdG9yLk5hbWVkRmxvdyl9
IHVzZXJDYWxsYmFjawotICAgICAgICAgKiBAcGFyYW0gez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IK
LSAgICAgICAgICogQHBhcmFtIHs/Q1NTQWdlbnQuTmFtZWRGbG93PX0gbmFtZWRGbG93UGF5bG9h
ZAorICAgICAgICAgKiBAcGFyYW0gez9PYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLk5hbWVk
Rmxvdz59IG5hbWVkRmxvd01hcAogICAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2sodXNlckNhbGxiYWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2sodXNlckNhbGxiYWNrLCBuYW1lZEZsb3dNYXApCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmIChlcnJvciB8fCAhbmFtZWRGbG93UGF5bG9hZCkKKyAgICAgICAgICAgIGlmICgh
bmFtZWRGbG93TWFwKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2soV2ViSW5zcGVjdG9yLk5h
bWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCkpOworICAgICAgICAgICAgICAg
IHVzZXJDYWxsYmFjayh0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF0u
Zmxvd0J5TmFtZShmbG93TmFtZSkpOwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTQWdlbnQuZ2V0
Rmxvd0J5TmFtZShub2RlSWQsIGZsb3dOYW1lLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxs
YmFjaykpOworICAgICAgICB0aGlzLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyhkb2N1bWVu
dE5vZGVJZCwgY2FsbGJhY2suYmluZCh0aGlzLCB1c2VyQ2FsbGJhY2spKTsKICAgICB9LAogCiAg
ICAgLyoqCkBAIC0zNTAsNTEgKzM2Nyw0OCBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQu
Tm9kZUlkfSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAg
ICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8K
LSAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5hbWUpCisg
ICAgX25hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQpCiAgICAgewot
ICAgICAgICBpZiAoIXRoaXMuaGFzRXZlbnRMaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIC8qKgotICAgICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSBy
b290Ci0gICAgICAgICovCi0gICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBw
b3J0IGZvciBOYW1lZEZsb3dzIGluIHRoZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAo
ZG9jdW1lbnROb2RlSWQgIT09IHJvb3QuaWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQo
bmFtZWRGbG93UGF5bG9hZCk7CisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhp
cy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbbmFtZWRGbG93LmRvY3VtZW50Tm9kZUlkXTsKIAotICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0
eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3Vt
ZW50Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOwotICAgICAgICB9CisgICAgICAgIGlmICghbmFtZWRG
bG93Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAg
ICBuYW1lZEZsb3dDb2xsZWN0aW9uLmFwcGVuZE5hbWVkRmxvdyhuYW1lZEZsb3cpOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgbmFtZWRGbG93KTsKICAgICB9LAogCiAgICAgLyoq
CiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZmxvd05hbWUKICAg
ICAgKi8KLSAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIG5h
bWUpCisgICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93
TmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCkpCisgICAgICAgIHZh
ciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbZG9jdW1l
bnROb2RlSWRdOworCisgICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAvKioKLSAgICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5ET01Eb2N1bWVudH0gcm9vdAotICAgICAgICAqLwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFj
ayhyb290KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogQXQgdGhlIG1vbWVudCB3
ZSBvbmx5IHdhbnQgc3VwcG9ydCBmb3IgTmFtZWRGbG93cyBpbiB0aGUgbWFpbiBkb2N1bWVudAot
ICAgICAgICAgICAgaWYgKGRvY3VtZW50Tm9kZUlkICE9PSByb290LmlkKQotICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgbmFtZWRGbG93Q29sbGVjdGlvbi5yZW1vdmVOYW1lZEZsb3co
Zmxvd05hbWUpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5v
ZGVJZDogZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lOiBmbG93TmFtZSB9KTsKKyAgICB9LAogCi0g
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVtb3ZlZCwgeyBkb2N1bWVudE5vZGVJZDogZG9j
dW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7Ci0gICAgICAgIH0KKyAgICAvKioKKyAgICAgKiBA
cGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9hZAorICAgICAqLworICAg
IF9yZWdpb25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsK
KyAgICAgICAgdmFyIG5hbWVkRmxvdyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXls
b2FkKG5hbWVkRmxvd1BheWxvYWQpOworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9
IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW25hbWVkRmxvdy5kb2N1bWVudE5vZGVJZF07CiAK
LSAgICAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LnJlcXVlc3REb2N1bWVudChjYWxsYmFjay5i
aW5kKHRoaXMpKTsKKyAgICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRGbG93
KG5hbWVkRmxvdyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBuYW1lZEZs
b3cpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTQ2Myw2ICs0NzcsMTEgQEAgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5n
cyA9IHt9OwogICAgIH0sCiAKKyAgICBfcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9uczogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAg
ICB9LAorCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ1NTTG9jYXRpb259
IHJhd0xvY2F0aW9uCiAgICAgICogQHJldHVybiB7P1dlYkluc3BlY3Rvci5VSUxvY2F0aW9ufQpA
QCAtMTMyNiwyMSArMTM0NSwyOCBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5
cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlk
fSBkb2N1bWVudE5vZGVJZAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCisgICAgICogQHBh
cmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKICAgICAgKi8KLSAgICBu
YW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1l
ZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQogICAgIHsKLSAgICAgICAg
dGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd0NyZWF0ZWQoZG9jdW1lbnROb2RlSWQsIG5hbWUpOwor
ICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3dQYXlsb2Fk
KTsKICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRv
Y3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZmxvd05hbWUKICAgICAgKi8KLSAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlv
bihkb2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihk
b2N1bWVudE5vZGVJZCwgZmxvd05hbWUpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5f
bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nz
c01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSk7CisgICAg
fSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZs
b3dQYXlsb2FkCisgICAgICovCisgICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFt
ZWRGbG93UGF5bG9hZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9yZWdpb25MYXlv
dXRVcGRhdGVkKG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0KIH0KIApAQCAtMTM1MCw3ICsxMzc2
LDcgQEAgV2ViSW5zcGVjdG9yLkNTU0Rpc3BhdGNoZXIucHJvdG90eXBlID0gewogICovCiBXZWJJ
bnNwZWN0b3IuTmFtZWRGbG93ID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICB0aGlzLm5vZGVJ
ZCA9IHBheWxvYWQuZG9jdW1lbnROb2RlSWQ7CisgICAgdGhpcy5kb2N1bWVudE5vZGVJZCA9IHBh
eWxvYWQuZG9jdW1lbnROb2RlSWQ7CiAgICAgdGhpcy5uYW1lID0gcGF5bG9hZC5uYW1lOwogICAg
IHRoaXMub3ZlcnNldCA9IHBheWxvYWQub3ZlcnNldDsKICAgICB0aGlzLmNvbnRlbnQgPSBwYXls
b2FkLmNvbnRlbnQ7CkBAIC0xMzY3LDIwICsxMzkzLDUwIEBAIFdlYkluc3BlY3Rvci5OYW1lZEZs
b3cucGFyc2VQYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKIH0KIAogLyoqCi0gKiBAcGFyYW0g
ez9BcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pj19IG5hbWVkRmxvd1BheWxvYWQKLSAqIEByZXR1
cm4gez9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz59CisgKiBAY29uc3RydWN0b3IKKyAq
IEBwYXJhbSB7QXJyYXkuPENTU0FnZW50Lk5hbWVkRmxvdz59IHBheWxvYWQKICAqLwotV2ViSW5z
cGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheSA9IGZ1bmN0aW9uKG5hbWVkRmxvd1Bh
eWxvYWQpCitXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbiA9IGZ1bmN0aW9uKHBheWxv
YWQpCiB7Ci0gICAgaWYgKCFuYW1lZEZsb3dQYXlsb2FkKQotICAgICAgICByZXR1cm4gbnVsbDsK
KyAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pn0g
Ki8KKyAgICB0aGlzLm5hbWVkRmxvd01hcCA9IHt9OwogCi0gICAgdmFyIHBhcnNlZEFycmF5ID0g
W107Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lZEZsb3dQYXlsb2FkLmxlbmd0aDsgKytp
KQotICAgICAgICBwYXJzZWRBcnJheVtpXSA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQ
YXlsb2FkKG5hbWVkRmxvd1BheWxvYWRbaV0pOwotICAgIHJldHVybiBwYXJzZWRBcnJheTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHBheWxvYWQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFy
IG5hbWVkRmxvdyA9IFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXlsb2FkKHBheWxvYWRb
aV0pOworICAgICAgICB0aGlzLm5hbWVkRmxvd01hcFtuYW1lZEZsb3cubmFtZV0gPSBuYW1lZEZs
b3c7CisgICAgfQogfQogCitXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbi5wcm90b3R5
cGUgPSB7CisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fSBu
YW1lZEZsb3cKKyAgICAgKi8KKyAgICBhcHBlbmROYW1lZEZsb3c6IGZ1bmN0aW9uKG5hbWVkRmxv
dykKKyAgICB7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFwW25hbWVkRmxvdy5uYW1lXSA9IG5h
bWVkRmxvdzsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dO
YW1lCisgICAgICovCisgICAgcmVtb3ZlTmFtZWRGbG93OiBmdW5jdGlvbihmbG93TmFtZSkKKyAg
ICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQorICAgICAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5OYW1lZEZsb3d9CisgICAgICovCisgICAgZmxvd0J5TmFtZTogZnVu
Y3Rpb24oZmxvd05hbWUpCisgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93ID0gdGhpcy5uYW1l
ZEZsb3dNYXBbZmxvd05hbWVdOworCisgICAgICAgIGlmICghbmFtZWRGbG93KQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgIHJldHVybiBuYW1lZEZsb3c7CisgICAgfQorfQogLyoq
CiAgKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWx9CiAgKi8KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXggNGU4
M2NjYS4uNzQ2MWY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJO
YW1lZEZsb3dUaHJlYWQuaCIKIAogI2luY2x1ZGUgIkZsb3dUaHJlYWRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyUmVn
aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIldlYktpdE5hbWVkRmxv
dy5oIgpAQCAtMzU3LDYgKzM1OCw3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpmbG93VGhyZWFkTmFtZSgpIGNvbnN0CiB2b2lkIFJlbmRlck5hbWVkRmxvd1Ro
cmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpCiB7CiAgICAgUmVuZGVyRmxv
d1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCgpOworICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KGRvY3VtZW50KCksIG1fbmFt
ZWRGbG93LmdldCgpKTsKIAogICAgIGlmICghbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVy
LmlzQWN0aXZlKCkgJiYgbV9uYW1lZEZsb3ctPmhhc0V2ZW50TGlzdGVuZXJzKCkpCiAgICAgICAg
IG1fcmVnaW9uTGF5b3V0VXBkYXRlRXZlbnRUaW1lci5zdGFydE9uZVNob3QoMCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163559</attachid>
            <date>2012-09-12 02:35:26 -0700</date>
            <delta_ts>2012-09-12 04:23:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>43557</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MGNhOWE5Li5hMWIwNTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MTIgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMTIgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBPbmx5IGFsbG93IG9uZSB1c2VyLWdlc3R1cmUgZ2F0ZWQgYWN0aW9u
IHBlciB1c2VyIGFjdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3Rl
ZC50eHQKaW5kZXggN2M4MmI0OC4uOWZlOWNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1j
b21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0
aW9uIEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQg
QnVnIDkyNzM5CiBuYW1lZEZsb3dSZW1vdmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRl
ZCBCdWcgOTM0NDMKK1RoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAK
IAotUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0
TmFtZWRGbG93Q29sbGVjdGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50
ID09PQogKiBOYW1lZCBGbG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIz
ICsyMCwyNiBAQCBSZWdpb25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAK
LVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5h
bWVkRmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dz
IGluICNmYWtlLWRvY3VtZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQK
IAotUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFt
ZQogPT09IE5hbWVkIEZsb3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVk
IEZsb3cgImZsb3cyIgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5n
OiB0ZXN0R2V0Rmxvd0J5TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFs
aWROYW1lCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhl
cmUgaXMgbm8gTmFtZWQgRmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5p
bmc6IHRlc3ROYW1lZEZsb3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93
IgogCitSdW5uaW5nOiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRl
ZDogImZsb3czIgorCiBSdW5uaW5nOiB0ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVt
b3ZlZDogInRtcE5hbWVkRmxvdyIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4
IGQ4MzRjMmEuLjcyODE1NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTIx
LDI0ICsyMSwzMiBAQCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljRWxlbWVudHMoKQogZnVuY3Rpb24g
Y3JlYXRlTmFtZWRGbG93KCkKIHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImFydGljbGUiKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisKICAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5
bGUud2Via2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyIt
d2Via2l0LWZsb3ctaW50byJdID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29u
dGVudCA9ICJUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wi
IjsKKworICAgIGRpdi5pZCA9ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93
LWZyb20iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4
IjsKKyAgICBkaXYuc3R5bGVbIndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2
KTsKIH0KIAogZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBm
dW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIp
OwogICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVz
dEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTQ3
LDE2ICs1NSwyMCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50LmlkLCBuYW1l
ZEZsb3dDYWxsYmFjayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG5h
bWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZs
b3dDYWxsYmFjayhuYW1lZEZsb3dNYXApCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4gbWFpbiBkb2N1
bWVudCA9PT0iKTsKIAotICAgICAgICAgICAgICAgIGlmICghbmFtZWRGbG93cykgeworICAgICAg
ICAgICAgICAgIGlmICghbmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIHRvIGdldCBOYW1lZCBGbG93cyIpOwogICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCisgICAgICAgICAgICAgICAg
bmFtZWRGbG93cyA9IFtdOworICAgICAgICAgICAgICAgIGZvciAodmFyIGZsb3dOYW1lIGluIG5h
bWVkRmxvd01hcCkKKyAgICAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5wdXNoKG5hbWVkRmxv
d01hcFtmbG93TmFtZV0pOworCiAgICAgICAgICAgICAgICAgbmFtZWRGbG93cy5zb3J0KGZ1bmN0
aW9uIChuZjEsIG5mMikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gKChuZjEubmFtZSA9
PSBuZjIubmFtZSkgPyAwIDogKChuZjEubmFtZSA+IG5mMi5uYW1lKSA/IDEgOiAtMSkpOwogICAg
ICAgICAgICAgICAgIH0pOwpAQCAtNjgsNyArODAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgICAgIH0KICAgICAgICAgfSwKIAotICAgICAgICBmdW5jdGlvbiB0ZXN0R2V0TmFtZWRGbG93
Q29sbGVjdGlvbjIobmV4dCkKKyAgICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxl
Y3Rpb25XaXRoSW52YWxpZERvY3VtZW50KG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAK
QEAgLTgyLDExICs5NCwxMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKG5vZGVJZCwgbmFt
ZWRGbG93Q2FsbGJhY2spOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBu
YW1lZEZsb3dDYWxsYmFjayhuYW1lZEZsb3dzKQorICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRG
bG93Q2FsbGJhY2sobmFtZWRGbG93TWFwKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluICNmYWtlLWRv
Y3VtZW50ID09PSIpOwogCi0gICAgICAgICAgICAgICAgaWYgKG5hbWVkRmxvd3MpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobmFtZWRGbG93TWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJbIV0gRmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
QEAgLTk3LDcgKzEwOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAg
ICB9LAogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQorICAgICAg
ICBmdW5jdGlvbiB0ZXN0R2V0Rmxvd0J5TmFtZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2sp
OwogCkBAIC0xMjIsNyArMTM0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0sCiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUyKG5leHQpCisg
ICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lKG5leHQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1l
bnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTE1MywxNSArMTY1LDI5IEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKICAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93
IikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgV2ViSW5z
cGVjdG9yLmNzc01vZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
TW9kZWwuRXZlbnRzLk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAotICAgICAg
ICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKLSAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1l
ZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKworICAgICAgICBmdW5jdGlvbiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZChuZXh0KQor
ICAgICAgICB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRl
ZCwgY2FsbGJhY2ssIHRoaXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZSgid2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVnaW9uM1wiKS5zdHlsZVtc
IndpZHRoXCJdID0gXCIyMDBweFwiIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNr
KGV2ZW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5h
bWUgIT09ICJmbG93MyIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRG
bG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5SZWdpb25MYXlvdXRVcGRhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVnaW9uTGF5b3V0VXBkYXRlZDog
XCJmbG93M1wiIik7CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9LApAQCAtMTczLDEyICsxOTksMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7
Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIp
IHsKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIp
OwotICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
ICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLmZsb3dOYW1lICE9PSAidG1wTmFtZWRGbG93IikK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywg
dGhpcyk7CiAKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRG
bG93UmVtb3ZlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOwogICAgICAgICAgICAgICAgIG5leHQoKTsK
QEAgLTIwNCw2ICsyMjgsNyBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVu
dHM6CiAgICAgPGxpPmdldEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KICAgICA8bGk+bmFt
ZWRGbG93Q3JlYXRlZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTI3MzkiPkJ1ZyA5MjczOTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVk
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+
QnVnIDkyNzM5PC9hPjwvbGk+CisgICAgPGxpPnJlZ2lvbkxheW91dFVwZGF0ZWQgPGEgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzIj5CdWcgOTM0NDM8
L2E+PC9saT4KIDwvdWw+CiA8L3A+CiAKQEAgLTIxNiw4ICsyNDEsMTAgQEAgVGVzdHMgdGhlIGZv
bGxvd2luZyBjb21tYW5kcyBhbmQgZXZlbnRzOgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZy
b206IGZsb3cyIj48L2Rpdj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+
PC9kaXY+CiAKLTxhcnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPjwvYXJ0
aWNsZT4KLTxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MyI+PC9kaXY+Cis8YXJ0
aWNsZSBzdHlsZT0iLXdlYmtpdC1mbG93LWludG86IGZsb3czIj4KKyAgICBUaGlzIHRleHQgaXMg
ZnJvbSBDU1MgTmFtZWQgRmxvdyAiZmxvdzMiLgorPC9hcnRpY2xlPgorPGRpdiBpZD0icmVnaW9u
MyIgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MzsgaGVpZ2h0OiAyMHB4OyB3aWR0aDog
NXB4Ij48L2Rpdj4KIAogPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA0YTlmODliLi44OTg3YjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTIt
MDktMTIgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIg
ZXZlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkz
NDQzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
ZWQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQgdG8gdGhlIHByb3RvY29sLgorCisgICAgICAg
IFJlbW92ZWQgImdldEZsb3dCeU5hbWUiIGZyb20gcHJvdG9jb2wuCisKKyAgICAgICAgVGhlIGZy
b250LWVuZCBrZWVwcyBpbiBzeW5jIHRoZSByZXF1ZXN0ZWQgTmFtZWQgRmxvdyBDb2xsZWN0aW9u
cy4KKworICAgICAgICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3By
b3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9OYW1lZEZs
b3dDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246
OmVuc3VyZUZsb3dXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0
aW9uOjpkaXNjYXJkTmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAg
KFVwZGF0ZVJlZ2lvbkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNrOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnNjaGVkdWxlRm9yKToK
KyAgICAgICAgKFdlYkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnVuc2NoZWR1bGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6cmVzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6b25UaW1lcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpyZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVz
dGVkRmxvd3NJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVOYW1lZEZsb3dJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVS
ZWdpb25MYXlvdXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2Rl
bC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9u
QXN5bmMuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJv
dG90eXBlLmdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFtZUFzeW5jLmNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlO
YW1lQXN5bmMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBl
Ll9uYW1lZEZsb3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
LnByb3RvdHlwZS5fbmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVNb2RlbC5wcm90b3R5cGUuX3JlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rp
b25zKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1l
ZEZsb3dDcmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3Rv
dHlwZS5uYW1lZEZsb3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRj
aGVyLnByb3RvdHlwZS5yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5OYW1lZEZsb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLmFw
cGVuZE5hbWVkRmxvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlv
bi5wcm90b3R5cGUucmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1l
ZEZsb3dDb2xsZWN0aW9uLnByb3RvdHlwZS5mbG93QnlOYW1lKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck5h
bWVkRmxvd1RocmVhZDo6ZGlzcGF0Y2hSZWdpb25MYXlvdXRVcGRhdGVFdmVudCk6CisKIDIwMTIt
MDktMTIgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtFRkxdIENsZWFuIHVwIHRoZSBSZW5kZXJUaGVtZSBFZGplIGNhY2hpbmcKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAppbmRleCAxNTg4ZmM2Li41
NTQ3NTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCkBA
IC04MSw3ICs4MSw3IEBAIFBhc3NSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBOYW1lZEZsb3dDb2xs
ZWN0aW9uOjplbnN1cmVGbG93V2l0aE5hbWUoY29uc3QgU3RyaW5nCiAgICAgUmVmUHRyPFdlYktp
dE5hbWVkRmxvdz4gbmV3RmxvdyA9IFdlYktpdE5hbWVkRmxvdzo6Y3JlYXRlKHRoaXMsIGZsb3dO
YW1lKTsKICAgICBtX25hbWVkRmxvd3MuYWRkKG5ld0Zsb3cuZ2V0KCkpOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmV3Rmxv
dy0+bmFtZSgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVk
RmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LmdldCgpKTsKIAogICAgIHJldHVybiBuZXdGbG93LnJl
bGVhc2UoKTsKIH0KQEAgLTk1LDkgKzk1LDkgQEAgdm9pZCBOYW1lZEZsb3dDb2xsZWN0aW9uOjpk
aXNjYXJkTmFtZWRGbG93KFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogICAgIEFTU0VSVChu
YW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdlYktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCk7
CiAgICAgQVNTRVJUKG1fbmFtZWRGbG93cy5jb250YWlucyhuYW1lZEZsb3cpKTsKIAotICAgIG1f
bmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZW1vdmVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmFtZWRGbG93KTsKIAotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KG1fZG9jdW1lbnQsIG5h
bWVkRmxvdy0+bmFtZSgpKTsKKyAgICBtX25hbWVkRmxvd3MucmVtb3ZlKG5hbWVkRmxvdyk7CiB9
CiAKIHZvaWQgTmFtZWRGbG93Q29sbGVjdGlvbjo6ZG9jdW1lbnREZXN0cm95ZWQoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDgxODRjYzAuLmY5OGVhMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTIzMzksMTggKzIzMzks
NiBAQAogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlJldHVybnMgdGhlIE5hbWVkIEZsb3dzIGZyb20gdGhlIGRvY3VtZW50LiIsCiAgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgIm5hbWUiOiAiZ2V0Rmxvd0J5TmFtZSIsCi0gICAgICAgICAgICAgICAgInBh
cmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZG9jdW1lbnROb2Rl
SWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkb2N1bWVudCBu
b2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUi
OiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIk5hbWVkIEZsb3cgaWRlbnRpZmllci4iIH0KLSAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgICJyZXR1cm5zIjogWwotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJk
ZXNjcmlwdGlvbiI6ICJBIE5hbWVkIEZsb3cuIiB9Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0aGUgTmFtZWQgRmxvdyBpZGVudGlm
aWVkIGJ5IHRoZSBnaXZlbiBuYW1lIiwKLSAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQog
ICAgICAgICAgICAgfQogICAgICAgICBdLAogICAgICAgICAiZXZlbnRzIjogWwpAQCAtMjM2OCw4
ICsyMzU2LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAibmFtZSI6ICJuYW1l
ZEZsb3dDcmVhdGVkIiwKICAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVmIjogIkRPTS5Ob2Rl
SWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJJZGVudGlmaWVyIG9mIHRoZSBuZXcgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lZEZsb3ciLCAiJHJlZiI6ICJOYW1lZEZsb3ciLCAi
ZGVzY3JpcHRpb24iOiAiVGhlIG5ldyBOYW1lZCBGbG93LiIgfQogICAgICAgICAgICAgICAgIF0s
CiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1lZCBGbG93
IGlzIGNyZWF0ZWQuIiwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZQpAQCAtMjM3OCwx
MCArMjM2NSwxOCBAQAogICAgICAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd1JlbW92ZWQi
LAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklk
ZW50aWZpZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KKyAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJmbG93TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJJZGVudGlmaWVyIG9mIHRoZSByZW1vdmVkIE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAg
ICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVk
IEZsb3cgaXMgcmVtb3ZlZDogaGFzIG5vIGFzc29jaWF0ZWQgY29udGVudCBub2RlcyBhbmQgcmVn
aW9ucy4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlZ2lvbkxheW91dFVwZGF0
ZWQiLAorICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlwdGlv
biI6ICJUaGUgTmFtZWQgRmxvdyB3aG9zZSBsYXlvdXQgbWF5IGhhdmUgY2hhbmdlZC4iIH0KKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3
aGVuIGEgTmFtZWQgRmxvdydzIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLiIsCisgICAgICAgICAg
ICAgICAgImhpZGRlbiI6IHRydWUKICAgICAgICAgICAgIH0KICAgICAgICAgXQogICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCAy
NGM3MTk3Li4wODQyNWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKQEAgLTIyNiw2ICsyMjYsNjcgQEAgUGFzc1JlZlB0cjxUeXBlQnVpbGRl
cjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmpl
Y3QKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0KIAorY2xhc3MgVXBkYXRlUmVnaW9u
TGF5b3V0VGFzayB7CitwdWJsaWM6CisgICAgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayhJbnNwZWN0
b3JDU1NBZ2VudCopOworICAgIHZvaWQgc2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiwgaW50
IGRvY3VtZW50Tm9kZUlkKTsKKyAgICB2b2lkIHVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93Kik7
CisgICAgdm9pZCByZXNldCgpOworICAgIHZvaWQgb25UaW1lcihUaW1lcjxVcGRhdGVSZWdpb25M
YXlvdXRUYXNrPiopOworCitwcml2YXRlOgorICAgIEluc3BlY3RvckNTU0FnZW50KiBtX2Nzc0Fn
ZW50OworICAgIFRpbWVyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdGltZXI7CisgICAgSGFz
aE1hcDxXZWJLaXROYW1lZEZsb3cqLCBpbnQ+IG1fbmFtZWRGbG93czsKK307CisKK1VwZGF0ZVJl
Z2lvbkxheW91dFRhc2s6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQq
IGNzc0FnZW50KQorICAgIDogbV9jc3NBZ2VudChjc3NBZ2VudCkKKyAgICAsIG1fdGltZXIodGhp
cywgJlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIpCit7Cit9CisKK3ZvaWQgVXBkYXRl
UmVnaW9uTGF5b3V0VGFzazo6c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cs
IGludCBkb2N1bWVudE5vZGVJZCkKK3sKKyAgICBtX25hbWVkRmxvd3MuYWRkKG5hbWVkRmxvdywg
ZG9jdW1lbnROb2RlSWQpOworCisgICAgaWYgKCFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRh
c2s6OnVuc2NoZWR1bGUoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7CisgICAgbV9uYW1l
ZEZsb3dzLnJlbW92ZShuYW1lZEZsb3cpOworfQorCit2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRh
c2s6OnJlc2V0KCkKK3sKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICBtX25hbWVkRmxvd3MuY2xl
YXIoKTsKK30KKwordm9pZCBVcGRhdGVSZWdpb25MYXlvdXRUYXNrOjpvblRpbWVyKFRpbWVyPFVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2s+KikKK3sKKyAgICAvLyBUaGUgdGltZXIgaXMgc3RvcHBlZCBv
biBtX2Nzc0FnZW50IGRlc3RydWN0aW9uLCBzbyB0aGlzIG1ldGhvZCB3aWxsIG5ldmVyIGJlIGNh
bGxlZCBhZnRlciBtX2Nzc0FnZW50IGhhcyBiZWVuIGRlc3Ryb3llZC4KKyAgICBWZWN0b3I8c3Rk
OjpwYWlyPFdlYktpdE5hbWVkRmxvdyosIGludD4gPiBuYW1lZEZsb3dzOworCisgICAgZm9yIChI
YXNoTWFwPFdlYktpdE5hbWVkRmxvdyosIGludD46Oml0ZXJhdG9yIGl0ID0gbV9uYW1lZEZsb3dz
LmJlZ2luKCksIGVuZCA9IG1fbmFtZWRGbG93cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQorICAg
ICAgICBuYW1lZEZsb3dzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpdC0+Zmlyc3QsIGl0LT5zZWNv
bmQpKTsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDAsIHNpemUgPSBuYW1lZEZsb3dzLnNpemUo
KTsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdyA9
IG5hbWVkRmxvd3MuYXQoaSkuZmlyc3Q7CisgICAgICAgIGludCBkb2N1bWVudE5vZGVJZCA9IG5h
bWVkRmxvd3MuYXQoaSkuc2Vjb25kOworCisgICAgICAgIGlmIChtX25hbWVkRmxvd3MuY29udGFp
bnMobmFtZWRGbG93KSkgeworICAgICAgICAgICAgbV9jc3NBZ2VudC0+cmVnaW9uTGF5b3V0VXBk
YXRlZChuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKKyAgICAgICAgICAgIG1fbmFtZWRGbG93
cy5yZW1vdmUobmFtZWRGbG93KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbV9uYW1l
ZEZsb3dzLmlzRW1wdHkoKSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdCgwKTsKK30KKwogY2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQ6OlN0eWxlU2hl
ZXRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uIHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShTdHlsZVNoZWV0QWN0aW9uKTsKIHB1YmxpYzoKQEAgLTUxOCw2ICs1Nzks
OCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAgICAgbV9ub2RlVG9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNsZWFyKCk7CiAgICAgbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jbGVhcigpOwogICAgIG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQuY2xlYXIoKTsK
KyAgICBpZiAobV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQorICAgICAgICBtX3VwZGF0ZVJlZ2lv
bkxheW91dFRhc2stPnJlc2V0KCk7CiAgICAgcmVzZXRQc2V1ZG9TdGF0ZXMoKTsKIH0KIApAQCAt
NTM3LDIyICs2MDAsNDggQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6bWVkaWFRdWVyeVJlc3Vs
dENoYW5nZWQoKQogICAgICAgICBtX2Zyb250ZW5kLT5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1l
bnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1l
ZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5v
ZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChkb2N1bWVudCk7CisgICAgaWYgKCFkb2N1bWVudE5vZGVJ
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CisgICAg
bV9mcm9udGVuZC0+bmFtZWRGbG93Q3JlYXRlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJy
b3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKK30KKwordm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3Vt
ZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50
Tm9kZUlkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAobV91cGRhdGVSZWdpb25MYXlvdXRU
YXNrKQorICAgICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2stPnVuc2NoZWR1bGUobmFtZWRG
bG93KTsKKworICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQs
IG5hbWVkRmxvdy0+bmFtZSgpLnN0cmluZygpKTsKK30KKwordm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9k
ZUlkKGRvY3VtZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9u
c1JlcXVlc3RlZC5jb250YWlucyhub2RlSWQpKQorICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRv
Y3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3Vt
ZW50Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5uYW1lZEZsb3dD
cmVhdGVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7CisgICAgaWYgKCFtX3VwZGF0ZVJlZ2lvbkxh
eW91dFRhc2spCisgICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzayA9IGFkb3B0UHRyKG5l
dyBVcGRhdGVSZWdpb25MYXlvdXRUYXNrKHRoaXMpKTsKKyAgICBtX3VwZGF0ZVJlZ2lvbkxheW91
dFRhc2stPnNjaGVkdWxlRm9yKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwogfQogCi12b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZWdp
b25MYXlvdXRVcGRhdGVkKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBpbnQgZG9jdW1lbnRO
b2RlSWQpCiB7Ci0gICAgaW50IG5vZGVJZCA9IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3Vt
ZW50KTsKLSAgICBpZiAoIW5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3Rl
ZC5jb250YWlucyhub2RlSWQpKQorICAgIGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdl
YktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9m
cm9udGVuZC0+bmFtZWRGbG93UmVtb3ZlZChub2RlSWQsIG5hbWUuc3RyaW5nKCkpOworICAgIEVy
cm9yU3RyaW5nIGVycm9yU3RyaW5nOworICAgIFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+IHByb3Rl
Y3RvcihuYW1lZEZsb3cpOworCisgICAgbV9mcm9udGVuZC0+cmVnaW9uTGF5b3V0VXBkYXRlZChi
dWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcsIG5hbWVkRmxvdywgZG9jdW1lbnRO
b2RlSWQpKTsKIH0KIAogYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShF
bGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlKQpAQCAt
ODI4LDMyICs5MTcsMTYgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0TmFtZWRGbG93Q29s
bGVjdGlvbihFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2MKICAgICAgICAgcmV0dXJu
OwogCiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5hZGQoZG9jdW1lbnROb2Rl
SWQpOworCiAgICAgVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID4gbmFtZWRGbG93c1Zl
Y3RvciA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPm5hbWVkRmxvd3MoKTsKICAgICBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz4gPiBuYW1lZEZs
b3dzID0gVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVkRmxvdz46OmNy
ZWF0ZSgpOwogCi0KICAgICBmb3IgKFZlY3RvcjxSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiA+Ojpp
dGVyYXRvciBpdCA9IG5hbWVkRmxvd3NWZWN0b3IuYmVnaW4oKTsgaXQgIT0gbmFtZWRGbG93c1Zl
Y3Rvci5lbmQoKTsgKytpdCkKICAgICAgICAgbmFtZWRGbG93cy0+YWRkSXRlbShidWlsZE9iamVj
dEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgaXQtPmdldCgpLCBkb2N1bWVudE5vZGVJZCkpOwog
CiAgICAgcmVzdWx0ID0gbmFtZWRGbG93cy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgZG9j
dW1lbnROb2RlSWQsIGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6
Q1NTOjpOYW1lZEZsb3c+JiByZXN1bHQpCi17Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9k
b21BZ2VudC0+YXNzZXJ0RG9jdW1lbnQoZXJyb3JTdHJpbmcsIGRvY3VtZW50Tm9kZUlkKTsKLSAg
ICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBXZWJLaXROYW1lZEZsb3cq
IHdlYmtpdE5hbWVkRmxvdyA9IGRvY3VtZW50LT5uYW1lZEZsb3dzKCktPmZsb3dCeU5hbWUoZmxv
d05hbWUpOwotICAgIGlmICghd2Via2l0TmFtZWRGbG93KSB7Ci0gICAgICAgICplcnJvclN0cmlu
ZyA9ICJObyB0YXJnZXQgQ1NTIE5hbWVkIEZsb3cgZm91bmQiOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKHdlYmtpdE5hbWVk
Rmxvdyk7Ci0gICAgcmVzdWx0ID0gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coZXJyb3JTdHJpbmcs
IHdlYmtpdE5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwotfQotCiB2b2lkIEluc3BlY3RvckNT
U0FnZW50OjpzdGFydFNlbGVjdG9yUHJvZmlsZXIoRXJyb3JTdHJpbmcqKQogewogICAgIG1fY3Vy
cmVudFNlbGVjdG9yUHJvZmlsZSA9IGFkb3B0UHRyKG5ldyBTZWxlY3RvclByb2ZpbGUoKSk7CkBA
IC05MzMsNiArMTAwNiwxNSBAQCBFbGVtZW50KiBJbnNwZWN0b3JDU1NBZ2VudDo6ZWxlbWVudEZv
cklkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCkKICAgICByZXR1cm4gdG9F
bGVtZW50KG5vZGUpOwogfQogCitpbnQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKERvY3VtZW50KiBkb2N1bWVudCkKK3sKKyAgICBpbnQgZG9jdW1l
bnROb2RlSWQgPSBtX2RvbUFnZW50LT5ib3VuZE5vZGVJZChkb2N1bWVudCk7CisgICAgaWYgKCFk
b2N1bWVudE5vZGVJZCB8fCAhbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jb250YWlu
cyhkb2N1bWVudE5vZGVJZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGRvY3Vt
ZW50Tm9kZUlkOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpjb2xsZWN0U3R5bGVTaGVl
dHMoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgVHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+KiByZXN1bHQpCiB7CiAgICAgSW5zcGVjdG9y
U3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGJpbmRTdHlsZVNoZWV0KHN0YXRpY19j
YXN0PENTU1N0eWxlU2hlZXQqPihzdHlsZVNoZWV0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDkzMWVkM2QuLmMxOTA2MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC01NSw2ICs1NSw3
IEBAIGNsYXNzIE5vZGU7CiBjbGFzcyBOb2RlTGlzdDsKIGNsYXNzIFNlbGVjdG9yUHJvZmlsZTsK
IGNsYXNzIFN0eWxlUmVzb2x2ZXI7CitjbGFzcyBVcGRhdGVSZWdpb25MYXlvdXRUYXNrOwogCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIApAQCAtOTksOCArMTAwLDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwogICAgIHZvaWQgcmVzZXQoKTsKICAg
ICB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7Ci0gICAgdm9pZCBkaWRDcmVhdGVOYW1l
ZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHZvaWQgZGlk
UmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKKyAg
ICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwor
ICAgIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyop
OworICAgIHZvaWQgZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50KiwgV2ViS2l0TmFtZWRG
bG93Kik7CisgICAgdm9pZCByZWdpb25MYXlvdXRVcGRhdGVkKFdlYktpdE5hbWVkRmxvdyosIGlu
dCBkb2N1bWVudE5vZGVJZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZv
ck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5
PFR5cGVCdWlsZGVyOjpDU1M6OkNTU0NvbXB1dGVkU3R5bGVQcm9wZXJ0eT4gPiYpOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRJbmxpbmVTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0
cjxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpOwpAQCAtMTE2LDcgKzEx
OSw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGll
cyhFcnJvclN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNT
Uzo6Q1NTUHJvcGVydHlJbmZvPiA+JiByZXN1bHQpOwogICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBz
ZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYgZm9yY2VkUHNldWRvQ2xhc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIGdldE5hbWVk
Rmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0cjxU
eXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+JiByZXN1bHQp
OwotICAgIHZpcnR1YWwgdm9pZCBnZXRGbG93QnlOYW1lKEVycm9yU3RyaW5nKiwgaW50IGRvY3Vt
ZW50Tm9kZUlkLCBjb25zdCBTdHJpbmcmIGZsb3dOYW1lLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNT
Uzo6TmFtZWRGbG93PiYgcmVzdWx0KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydFNlbGVjdG9y
UHJvZmlsZXIoRXJyb3JTdHJpbmcqKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcFNlbGVjdG9yUHJv
ZmlsZXIoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9m
aWxlPiYpOwpAQCAtMTQ1LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGUqIGFzSW5zcGVjdG9yU3R5bGVTaGVldChFbGVtZW50KiBlbGVt
ZW50KTsKICAgICBFbGVtZW50KiBlbGVtZW50Rm9ySWQoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
KTsKKyAgICBpbnQgZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoRG9jdW1lbnQqKTsK
ICAgICB2b2lkIGNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHlsZVNoZWV0KiwgVHlwZUJ1aWxkZXI6
OkFycmF5PFdlYkNvcmU6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlU2hlZXRIZWFkZXI+Kik7
CiAKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBiaW5kU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0
Kik7CkBAIC0xNzYsNiArMTc5LDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudFRvVmlhSW5zcGVj
dG9yU3R5bGVTaGVldCBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0OwogICAgIE5vZGVJ
ZFRvRm9yY2VkUHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlOwogICAgIEhh
c2hTZXQ8aW50PiBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkOworICAgIE93blB0cjxV
cGRhdGVSZWdpb25MYXlvdXRUYXNrPiBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CiAKICAgICBp
bnQgbV9sYXN0U3R5bGVTaGVldElkOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IGY1MGJkZDMuLjBjM2VjNGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCkBAIC0yMzEsMTYgKzIzMSwyMiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFBvcFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dQogICAgICAgICBkb21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3QoaG9zdCwgcm9vdCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxv
dykKIHsKICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0
ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVO
YW1lZEZsb3coZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZs
b3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50
KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAgICAgaWYgKEluc3Bl
Y3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNT
U0FnZW50KCkpCi0gICAgICAgIGNzc0FnZW50LT5kaWRSZW1vdmVOYW1lZEZsb3coZG9jdW1lbnQs
IG5hbWUpOworICAgICAgICBjc3NBZ2VudC0+d2lsbFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwg
bmFtZWRGbG93KTsKK30KKwordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0
ZVJlZ2lvbkxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAg
ICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+
aW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAgICAgY3NzQWdlbnQtPmRpZFVwZGF0ZVJlZ2lvbkxh
eW91dChkb2N1bWVudCwgbmFtZWRGbG93KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIHVuc2lnbmVk
IG1vZGlmaWVyRmxhZ3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggMmE4Y2VmYy4uYmZiM2NiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAt
MTE0LDggKzExNCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0
Q2hhbmdlZChEb2N1bWVudCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290KEVs
ZW1lbnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUG9wU2hhZG93
Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3RhdGljIHZvaWQgZGlkQ3Jl
YXRlTmFtZWRGbG93KERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBz
dGF0aWMgdm9pZCBkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpOworICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCos
IFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3co
RG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRVcGRhdGVS
ZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKIAogICAgIHN0YXRpYyB2
b2lkIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFBhZ2UqLCBjb25zdCBIaXRUZXN0UmVzdWx0Jiwg
dW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVz
cyhQYWdlKik7CkBAIC0yOTEsOCArMjkyLDkgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBt
ZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwogICAgIHN0
YXRpYyB2b2lkIGRpZFB1c2hTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxl
bWVudCogaG9zdCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dS
b290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCop
OwotICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIERvY3VtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVu
dCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRl
TmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1l
ZEZsb3cqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlTmFtZWRGbG93SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAgICBzdGF0aWMg
dm9pZCBkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1
bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVzdWx0
JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQ
cmVzc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyopOwpAQCAtNTYyLDIxICs1NjQsMzAgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUG9wU2hhZG93Um9vdChFbGVt
ZW50KiBob3N0LCBTaGFkb3dSb28KICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKICAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1
bWVudCkpCi0gICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgZG9jdW1lbnQsIG5hbWUpOworICAgICAgICBkaWRDcmVhdGVOYW1lZEZsb3dJbXBsKGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOwogI2VuZGlmCiB9CiAKLWlubGlu
ZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlTmFtZWRGbG93KERvY3Vt
ZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQoraW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1
bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiB7CiAjaWYgRU5BQkxFKElOU1BFQ1RP
UikKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIGRpZFJlbW92ZU5hbWVkRmxvd0ltcGwo
aW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5hbWUpOworICAgICAgICB3aWxsUmVtb3Zl
TmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZWRGbG93KTsK
KyNlbmRpZgorfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVw
ZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93KQoreworI2lmIEVOQUJMRShJTlNQRUNUT1IpCisgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQor
ICAgICAgICBkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRv
Y3VtZW50LCBuYW1lZEZsb3cpOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwppbmRleCA4MjA2OTViLi45NzBh
MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0
eWxlTW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NT
dHlsZU1vZGVsLmpzCkBAIC0zOSw2ICszOSw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVs
ID0gZnVuY3Rpb24oKQogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9SZXF1ZXN0ZWQsIHRoaXMuX3Vu
ZG9SZWRvUmVxdWVzdGVkLCB0aGlzKTsKICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLlVuZG9SZWRvQ29tcGxldGVk
LCB0aGlzLl91bmRvUmVkb0NvbXBsZXRlZCwgdGhpcyk7CiAgICAgdGhpcy5fcmVzb3VyY2VCaW5k
aW5nID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsUmVzb3VyY2VCaW5kaW5nKHRoaXMp
OworICAgIHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zID0ge307CisgICAgV2ViSW5zcGVjdG9y
LmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTUFnZW50LkV2ZW50cy5E
b2N1bWVudFVwZGF0ZWQsIHRoaXMuX3Jlc2V0TmFtZWRGbG93Q29sbGVjdGlvbnMsIHRoaXMpOwog
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKG5ldyBXZWJJbnNwZWN0
b3IuQ1NTRGlzcGF0Y2hlcih0aGlzKSk7CiAgICAgQ1NTQWdlbnQuZW5hYmxlKCk7CiB9CkBAIC01
OCw3ICs2MCw4IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cyA9IHsKICAgICBT
dHlsZVNoZWV0Q2hhbmdlZDogIlN0eWxlU2hlZXRDaGFuZ2VkIiwKICAgICBNZWRpYVF1ZXJ5UmVz
dWx0Q2hhbmdlZDogIk1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkIiwKICAgICBOYW1lZEZsb3dDcmVh
dGVkOiAiTmFtZWRGbG93Q3JlYXRlZCIsCi0gICAgTmFtZWRGbG93UmVtb3ZlZDogIk5hbWVkRmxv
d1JlbW92ZWQiCisgICAgTmFtZWRGbG93UmVtb3ZlZDogIk5hbWVkRmxvd1JlbW92ZWQiLAorICAg
IFJlZ2lvbkxheW91dFVwZGF0ZWQ6ICJSZWdpb25MYXlvdXRVcGRhdGVkIgogfQogCiBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CkBAIC0xNzEsNDggKzE3NCw2MiBAQCBX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8q
KgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQKLSAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKD9BcnJheS48V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sK
KyAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKKyAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKE9iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9
IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldE5hbWVkRmxvd0NvbGxlY3Rpb25Bc3luYzog
ZnVuY3Rpb24obm9kZUlkLCB1c2VyQ2FsbGJhY2spCisgICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlv
bkFzeW5jOiBmdW5jdGlvbihkb2N1bWVudE5vZGVJZCwgdXNlckNhbGxiYWNrKQogICAgIHsKKyAg
ICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9u
c1tkb2N1bWVudE5vZGVJZF07CisgICAgICAgIGlmIChuYW1lZEZsb3dDb2xsZWN0aW9uKSB7Cisg
ICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFtZWRGbG93Q29sbGVjdGlvbi5uYW1lZEZsb3dNYXAp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgLyoqCi0gICAgICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVz
ZXJDYWxsYmFjaworICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKE9iamVjdC48c3RyaW5nLCBX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjawogICAgICAgICAgKiBAcGFyYW0g
ez9Qcm90b2NvbC5FcnJvcn0gZXJyb3IKLSAgICAgICAgICogQHBhcmFtIHs/QXJyYXkuPENTU0Fn
ZW50Lk5hbWVkRmxvdz49fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P0Fy
cmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+fSBuYW1lZEZsb3dQYXlsb2FkCiAgICAgICAgICAqLwog
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIGVycm9yLCBuYW1lZEZsb3dQ
YXlsb2FkKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW5hbWVkRmxvd1Bh
eWxvYWQpCiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhXZWJJbnNwZWN0b3IuTmFtZWRGbG93
LnBhcnNlUGF5bG9hZEFycmF5KG5hbWVkRmxvd1BheWxvYWQpKTsKKyAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uKG5hbWVkRmxvd1BheWxvYWQpOworICAgICAgICAgICAg
ICAgIHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXSA9IG5hbWVkRmxv
d0NvbGxlY3Rpb247CisgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKG5hbWVkRmxvd0NvbGxl
Y3Rpb24ubmFtZWRGbG93TWFwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAg
IENTU0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24obm9kZUlkLCBjYWxsYmFjay5iaW5kKHRo
aXMsIHVzZXJDYWxsYmFjaykpOworICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZsb3dDb2xsZWN0
aW9uKGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOwog
ICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlk
CisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAgICAgICogQHBhcmFtIHtmdW5jdGlvbig/V2ViSW5z
cGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdldEZsb3dCeU5h
bWVBc3luYzogZnVuY3Rpb24obm9kZUlkLCBmbG93TmFtZSwgdXNlckNhbGxiYWNrKQorICAgIGdl
dEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCB1c2Vy
Q2FsbGJhY2spCiAgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlvbiA9IHRoaXMu
X25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAgaWYgKG5hbWVk
Rmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1lZEZsb3dDb2xs
ZWN0aW9uLmZsb3dCeU5hbWUoZmxvd05hbWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9XZWJJbnNw
ZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxiYWNrCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3Rv
Y29sLkVycm9yfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9DU1NBZ2VudC5OYW1lZEZsb3c9
fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P09iamVjdC48c3RyaW5nLCBX
ZWJJbnNwZWN0b3IuTmFtZWRGbG93Pn0gbmFtZWRGbG93TWFwCiAgICAgICAgICAqLwotICAgICAg
ICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIGVycm9yLCBuYW1lZEZsb3dQYXlsb2Fk
KQorICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIG5hbWVkRmxvd01hcCkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2FkKQor
ICAgICAgICAgICAgaWYgKCFuYW1lZEZsb3dNYXApCiAgICAgICAgICAgICAgICAgdXNlckNhbGxi
YWNrKG51bGwpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFj
ayhXZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkKSk7
CisgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25z
W2RvY3VtZW50Tm9kZUlkXS5mbG93QnlOYW1lKGZsb3dOYW1lKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBDU1NBZ2VudC5nZXRGbG93QnlOYW1lKG5vZGVJZCwgZmxvd05hbWUsIGNhbGxiYWNrLmJp
bmQodGhpcywgdXNlckNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMuZ2V0TmFtZWRGbG93Q29sbGVj
dGlvbkFzeW5jKGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFj
aykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTM1MCw1MSArMzY3LDQ4IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93
UGF5bG9hZAogICAgICAqLwotICAgIF9uYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVu
dE5vZGVJZCwgbmFtZSkKKyAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93
UGF5bG9hZCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRE9NRG9jdW1lbnR9IHJvb3QKLSAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2socm9vdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQg
d2Ugb25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQK
LSAgICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0b3IuTmFtZWRG
bG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgdmFyIG5hbWVkRmxv
d0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tuYW1lZEZsb3cuZG9jdW1l
bnROb2RlSWRdOwogCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgeyBkb2N1
bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uYXBwZW5kTmFtZWRGbG93KG5h
bWVkRmxvdyk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dDcmVhdGVkLCBuYW1lZEZsb3cpOwog
ICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1l
bnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQorICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBmbG93TmFtZQogICAgICAqLwotICAgIF9uYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihk
b2N1bWVudE5vZGVJZCwgbmFtZSkKKyAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9j
dW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLmhhc0V2ZW50
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1v
dmVkKSkKKyAgICAgICAgdmFyIG5hbWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dD
b2xsZWN0aW9uc1tkb2N1bWVudE5vZGVJZF07CisKKyAgICAgICAgaWYgKCFuYW1lZEZsb3dDb2xs
ZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIC8qKgotICAgICAgICAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLkRPTURvY3VtZW50fSByb290Ci0gICAgICAgICovCi0gICAgICAg
IGZ1bmN0aW9uIGNhbGxiYWNrKHJvb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIEZJWE1F
OiBBdCB0aGUgbW9tZW50IHdlIG9ubHkgd2FudCBzdXBwb3J0IGZvciBOYW1lZEZsb3dzIGluIHRo
ZSBtYWluIGRvY3VtZW50Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnROb2RlSWQgIT09IHJvb3Qu
aWQpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBuYW1lZEZsb3dDb2xsZWN0aW9u
LnJlbW92ZU5hbWVkRmxvdyhmbG93TmFtZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1v
dmVkLCB7IGRvY3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgZmxvd05hbWU6IGZsb3dOYW1l
IH0pOworICAgIH0sCiAKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCB7IGRv
Y3VtZW50Tm9kZUlkOiBkb2N1bWVudE5vZGVJZCwgbmFtZTogbmFtZSB9KTsKLSAgICAgICAgfQor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7Q1NTQWdlbnQuTmFtZWRGbG93fSBuYW1lZEZsb3dQYXls
b2FkCisgICAgICovCisgICAgX3JlZ2lvbkxheW91dFVwZGF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxv
d1BheWxvYWQpCisgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5h
bWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZCk7CisgICAgICAgIHZhciBuYW1l
ZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93Q29sbGVjdGlvbnNbbmFtZWRGbG93LmRv
Y3VtZW50Tm9kZUlkXTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVzdERv
Y3VtZW50KGNhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICBpZiAoIW5hbWVkRmxvd0NvbGxl
Y3Rpb24pCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbmFtZWRGbG93Q29sbGVjdGlv
bi5hcHBlbmROYW1lZEZsb3cobmFtZWRGbG93KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxheW91
dFVwZGF0ZWQsIG5hbWVkRmxvdyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDYzLDYgKzQ3Nywx
MSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3NvdXJjZU1hcHBpbmdzID0ge307CiAgICAgfSwKIAorICAgIF9yZXNldE5hbWVkRmxvd0Nv
bGxlY3Rpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xs
ZWN0aW9ucyA9IHt9OworICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5DU1NMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHs/V2ViSW5zcGVj
dG9yLlVJTG9jYXRpb259CkBAIC0xMzI2LDIxICsxMzQ1LDI4IEBAIFdlYkluc3BlY3Rvci5DU1NE
aXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBhcmFt
IHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5bG9h
ZAogICAgICAqLwotICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlk
LCBuYW1lKQorICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxvYWQp
CiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChkb2N1bWVu
dE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dDcmVhdGVk
KG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0RP
TUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQogICAgICAqLwotICAgIG5hbWVkRmxv
d1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIG5hbWVkRmxvd1Jl
bW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAg
IHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1lKTsK
KyAgICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQs
IGZsb3dOYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5O
YW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgKi8KKyAgICByZWdpb25MYXlvdXRVcGRh
dGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdGhpcy5fY3Nz
TW9kZWwuX3JlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRGbG93UGF5bG9hZCk7CiAgICAgfQogfQog
CkBAIC0xMzUwLDcgKzEzNzYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90b3R5
cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cgPSBmdW5jdGlvbihwYXlsb2FkKQog
ewotICAgIHRoaXMubm9kZUlkID0gcGF5bG9hZC5kb2N1bWVudE5vZGVJZDsKKyAgICB0aGlzLmRv
Y3VtZW50Tm9kZUlkID0gcGF5bG9hZC5kb2N1bWVudE5vZGVJZDsKICAgICB0aGlzLm5hbWUgPSBw
YXlsb2FkLm5hbWU7CiAgICAgdGhpcy5vdmVyc2V0ID0gcGF5bG9hZC5vdmVyc2V0OwogICAgIHRo
aXMuY29udGVudCA9IHBheWxvYWQuY29udGVudDsKQEAgLTEzNjcsMjAgKzEzOTMsNTAgQEAgV2Vi
SW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQogfQog
CiAvKioKLSAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRGbG93
UGF5bG9hZAotICogQHJldHVybiB7P0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pn0KKyAq
IEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pn0gcGF5
bG9hZAogICovCi1XZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5ID0gZnVu
Y3Rpb24obmFtZWRGbG93UGF5bG9hZCkKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9u
ID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICBpZiAoIW5hbWVkRmxvd1BheWxvYWQpCi0gICAg
ICAgIHJldHVybiBudWxsOworICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIFdlYkluc3Bl
Y3Rvci5OYW1lZEZsb3c+fSAqLworICAgIHRoaXMubmFtZWRGbG93TWFwID0ge307CiAKLSAgICB2
YXIgcGFyc2VkQXJyYXkgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVkRmxvd1Bh
eWxvYWQubGVuZ3RoOyArK2kpCi0gICAgICAgIHBhcnNlZEFycmF5W2ldID0gV2ViSW5zcGVjdG9y
Lk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZFtpXSk7Ci0gICAgcmV0dXJu
IHBhcnNlZEFycmF5OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZC5sZW5ndGg7ICsr
aSkgeworICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJz
ZVBheWxvYWQocGF5bG9hZFtpXSk7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFwW25hbWVkRmxv
dy5uYW1lXSA9IG5hbWVkRmxvdzsKKyAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dD
b2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5OYW1lZEZsb3d9IG5hbWVkRmxvdworICAgICAqLworICAgIGFwcGVuZE5hbWVkRmxvdzog
ZnVuY3Rpb24obmFtZWRGbG93KQorICAgIHsKKyAgICAgICAgdGhpcy5uYW1lZEZsb3dNYXBbbmFt
ZWRGbG93Lm5hbWVdID0gbmFtZWRGbG93OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZmxvd05hbWUKKyAgICAgKi8KKyAgICByZW1vdmVOYW1lZEZsb3c6IGZ1bmN0
aW9uKGZsb3dOYW1lKQorICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMubmFtZWRGbG93TWFwW2Zs
b3dOYW1lXTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dO
YW1lCisgICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLk5hbWVkRmxvd30KKyAgICAgKi8KKyAg
ICBmbG93QnlOYW1lOiBmdW5jdGlvbihmbG93TmFtZSkKKyAgICB7CisgICAgICAgIHZhciBuYW1l
ZEZsb3cgPSB0aGlzLm5hbWVkRmxvd01hcFtmbG93TmFtZV07CisKKyAgICAgICAgaWYgKCFuYW1l
ZEZsb3cpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuIG5hbWVkRmxv
dzsKKyAgICB9Cit9CiAvKioKICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbH0K
ICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxv
d1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhy
ZWFkLmNwcAppbmRleCA0ZTgzY2NhLi43NDYxZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIlJlbmRlck5hbWVkRmxvd1RocmVhZC5oIgogCiAjaW5jbHVkZSAiRmxvd1RocmVh
ZENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiV2ViS2l0TmFtZWRGbG93LmgiCkBAIC0zNTcsNiArMzU4LDcgQEAgY29uc3QgQXRvbWljU3Ry
aW5nJiBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmZsb3dUaHJlYWROYW1lKCkgY29uc3QKIHZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KCkK
IHsKICAgICBSZW5kZXJGbG93VGhyZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50
KCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQo
ZG9jdW1lbnQoKSwgbV9uYW1lZEZsb3cuZ2V0KCkpOwogCiAgICAgaWYgKCFtX3JlZ2lvbkxheW91
dFVwZGF0ZUV2ZW50VGltZXIuaXNBY3RpdmUoKSAmJiBtX25hbWVkRmxvdy0+aGFzRXZlbnRMaXN0
ZW5lcnMoKSkKICAgICAgICAgbV9yZWdpb25MYXlvdXRVcGRhdGVFdmVudFRpbWVyLnN0YXJ0T25l
U2hvdCgwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163580</attachid>
            <date>2012-09-12 04:23:31 -0700</date>
            <delta_ts>2012-09-12 05:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch93443</filename>
            <type>text/plain</type>
            <size>43619</size>
            <attacher name="Andrei Poenaru">andreigpoenaru</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MGNhOWE5Li5hMWIwNTI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDkt
MTIgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIElu
c3BlY3RvcjogUHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZl
bnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVmFsaWRh
dGUgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5
bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWw6CisK
IDIwMTItMDktMTIgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBPbmx5IGFsbG93IG9uZSB1c2VyLWdlc3R1cmUgZ2F0ZWQgYWN0aW9u
IHBlciB1c2VyIGFjdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3Rl
ZC50eHQKaW5kZXggN2M4MmI0OC4uOWZlOWNmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1j
b21tYW5kcy1leHBlY3RlZC50eHQKQEAgLTQsOSArNCwxMSBAQCBnZXROYW1lZEZsb3dDb2xsZWN0
aW9uIEJ1ZyA5MTYwNwogZ2V0Rmxvd0J5TmFtZSBCdWcgOTE4NTUKIG5hbWVkRmxvd0NyZWF0ZWQg
QnVnIDkyNzM5CiBuYW1lZEZsb3dSZW1vdmVkIEJ1ZyA5MjczOQorcmVnaW9uTGF5b3V0VXBkYXRl
ZCBCdWcgOTM0NDMKK1RoaXMgdGV4dCBpcyBmcm9tIENTUyBOYW1lZCBGbG93ICJmbG93MyIuCiAK
IAotUnVubmluZzogdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xCitSdW5uaW5nOiB0ZXN0R2V0
TmFtZWRGbG93Q29sbGVjdGlvbgogPT09IENTUyBOYW1lZCBGbG93cyBpbiBtYWluIGRvY3VtZW50
ID09PQogKiBOYW1lZCBGbG93ICJmbG93MSIKIENvbnRlbnQgRWxlbWVudHM6IDEKQEAgLTE4LDIz
ICsyMCwyNiBAQCBSZWdpb25zOiAyCiBDb250ZW50IEVsZW1lbnRzOiAxCiBSZWdpb25zOiAxCiAK
LVJ1bm5pbmc6IHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uMgorUnVubmluZzogdGVzdEdldE5h
bWVkRmxvd0NvbGxlY3Rpb25XaXRoSW52YWxpZERvY3VtZW50CiA9PT0gQ1NTIE5hbWVkIEZsb3dz
IGluICNmYWtlLWRvY3VtZW50ID09PQogI2Zha2UtZG9jdW1lbnQgaXMgbm90IGEgZG9jdW1lbnQK
IAotUnVubmluZzogdGVzdEdldEZsb3dCeU5hbWUxCitSdW5uaW5nOiB0ZXN0R2V0Rmxvd0J5TmFt
ZQogPT09IE5hbWVkIEZsb3cgImZsb3cyIiBmcm9tIG1haW4gZG9jdW1lbnQgPT09CiAqIE5hbWVk
IEZsb3cgImZsb3cyIgogQ29udGVudCBFbGVtZW50czogMQogUmVnaW9uczogMgogCi1SdW5uaW5n
OiB0ZXN0R2V0Rmxvd0J5TmFtZTIKK1J1bm5pbmc6IHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFs
aWROYW1lCiA9PT0gTmFtZSBGbG93ICJmbG93NCIgZnJvbSBtYWluIGRvY3VtZW50ID09PQogVGhl
cmUgaXMgbm8gTmFtZWQgRmxvdyAiZmxvdzQiIGluIHRoZSBtYWluIGRvY3VtZW50CiAKIFJ1bm5p
bmc6IHRlc3ROYW1lZEZsb3dDcmVhdGVkCiBOYW1lZEZsb3dDcmVhdGVkOiAidG1wTmFtZWRGbG93
IgogCitSdW5uaW5nOiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZAorUmVnaW9uTGF5b3V0VXBkYXRl
ZDogImZsb3czIgorCiBSdW5uaW5nOiB0ZXN0TmFtZWRGbG93UmVtb3ZlZAogTmFtZWRGbG93UmVt
b3ZlZDogInRtcE5hbWVkRmxvdyIKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3N0eWxlcy9wcm90b2NvbC1jc3MtcmVnaW9ucy1jb21tYW5kcy5odG1sCmluZGV4
IGQ4MzRjMmEuLjZmYzNmNTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHls
ZXMvcHJvdG9jb2wtY3NzLXJlZ2lvbnMtY29tbWFuZHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1yZWdpb25zLWNvbW1hbmRzLmh0bWwKQEAgLTIx
LDI0ICsyMSwzMiBAQCBmdW5jdGlvbiBjcmVhdGVEeW5hbWljRWxlbWVudHMoKQogZnVuY3Rpb24g
Y3JlYXRlTmFtZWRGbG93KCkKIHsKICAgICB2YXIgYXJ0aWNsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImFydGljbGUiKTsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisKICAgICBhcnRpY2xlLmlkID0gInRtcEFydGljbGUiOwotICAgIGFydGljbGUuc3R5
bGUud2Via2l0Rmxvd0ludG8gPSAidG1wTmFtZWRGbG93IjsKKyAgICBhcnRpY2xlLnN0eWxlWyIt
d2Via2l0LWZsb3ctaW50byJdID0gInRtcE5hbWVkRmxvdyI7CisgICAgYXJ0aWNsZS50ZXh0Q29u
dGVudCA9ICJUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFtZWQgRmxvdyBcInRtcE5hbWVkRmxvd1wi
IjsKKworICAgIGRpdi5pZCA9ICJ0bXBEaXYiOworICAgIGRpdi5zdHlsZVsiLXdlYmtpdC1mbG93
LWZyb20iXSA9ICJ0bXBOYW1lZEZsb3ciOworICAgIGRpdi5zdHlsZVsiaGVpZ2h0Il0gPSAiNXB4
IjsKKyAgICBkaXYuc3R5bGVbIndpZHRoIl0gPSAiMjBweCI7CiAKICAgICBkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2
KTsKIH0KIAogZnVuY3Rpb24gcmVtb3ZlTmFtZWRGbG93KCkKIHsKLSAgICB2YXIgYXJ0aWNsZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0bXBBcnRpY2xlIik7Ci0KLSAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKGFydGljbGUpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRtcEFydGljbGUiKSk7CisgICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidG1wRGl2IikpOwogfQogCiBm
dW5jdGlvbiB0ZXN0KCkKIHsKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJlbGVtZW50cyIp
OwogICAgIEluc3BlY3RvclRlc3QucnVuVGVzdFN1aXRlKFsKLSAgICAgICAgZnVuY3Rpb24gdGVz
dEdldE5hbWVkRmxvd0NvbGxlY3Rpb24xKG5leHQpCisgICAgICAgIGZ1bmN0aW9uIHRlc3RHZXRO
YW1lZEZsb3dDb2xsZWN0aW9uKG5leHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRDYWxsYmFjayk7CiAKQEAgLTQ3
LDE2ICs1NSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuY3NzTW9kZWwuZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jKGRvY3VtZW50LmlkLCBuYW1l
ZEZsb3dDYWxsYmFjayk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG5h
bWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd3MpCisgICAgICAgICAgICBmdW5jdGlvbiBuYW1lZEZs
b3dDYWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uKQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCI9PT0gQ1NTIE5hbWVkIEZsb3dzIGluIG1h
aW4gZG9jdW1lbnQgPT09Iik7CiAKLSAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd3MpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIW5hbWVkRmxvd0NvbGxlY3Rpb24pIHsKICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlshXSBGYWlsZWQgdG8gZ2V0IE5hbWVk
IEZsb3dzIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAKKyAg
ICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93TWFwID0gbmFtZWRGbG93Q29sbGVjdGlvbi5uYW1l
ZEZsb3dNYXA7CisgICAgICAgICAgICAgICAgdmFyIG5hbWVkRmxvd3MgPSBbXTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBmbG93TmFtZSBpbiBuYW1lZEZsb3dNYXApCisgICAgICAgICAgICAg
ICAgICAgIG5hbWVkRmxvd3MucHVzaChuYW1lZEZsb3dNYXBbZmxvd05hbWVdKTsKKwogICAgICAg
ICAgICAgICAgIG5hbWVkRmxvd3Muc29ydChmdW5jdGlvbiAobmYxLCBuZjIpIHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICgobmYxLm5hbWUgPT0gbmYyLm5hbWUpID8gMCA6ICgobmYxLm5h
bWUgPiBuZjIubmFtZSkgPyAxIDogLTEpKTsKICAgICAgICAgICAgICAgICB9KTsKQEAgLTY4LDcg
KzgxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKLSAg
ICAgICAgZnVuY3Rpb24gdGVzdEdldE5hbWVkRmxvd0NvbGxlY3Rpb24yKG5leHQpCisgICAgICAg
IGZ1bmN0aW9uIHRlc3RHZXROYW1lZEZsb3dDb2xsZWN0aW9uV2l0aEludmFsaWREb2N1bWVudChu
ZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQucmVxdWVz
dERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC04MiwxMSArOTUsMTEgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldE5hbWVk
Rmxvd0NvbGxlY3Rpb25Bc3luYyhub2RlSWQsIG5hbWVkRmxvd0NhbGxiYWNrKTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gbmFtZWRGbG93Q2FsbGJhY2sobmFtZWRGbG93
cykKKyAgICAgICAgICAgIGZ1bmN0aW9uIG5hbWVkRmxvd0NhbGxiYWNrKG5hbWVkRmxvd0NvbGxl
Y3Rpb24pCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIj09PSBDU1MgTmFtZWQgRmxvd3MgaW4gI2Zha2UtZG9jdW1lbnQgPT09Iik7CiAKLSAg
ICAgICAgICAgICAgICBpZiAobmFtZWRGbG93cykgeworICAgICAgICAgICAgICAgIGlmIChuYW1l
ZEZsb3dDb2xsZWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJbIV0gRmFpbGVkIik7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y29tcGxldGVUZXN0KCk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTk3LDcgKzEx
MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0gICAg
ICAgIGZ1bmN0aW9uIHRlc3RHZXRGbG93QnlOYW1lMShuZXh0KQorICAgICAgICBmdW5jdGlvbiB0
ZXN0R2V0Rmxvd0J5TmFtZShuZXh0KQogICAgICAgICB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZG9tQWdlbnQucmVxdWVzdERvY3VtZW50KGRvY3VtZW50Q2FsbGJhY2spOwogCkBAIC0xMjIs
NyArMTM1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAK
LSAgICAgICAgZnVuY3Rpb24gdGVzdEdldEZsb3dCeU5hbWUyKG5leHQpCisgICAgICAgIGZ1bmN0
aW9uIHRlc3RHZXRGbG93QnlOYW1lV2l0aEludmFsaWROYW1lKG5leHQpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoZG9jdW1lbnRD
YWxsYmFjayk7CiAKQEAgLTE1MywxNSArMTY2LDI5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhldmVudCkKICAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBpZiAoZXZlbnQuZGF0YS5uYW1lICE9PSAidG1wTmFtZWRGbG93IikKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01v
ZGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRz
Lk5hbWVkRmxvd0NyZWF0ZWQsIGNhbGxiYWNrLCB0aGlzKTsKIAotICAgICAgICAgICAgICAgIGlm
IChldmVudC5kYXRhLm5hbWUgIT09ICJ0bXBOYW1lZEZsb3ciKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIEluc3BlY3Rvci5hZGRSZXN1bHQoIlshXSBGYWlsZWQiKTsKLSAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDogXCJ0bXBOYW1lZEZsb3dcIiIpOwor
ICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAg
ICAgICBmdW5jdGlvbiB0ZXN0UmVnaW9uTGF5b3V0VXBkYXRlZChuZXh0KQorICAgICAgICB7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuUmVnaW9uTGF5b3V0VXBkYXRlZCwgY2FsbGJhY2ss
IHRoaXMpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgid2luZG93
LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmVnaW9uM1wiKS5zdHlsZVtcIndpZHRoXCJdID0g
XCIyMDBweFwiIik7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGV2ZW50KQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5kYXRhLm5hbWUgIT09ICJmbG93
MyIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93Q3JlYXRlZDog
XCJ0bXBOYW1lZEZsb3dcIiIpOworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2Rl
bC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLkV2ZW50cy5S
ZWdpb25MYXlvdXRVcGRhdGVkLCBjYWxsYmFjaywgdGhpcyk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiUmVnaW9uTGF5b3V0VXBkYXRlZDogXCJmbG93M1wiIik7
CiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9LApAQCAt
MTczLDEyICsyMDAsMTAgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9u
IGNhbGxiYWNrKGV2ZW50KQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEubmFtZSAhPT0gInRtcE5hbWVkRmxvdyIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yLmFkZFJlc3VsdCgiWyFdIEZhaWxlZCIpOwotICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAg
IGlmIChldmVudC5kYXRhLmZsb3dOYW1lICE9PSAidG1wTmFtZWRGbG93IikKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5jc3NNb2RlbC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLkV2ZW50cy5OYW1lZEZsb3dSZW1vdmVkLCBjYWxsYmFjaywgdGhpcyk7CiAKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTmFtZWRGbG93UmVtb3ZlZDog
XCJ0bXBOYW1lZEZsb3dcIiIpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKQEAgLTIwNCw2ICsy
MjksNyBAQCBUZXN0cyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGFuZCBldmVudHM6CiAgICAgPGxp
PmdldEZsb3dCeU5hbWUgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkxODU1Ij5CdWcgOTE4NTU8L2E+PC9saT4KICAgICA8bGk+bmFtZWRGbG93Q3JlYXRl
ZCA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI3Mzki
PkJ1ZyA5MjczOTwvYT48L2xpPgogICAgIDxsaT5uYW1lZEZsb3dSZW1vdmVkIDxhIGhyZWY9Imh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjczOSI+QnVnIDkyNzM5PC9h
PjwvbGk+CisgICAgPGxpPnJlZ2lvbkxheW91dFVwZGF0ZWQgPGEgaHJlZj0iaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzIj5CdWcgOTM0NDM8L2E+PC9saT4KIDwv
dWw+CiA8L3A+CiAKQEAgLTIxNiw4ICsyNDIsMTAgQEAgVGVzdHMgdGhlIGZvbGxvd2luZyBjb21t
YW5kcyBhbmQgZXZlbnRzOgogPGRpdiBzdHlsZT0iLXdlYmtpdC1mbG93LWZyb206IGZsb3cyIj48
L2Rpdj4KIDxkaXYgc3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MiI+PC9kaXY+CiAKLTxh
cnRpY2xlIHN0eWxlPSItd2Via2l0LWZsb3ctaW50bzogZmxvdzMiPjwvYXJ0aWNsZT4KLTxkaXYg
c3R5bGU9Ii13ZWJraXQtZmxvdy1mcm9tOiBmbG93MyI+PC9kaXY+Cis8YXJ0aWNsZSBzdHlsZT0i
LXdlYmtpdC1mbG93LWludG86IGZsb3czIj4KKyAgICBUaGlzIHRleHQgaXMgZnJvbSBDU1MgTmFt
ZWQgRmxvdyAiZmxvdzMiLgorPC9hcnRpY2xlPgorPGRpdiBpZD0icmVnaW9uMyIgc3R5bGU9Ii13
ZWJraXQtZmxvdy1mcm9tOiBmbG93MzsgaGVpZ2h0OiAyMHB4OyB3aWR0aDogNXB4Ij48L2Rpdj4K
IAogPGRpdiBpZD0iZmFrZS1kb2N1bWVudCI+PC9kaXY+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YTlmODli
Li5kZTYxZDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMTItMDktMTIgIEFuZHJl
aSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
UHJvdG9jb2wgRXh0ZW5zaW9uOiBBZGQgInJlZ2lvbkxheW91dFVwZGF0ZSIgZXZlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzNDQzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgInJlZ2lvbkxh
eW91dFVwZGF0ZSIgZXZlbnQgdG8gdGhlIHByb3RvY29sLgorCisgICAgICAgIFJlbW92ZWQgImdl
dEZsb3dCeU5hbWUiIGZyb20gcHJvdG9jb2wuCisKKyAgICAgICAgVGhlIGZyb250LWVuZCBrZWVw
cyBpbiBzeW5jIHRoZSByZXF1ZXN0ZWQgTmFtZWQgRmxvdyBDb2xsZWN0aW9ucy4KKworICAgICAg
ICBNb2RpZmllZCBleGlzdGluZyB0ZXN0OiBpbnNwZWN0b3Ivc3R5bGVzL3Byb3RvY29sLWNzcy1y
ZWdpb25zLWNvbW1hbmRzLmh0bWwKKworICAgICAgICAqIGRvbS9OYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkRmxvd0NvbGxlY3Rpb246OmVuc3VyZUZsb3dX
aXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZEZsb3dDb2xsZWN0aW9uOjpkaXNjYXJk
TmFtZWRGbG93KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFVwZGF0ZVJlZ2lv
bkxheW91dFRhc2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVcGRh
dGVSZWdpb25MYXlvdXRUYXNrOjpVcGRhdGVSZWdpb25MYXlvdXRUYXNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnNjaGVkdWxlRm9yKToKKyAgICAgICAgKFdl
YkNvcmU6OlVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnVuc2NoZWR1bGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
VXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6b25UaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6cmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdl
bnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NB
Z2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
U1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNTU0FnZW50OjpyZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNTU0FnZW50Ojpkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKEluc3BlY3RvckNTU0FnZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVOYW1lZEZsb3dJ
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZU5hbWVkRmxvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAgICAgIChJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsUmVtb3ZlTmFtZWRGbG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRVcGRhdGVSZWdpb25MYXlvdXQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
U1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmMuY2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLmdldE5h
bWVkRmxvd0NvbGxlY3Rpb25Bc3luYyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
b2RlbC5wcm90b3R5cGUuZ2V0Rmxvd0J5TmFtZUFzeW5jLmNhbGxiYWNrKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5nZXRGbG93QnlOYW1lQXN5bmMpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwucHJvdG90eXBlLl9uYW1lZEZsb3dD
cmVhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZS5f
bmFtZWRGbG93UmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5w
cm90b3R5cGUuX3JlZ2lvbkxheW91dFVwZGF0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNT
U1N0eWxlTW9kZWwucHJvdG90eXBlLl9yZXNldE5hbWVkRmxvd0NvbGxlY3Rpb25zKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZsb3dDcmVhdGVk
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlwZS5uYW1lZEZs
b3dSZW1vdmVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NEaXNwYXRjaGVyLnByb3RvdHlw
ZS5yZWdpb25MYXlvdXRVcGRhdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBlLl9hcHBlbmROYW1lZEZs
b3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24ucHJvdG90eXBl
Ll9yZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxl
Y3Rpb24ucHJvdG90eXBlLmZsb3dCeU5hbWUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93VGhy
ZWFkOjpkaXNwYXRjaFJlZ2lvbkxheW91dFVwZGF0ZUV2ZW50KToKKwogMjAxMi0wOS0xMiAgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
W0VGTF0gQ2xlYW4gdXAgdGhlIFJlbmRlclRoZW1lIEVkamUgY2FjaGluZwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL05hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4IDE1ODhmYzYuLjU1NDc1MDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9OYW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKQEAgLTgxLDcgKzgx
LDcgQEAgUGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IE5hbWVkRmxvd0NvbGxlY3Rpb246OmVu
c3VyZUZsb3dXaXRoTmFtZShjb25zdCBTdHJpbmcKICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93
PiBuZXdGbG93ID0gV2ViS2l0TmFtZWRGbG93OjpjcmVhdGUodGhpcywgZmxvd05hbWUpOwogICAg
IG1fbmFtZWRGbG93cy5hZGQobmV3Rmxvdy5nZXQoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuZXdGbG93LT5uYW1lKCkp
OworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KG1fZG9j
dW1lbnQsIG5ld0Zsb3cuZ2V0KCkpOwogCiAgICAgcmV0dXJuIG5ld0Zsb3cucmVsZWFzZSgpOwog
fQpAQCAtOTUsOSArOTUsOSBAQCB2b2lkIE5hbWVkRmxvd0NvbGxlY3Rpb246OmRpc2NhcmROYW1l
ZEZsb3coV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCiAgICAgQVNTRVJUKG5hbWVkRmxvdy0+
Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKTsKICAgICBBU1NF
UlQobV9uYW1lZEZsb3dzLmNvbnRhaW5zKG5hbWVkRmxvdykpOwogCi0gICAgbV9uYW1lZEZsb3dz
LnJlbW92ZShuYW1lZEZsb3cpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZU5hbWVkRmxvdyhtX2RvY3VtZW50LCBuYW1lZEZsb3cpOwogCi0gICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3cobV9kb2N1bWVudCwgbmFtZWRGbG93LT5u
YW1lKCkpOworICAgIG1fbmFtZWRGbG93cy5yZW1vdmUobmFtZWRGbG93KTsKIH0KIAogdm9pZCBO
YW1lZEZsb3dDb2xsZWN0aW9uOjpkb2N1bWVudERlc3Ryb3llZCgpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggODE4NGNjMC4uZjk4ZWEzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjMzOSwxOCArMjMzOSw2IEBACiAgICAg
ICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUmV0dXJucyB0
aGUgTmFtZWQgRmxvd3MgZnJvbSB0aGUgZG9jdW1lbnQuIiwKICAgICAgICAgICAgICAgICAiaGlk
ZGVuIjogdHJ1ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAibmFtZSI6ICJnZXRGbG93QnlOYW1lIiwKLSAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6
IFsKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkb2N1bWVudE5vZGVJZCIsICIkcmVm
IjogIkRPTS5Ob2RlSWQiLCAiZGVzY3JpcHRpb24iOiAiVGhlIGRvY3VtZW50IG5vZGUgaWQuIiB9
LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiTmFtZWQgRmxvdyBpZGVudGlmaWVyLiIgfQotICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgInJldHVybnMiOiBbCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRlc2NyaXB0aW9u
IjogIkEgTmFtZWQgRmxvdy4iIH0KLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJSZXR1cm5zIHRoZSBOYW1lZCBGbG93IGlkZW50aWZpZWQgYnkgdGhl
IGdpdmVuIG5hbWUiLAotICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCiAgICAgICAgICAg
ICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC0yMzY4LDggKzIzNTYsNyBA
QAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogIm5hbWVkRmxvd0NyZWF0
ZWQiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRvY3VtZW50Tm9kZUlkIiwgIiRyZWYiOiAiRE9NLk5vZGVJZCIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgZG9jdW1lbnQgbm9kZSBpZC4iIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibmFtZWRGbG93IiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjog
IklkZW50aWZpZXIgb2YgdGhlIG5ldyBOYW1lZCBGbG93LiIgfQorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5hbWVkRmxvdyIsICIkcmVmIjogIk5hbWVkRmxvdyIsICJkZXNjcmlwdGlv
biI6ICJUaGUgbmV3IE5hbWVkIEZsb3cuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlyZXMgd2hlbiBhIE5hbWVkIEZsb3cgaXMgY3JlYXRl
ZC4iLAogICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlCkBAIC0yMzc4LDEwICsyMzY1LDE4
IEBACiAgICAgICAgICAgICAgICAgIm5hbWUiOiAibmFtZWRGbG93UmVtb3ZlZCIsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
ZG9jdW1lbnROb2RlSWQiLCAiJHJlZiI6ICJET00uTm9kZUlkIiwgImRlc2NyaXB0aW9uIjogIlRo
ZSBkb2N1bWVudCBub2RlIGlkLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJu
YW1lZEZsb3ciLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSWRlbnRpZmllciBv
ZiB0aGUgcmVtb3ZlZCBOYW1lZCBGbG93LiIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImZsb3dOYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIklkZW50aWZp
ZXIgb2YgdGhlIHJlbW92ZWQgTmFtZWQgRmxvdy4iIH0KICAgICAgICAgICAgICAgICBdLAogICAg
ICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJGaXJlcyB3aGVuIGEgTmFtZWQgRmxvdyBpcyBy
ZW1vdmVkOiBoYXMgbm8gYXNzb2NpYXRlZCBjb250ZW50IG5vZGVzIGFuZCByZWdpb25zLiIsCiAg
ICAgICAgICAgICAgICAgImhpZGRlbiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAicmVnaW9uTGF5b3V0VXBkYXRlZCIsCisgICAg
ICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAibmFtZWRGbG93IiwgIiRyZWYiOiAiTmFtZWRGbG93IiwgImRlc2NyaXB0aW9uIjogIlRoZSBO
YW1lZCBGbG93IHdob3NlIGxheW91dCBtYXkgaGF2ZSBjaGFuZ2VkLiIgfQorICAgICAgICAgICAg
ICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkZpcmVzIHdoZW4gYSBOYW1l
ZCBGbG93J3MgbGF5b3V0IG1heSBoYXZlIGNoYW5nZWQuIiwKKyAgICAgICAgICAgICAgICAiaGlk
ZGVuIjogdHJ1ZQogICAgICAgICAgICAgfQogICAgICAgICBdCiAgICAgfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDI0YzcxOTcuLjA4
NDI1YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcApAQCAtMjI2LDYgKzIyNiw2NyBAQCBQYXNzUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNl
bGVjdG9yUHJvZmlsZT4gU2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdAogICAgIHJl
dHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCitjbGFzcyBVcGRhdGVSZWdpb25MYXlvdXRUYXNr
IHsKK3B1YmxpYzoKKyAgICBVcGRhdGVSZWdpb25MYXlvdXRUYXNrKEluc3BlY3RvckNTU0FnZW50
Kik7CisgICAgdm9pZCBzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZsb3cqLCBpbnQgZG9jdW1lbnRO
b2RlSWQpOworICAgIHZvaWQgdW5zY2hlZHVsZShXZWJLaXROYW1lZEZsb3cqKTsKKyAgICB2b2lk
IHJlc2V0KCk7CisgICAgdm9pZCBvblRpbWVyKFRpbWVyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+
Kik7CisKK3ByaXZhdGU6CisgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1fY3NzQWdlbnQ7CisgICAg
VGltZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4gbV90aW1lcjsKKyAgICBIYXNoTWFwPFdlYktp
dE5hbWVkRmxvdyosIGludD4gbV9uYW1lZEZsb3dzOworfTsKKworVXBkYXRlUmVnaW9uTGF5b3V0
VGFzazo6VXBkYXRlUmVnaW9uTGF5b3V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQp
CisgICAgOiBtX2Nzc0FnZW50KGNzc0FnZW50KQorICAgICwgbV90aW1lcih0aGlzLCAmVXBkYXRl
UmVnaW9uTGF5b3V0VGFzazo6b25UaW1lcikKK3sKK30KKwordm9pZCBVcGRhdGVSZWdpb25MYXlv
dXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdywgaW50IGRvY3Vt
ZW50Tm9kZUlkKQoreworICAgIG1fbmFtZWRGbG93cy5hZGQobmFtZWRGbG93LCBkb2N1bWVudE5v
ZGVJZCk7CisKKyAgICBpZiAoIW1fdGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6dW5zY2hl
ZHVsZShXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKK3sKKyAgICBtX25hbWVkRmxvd3MucmVt
b3ZlKG5hbWVkRmxvdyk7Cit9CisKK3ZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6cmVzZXQo
KQoreworICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1fbmFtZWRGbG93cy5jbGVhcigpOworfQor
Cit2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6Om9uVGltZXIoVGltZXI8VXBkYXRlUmVnaW9u
TGF5b3V0VGFzaz4qKQoreworICAgIC8vIFRoZSB0aW1lciBpcyBzdG9wcGVkIG9uIG1fY3NzQWdl
bnQgZGVzdHJ1Y3Rpb24sIHNvIHRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIGFmdGVy
IG1fY3NzQWdlbnQgaGFzIGJlZW4gZGVzdHJveWVkLgorICAgIFZlY3RvcjxzdGQ6OnBhaXI8V2Vi
S2l0TmFtZWRGbG93KiwgaW50PiA+IG5hbWVkRmxvd3M7CisKKyAgICBmb3IgKEhhc2hNYXA8V2Vi
S2l0TmFtZWRGbG93KiwgaW50Pjo6aXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3MuYmVnaW4oKSwg
ZW5kID0gbV9uYW1lZEZsb3dzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCisgICAgICAgIG5hbWVk
Rmxvd3MuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGl0LT5maXJzdCwgaXQtPnNlY29uZCkpOworCisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMCwgc2l6ZSA9IG5hbWVkRmxvd3Muc2l6ZSgpOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93ID0gbmFtZWRGbG93
cy5hdChpKS5maXJzdDsKKyAgICAgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gbmFtZWRGbG93cy5h
dChpKS5zZWNvbmQ7CisKKyAgICAgICAgaWYgKG1fbmFtZWRGbG93cy5jb250YWlucyhuYW1lZEZs
b3cpKSB7CisgICAgICAgICAgICBtX2Nzc0FnZW50LT5yZWdpb25MYXlvdXRVcGRhdGVkKG5hbWVk
RmxvdywgZG9jdW1lbnROb2RlSWQpOworICAgICAgICAgICAgbV9uYW1lZEZsb3dzLnJlbW92ZShu
YW1lZEZsb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFtX25hbWVkRmxvd3MuaXNF
bXB0eSgpICYmICFtX3RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVT
aG90KDApOworfQorCiBjbGFzcyBJbnNwZWN0b3JDU1NBZ2VudDo6U3R5bGVTaGVldEFjdGlvbiA6
IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFN0eWxlU2hlZXRBY3Rpb24pOwogcHVibGljOgpAQCAtNTE4LDYgKzU3OSw4IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnJlc2V0KCkKICAgICBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hl
ZXQuY2xlYXIoKTsKICAgICBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNoZWV0LmNsZWFyKCk7
CiAgICAgbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1JlcXVlc3RlZC5jbGVhcigpOworICAgIGlmICht
X3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCisgICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFz
ay0+cmVzZXQoKTsKICAgICByZXNldFBzZXVkb1N0YXRlcygpOwogfQogCkBAIC01MzcsMjIgKzYw
MCw0OCBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjptZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgp
CiAgICAgICAgIG1fZnJvbnRlbmQtPm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1
ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKKyAgICBtX2Zyb250ZW5k
LT5uYW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywg
bmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOworfQorCit2b2lkIEluc3BlY3RvckNTU0FnZW50
Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93
KiBuYW1lZEZsb3cpCit7CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0
aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCisgICAg
ICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzay0+dW5zY2hlZHVsZShuYW1lZEZsb3cpOworCisg
ICAgbV9mcm9udGVuZC0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93
LT5uYW1lKCkuc3RyaW5nKCkpOworfQorCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRVcGRh
dGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVk
RmxvdykKIHsKLSAgICBpbnQgbm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1l
bnQpOwotICAgIGlmICghbm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVk
LmNvbnRhaW5zKG5vZGVJZCkpCisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2Rl
V2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQpOworICAgIGlmICghZG9jdW1lbnROb2RlSWQp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPm5hbWVkRmxvd0NyZWF0ZWQobm9k
ZUlkLCBuYW1lLnN0cmluZygpKTsKKyAgICBpZiAoIW1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzaykK
KyAgICAgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrID0gYWRvcHRQdHIobmV3IFVwZGF0ZVJl
Z2lvbkxheW91dFRhc2sodGhpcykpOworICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzay0+c2No
ZWR1bGVGb3IobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbkxheW91dFVw
ZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKIHsK
LSAgICBpbnQgbm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2RlSWQoZG9jdW1lbnQpOwotICAg
IGlmICghbm9kZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5z
KG5vZGVJZCkpCisgICAgaWYgKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFtZWRG
bG93OjpGbG93U3RhdGVOdWxsKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5u
YW1lZEZsb3dSZW1vdmVkKG5vZGVJZCwgbmFtZS5zdHJpbmcoKSk7CisgICAgRXJyb3JTdHJpbmcg
ZXJyb3JTdHJpbmc7CisgICAgUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gcHJvdGVjdG9yKG5hbWVk
Rmxvdyk7CisKKyAgICBtX2Zyb250ZW5kLT5yZWdpb25MYXlvdXRVcGRhdGVkKGJ1aWxkT2JqZWN0
Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwog
fQogCiBib29sIEluc3BlY3RvckNTU0FnZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVs
ZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1R5cGUpCkBAIC04MjgsMzIgKzkx
NywxNiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXROYW1lZEZsb3dDb2xsZWN0aW9uKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGRvYwogICAgICAgICByZXR1cm47CiAKICAgICBt
X25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmFkZChkb2N1bWVudE5vZGVJZCk7CisKICAg
ICBWZWN0b3I8UmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gPiBuYW1lZEZsb3dzVmVjdG9yID0gZG9j
dW1lbnQtPm5hbWVkRmxvd3MoKS0+bmFtZWRGbG93cygpOwogICAgIFJlZlB0cjxUeXBlQnVpbGRl
cjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93PiA+IG5hbWVkRmxvd3MgPSBUeXBl
QnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pjo6Y3JlYXRlKCk7CiAK
LQogICAgIGZvciAoVmVjdG9yPFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+ID46Oml0ZXJhdG9yIGl0
ID0gbmFtZWRGbG93c1ZlY3Rvci5iZWdpbigpOyBpdCAhPSBuYW1lZEZsb3dzVmVjdG9yLmVuZCgp
OyArK2l0KQogICAgICAgICBuYW1lZEZsb3dzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yTmFtZWRG
bG93KGVycm9yU3RyaW5nLCBpdC0+Z2V0KCksIGRvY3VtZW50Tm9kZUlkKSk7CiAKICAgICByZXN1
bHQgPSBuYW1lZEZsb3dzLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0Rmxvd0J5TmFtZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBkb2N1bWVudE5vZGVJ
ZCwgY29uc3QgU3RyaW5nJiBmbG93TmFtZSwgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6Ok5hbWVk
Rmxvdz4mIHJlc3VsdCkKLXsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX2RvbUFnZW50LT5h
c3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZG9jdW1lbnROb2RlSWQpOwotICAgIGlmICghZG9j
dW1lbnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdlYktpdE5hbWVkRmxvdyogd2Via2l0TmFt
ZWRGbG93ID0gZG9jdW1lbnQtPm5hbWVkRmxvd3MoKS0+Zmxvd0J5TmFtZShmbG93TmFtZSk7Ci0g
ICAgaWYgKCF3ZWJraXROYW1lZEZsb3cpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIHRh
cmdldCBDU1MgTmFtZWQgRmxvdyBmb3VuZCI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0b3Iod2Via2l0TmFtZWRGbG93KTsKLSAg
ICByZXN1bHQgPSBidWlsZE9iamVjdEZvck5hbWVkRmxvdyhlcnJvclN0cmluZywgd2Via2l0TmFt
ZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0
YXJ0U2VsZWN0b3JQcm9maWxlcihFcnJvclN0cmluZyopCiB7CiAgICAgbV9jdXJyZW50U2VsZWN0
b3JQcm9maWxlID0gYWRvcHRQdHIobmV3IFNlbGVjdG9yUHJvZmlsZSgpKTsKQEAgLTkzMyw2ICsx
MDA2LDE1IEBAIEVsZW1lbnQqIEluc3BlY3RvckNTU0FnZW50OjplbGVtZW50Rm9ySWQoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkKQogICAgIHJldHVybiB0b0VsZW1lbnQobm9k
ZSk7CiB9CiAKK2ludCBJbnNwZWN0b3JDU1NBZ2VudDo6ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3Rl
ZEZsb3dzSWQoRG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIGludCBkb2N1bWVudE5vZGVJZCA9
IG1fZG9tQWdlbnQtPmJvdW5kTm9kZUlkKGRvY3VtZW50KTsKKyAgICBpZiAoIWRvY3VtZW50Tm9k
ZUlkIHx8ICFtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVkLmNvbnRhaW5zKGRvY3VtZW50
Tm9kZUlkKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gZG9jdW1lbnROb2RlSWQ7
Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNvbGxlY3RTdHlsZVNoZWV0cyhDU1NTdHls
ZVNoZWV0KiBzdHlsZVNoZWV0LCBUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGVTaGVldEhlYWRlcj4qIHJlc3VsdCkKIHsKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0
KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gYmluZFN0eWxlU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5
bGVTaGVldCo+KHN0eWxlU2hlZXQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmgKaW5kZXggOTMxZWQzZC4uYzE5MDYxMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3Mg
Tm9kZTsKIGNsYXNzIE5vZGVMaXN0OwogY2xhc3MgU2VsZWN0b3JQcm9maWxlOwogY2xhc3MgU3R5
bGVSZXNvbHZlcjsKK2NsYXNzIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CiAKICNpZiBFTkFCTEUo
SU5TUEVDVE9SKQogCkBAIC05OSw4ICsxMDAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgbWVk
aWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxvdyhEb2N1
bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7Ci0gICAgdm9pZCBkaWRSZW1vdmVOYW1l
ZEZsb3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOworICAgIHZvaWQgZGlk
Q3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9pZCB3
aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CisgICAgdm9p
ZCBkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqKTsKKyAg
ICB2b2lkIHJlZ2lvbkxheW91dFVwZGF0ZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50
Tm9kZUlkKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRlZFN0eWxlRm9yTm9kZShFcnJv
clN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5PiA+Jik7CiAgICAgdmlydHVhbCB2b2lk
IGdldElubGluZVN0eWxlc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8
VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiBpbmxpbmVTdHlsZSwgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7CkBAIC0xMTYsNyArMTE5LDYgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXRTdXBwb3J0ZWRDU1NQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpDU1NQcm9w
ZXJ0eUluZm8+ID4mIHJlc3VsdCk7CiAgICAgdmlydHVhbCB2b2lkIGZvcmNlUHNldWRvU3RhdGUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBm
b3JjZWRQc2V1ZG9DbGFzc2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVj
dGlvbihFcnJvclN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpBcnJheTxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZsb3c+ID4mIHJlc3VsdCk7Ci0gICAgdmly
dHVhbCB2b2lkIGdldEZsb3dCeU5hbWUoRXJyb3JTdHJpbmcqLCBpbnQgZG9jdW1lbnROb2RlSWQs
IGNvbnN0IFN0cmluZyYgZmxvd05hbWUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpOYW1lZEZs
b3c+JiByZXN1bHQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0U2VsZWN0b3JQcm9maWxlcihF
cnJvclN0cmluZyopOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wU2VsZWN0b3JQcm9maWxlcihFcnJv
clN0cmluZyosIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+Jik7CkBA
IC0xNDUsNiArMTQ3LDcgQEAgcHJpdmF0ZToKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZSogYXNJbnNwZWN0b3JTdHlsZVNoZWV0KEVsZW1lbnQqIGVsZW1lbnQpOwogICAg
IEVsZW1lbnQqIGVsZW1lbnRGb3JJZChFcnJvclN0cmluZyosIGludCBub2RlSWQpOworICAgIGlu
dCBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChEb2N1bWVudCopOwogICAgIHZvaWQg
Y29sbGVjdFN0eWxlU2hlZXRzKENTU1N0eWxlU2hlZXQqLCBUeXBlQnVpbGRlcjo6QXJyYXk8V2Vi
Q29yZTo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGVTaGVldEhlYWRlcj4qKTsKIAogICAgIElu
c3BlY3RvclN0eWxlU2hlZXQqIGJpbmRTdHlsZVNoZWV0KENTU1N0eWxlU2hlZXQqKTsKQEAgLTE3
Niw2ICsxNzksNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50VG9WaWFJbnNwZWN0b3JTdHlsZVNo
ZWV0IG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgTm9kZUlkVG9Gb3JjZWRQ
c2V1ZG9TdGF0ZSBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAgICAgSGFzaFNldDxpbnQ+
IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7CisgICAgT3duUHRyPFVwZGF0ZVJlZ2lv
bkxheW91dFRhc2s+IG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKIAogICAgIGludCBtX2xhc3RT
dHlsZVNoZWV0SWQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZjUwYmRkMy4uMGMzZWM0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5j
cHAKQEAgLTIzMSwxNiArMjMxLDIyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsUG9wU2hhZG93Um9vdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1CiAgICAgICAg
IGRvbUFnZW50LT53aWxsUG9wU2hhZG93Um9vdChob3N0LCByb290KTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ3Jl
YXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
LCBEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQogewogICAg
IGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5p
bnNwZWN0b3JDU1NBZ2VudCgpKQotICAgICAgICBjc3NBZ2VudC0+ZGlkQ3JlYXRlTmFtZWRGbG93
KGRvY3VtZW50LCBuYW1lKTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5hbWVkRmxvdyhk
b2N1bWVudCwgbmFtZWRGbG93KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGlu
Z0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5hbWVkRmxvd0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQqIGRvY3VtZW50
LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdl
bnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkK
LSAgICAgICAgY3NzQWdlbnQtPmRpZFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwgbmFtZSk7Cisg
ICAgICAgIGNzc0FnZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KGRvY3VtZW50LCBuYW1lZEZsb3cp
OworfQorCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9uTGF5
b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVu
dCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQoreworICAgIGlmIChJbnNw
ZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JD
U1NBZ2VudCgpKQorICAgICAgICBjc3NBZ2VudC0+ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KGRvY3Vt
ZW50LCBuYW1lZEZsb3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91
c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJG
bGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaAppbmRleCAyYThjZWZjLi5iZmIzY2I5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xMTQsOCArMTE0
LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKERv
Y3VtZW50Kik7CiAgICAgc3RhdGljIHZvaWQgZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCogaG9z
dCwgU2hhZG93Um9vdCopOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQb3BTaGFkb3dSb290KEVsZW1l
bnQqIGhvc3QsIFNoYWRvd1Jvb3QqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZs
b3coRG9jdW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lk
IGRpZFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCosIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7
CisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFt
ZWRGbG93Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCos
IFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVwZGF0ZVJlZ2lvbkxheW91
dChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwogCiAgICAgc3RhdGljIHZvaWQgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoUGFnZSosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25lZCBt
b2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzKFBhZ2UqKTsK
QEAgLTI5MSw4ICsyOTIsOSBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIG1lZGlhUXVlcnlS
ZXN1bHRDaGFuZ2VkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkUHVzaFNoYWRvd1Jvb3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0
LCBTaGFkb3dSb290Kik7CiAgICAgc3RhdGljIHZvaWQgd2lsbFBvcFNoYWRvd1Jvb3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiBob3N0LCBTaGFkb3dSb290Kik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgRG9j
dW1lbnQqLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJl
bW92ZU5hbWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3dJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwor
ICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMqLCBEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOworICAgIHN0YXRpYyB2b2lkIGRpZFVw
ZGF0ZVJlZ2lvbkxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIERvY3VtZW50KiwgV2Vi
S2l0TmFtZWRGbG93Kik7CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1bnNpZ25l
ZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNzSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKik7CkBAIC01NjIsMjEgKzU2NCwzMCBAQCBpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhvc3Qs
IFNoYWRvd1JvbwogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgQXRvbWlj
U3RyaW5nJiBuYW1lKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
cmVhdGVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cqIG5hbWVk
RmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAg
ICAgICAgZGlkQ3JlYXRlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVu
dCwgbmFtZSk7CisgICAgICAgIGRpZENyZWF0ZU5hbWVkRmxvd0ltcGwoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiAjZW5kaWYKIH0KIAotaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJL
aXROYW1lZEZsb3cqIG5hbWVkRmxvdykKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3Vt
ZW50KGRvY3VtZW50KSkKLSAgICAgICAgZGlkUmVtb3ZlTmFtZWRGbG93SW1wbChpbnN0cnVtZW50
aW5nQWdlbnRzLCBkb2N1bWVudCwgbmFtZSk7CisgICAgICAgIHdpbGxSZW1vdmVOYW1lZEZsb3dJ
bXBsKGluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBuYW1lZEZsb3cpOworI2VuZGlmCit9
CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkVXBkYXRlUmVnaW9u
TGF5b3V0KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3cpCit7
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMo
dm9pZCgpKTsKKyAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRp
ZFVwZGF0ZVJlZ2lvbkxheW91dEltcGwoaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIG5h
bWVkRmxvdyk7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDgyMDY5NWIuLjZlOTlkYWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwu
anMKQEAgLTM5LDYgKzM5LDggQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwgPSBmdW5jdGlv
bigpCiAgICAgV2ViSW5zcGVjdG9yLmRvbUFnZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTUFnZW50LkV2ZW50cy5VbmRvUmVkb1JlcXVlc3RlZCwgdGhpcy5fdW5kb1JlZG9SZXF1
ZXN0ZWQsIHRoaXMpOwogICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01BZ2VudC5FdmVudHMuVW5kb1JlZG9Db21wbGV0ZWQsIHRoaXMuX3Vu
ZG9SZWRvQ29tcGxldGVkLCB0aGlzKTsKICAgICB0aGlzLl9yZXNvdXJjZUJpbmRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWxSZXNvdXJjZUJpbmRpbmcodGhpcyk7CisgICAgdGhp
cy5fbmFtZWRGbG93Q29sbGVjdGlvbnMgPSB7fTsKKyAgICBXZWJJbnNwZWN0b3IuZG9tQWdlbnQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NQWdlbnQuRXZlbnRzLkRvY3VtZW50VXBk
YXRlZCwgdGhpcy5fcmVzZXROYW1lZEZsb3dDb2xsZWN0aW9ucywgdGhpcyk7CiAgICAgSW5zcGVj
dG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIobmV3IFdlYkluc3BlY3Rvci5DU1NEaXNw
YXRjaGVyKHRoaXMpKTsKICAgICBDU1NBZ2VudC5lbmFibGUoKTsKIH0KQEAgLTU4LDcgKzYwLDgg
QEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzID0gewogICAgIFN0eWxlU2hlZXRD
aGFuZ2VkOiAiU3R5bGVTaGVldENoYW5nZWQiLAogICAgIE1lZGlhUXVlcnlSZXN1bHRDaGFuZ2Vk
OiAiTWVkaWFRdWVyeVJlc3VsdENoYW5nZWQiLAogICAgIE5hbWVkRmxvd0NyZWF0ZWQ6ICJOYW1l
ZEZsb3dDcmVhdGVkIiwKLSAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIK
KyAgICBOYW1lZEZsb3dSZW1vdmVkOiAiTmFtZWRGbG93UmVtb3ZlZCIsCisgICAgUmVnaW9uTGF5
b3V0VXBkYXRlZDogIlJlZ2lvbkxheW91dFVwZGF0ZWQiCiB9CiAKIFdlYkluc3BlY3Rvci5DU1NT
dHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKQEAgLTE3MSw0OCArMTc0LDYyIEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
P0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pil9IHVzZXJDYWxsYmFjaworICAgICAqIEBw
YXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBkb2N1bWVudE5vZGVJZAorICAgICAqIEBwYXJhbSB7ZnVu
Y3Rpb24oP1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9uKX0gdXNlckNhbGxiYWNrCiAg
ICAgICovCi0gICAgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbkFzeW5jOiBmdW5jdGlvbihub2RlSWQs
IHVzZXJDYWxsYmFjaykKKyAgICBnZXROYW1lZEZsb3dDb2xsZWN0aW9uQXN5bmM6IGZ1bmN0aW9u
KGRvY3VtZW50Tm9kZUlkLCB1c2VyQ2FsbGJhY2spCiAgICAgeworICAgICAgICB2YXIgbmFtZWRG
bG93Q29sbGVjdGlvbiA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlk
XTsKKyAgICAgICAgaWYgKG5hbWVkRmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHVzZXJD
YWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIC8qKgotICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9BcnJheS48
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdz4pfSB1c2VyQ2FsbGJhY2sKKyAgICAgICAgICogQHBhcmFt
IHtmdW5jdGlvbig/V2ViSW5zcGVjdG9yLk5hbWVkRmxvd0NvbGxlY3Rpb24pfSB1c2VyQ2FsbGJh
Y2sKICAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAq
IEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRGbG93UGF5bG9hZAor
ICAgICAgICAgKiBAcGFyYW0gez9BcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pn0gbmFtZWRGbG93
UGF5bG9hZAogICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2sodXNlckNhbGxi
YWNrLCBlcnJvciwgbmFtZWRGbG93UGF5bG9hZCkKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KGVycm9yIHx8ICFuYW1lZEZsb3dQYXlsb2FkKQogICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFj
ayhudWxsKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2so
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWRBcnJheShuYW1lZEZsb3dQYXlsb2Fk
KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgbmFtZWRGbG93Q29s
bGVjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuTmFtZWRGbG93Q29sbGVjdGlvbihuYW1lZEZsb3dQ
YXlsb2FkKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tkb2N1
bWVudE5vZGVJZF0gPSBuYW1lZEZsb3dDb2xsZWN0aW9uOworICAgICAgICAgICAgICAgIHVzZXJD
YWxsYmFjayhuYW1lZEZsb3dDb2xsZWN0aW9uKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
Ci0gICAgICAgIENTU0FnZW50LmdldE5hbWVkRmxvd0NvbGxlY3Rpb24obm9kZUlkLCBjYWxsYmFj
ay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFjaykpOworICAgICAgICBDU1NBZ2VudC5nZXROYW1lZEZs
b3dDb2xsZWN0aW9uKGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxs
YmFjaykpOwogICAgIH0sCiAKICAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJ
ZH0gbm9kZUlkCisgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlk
CiAgICAgICogQHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCiAgICAgICogQHBhcmFtIHtmdW5jdGlv
big/V2ViSW5zcGVjdG9yLk5hbWVkRmxvdyl9IHVzZXJDYWxsYmFjawogICAgICAqLwotICAgIGdl
dEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24obm9kZUlkLCBmbG93TmFtZSwgdXNlckNhbGxiYWNr
KQorICAgIGdldEZsb3dCeU5hbWVBc3luYzogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dO
YW1lLCB1c2VyQ2FsbGJhY2spCiAgICAgeworICAgICAgICB2YXIgbmFtZWRGbG93Q29sbGVjdGlv
biA9IHRoaXMuX25hbWVkRmxvd0NvbGxlY3Rpb25zW2RvY3VtZW50Tm9kZUlkXTsKKyAgICAgICAg
aWYgKG5hbWVkRmxvd0NvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgIHVzZXJDYWxsYmFjayhuYW1l
ZEZsb3dDb2xsZWN0aW9uLmZsb3dCeU5hbWUoZmxvd05hbWUpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCiAgICAgICAgIC8qKgogICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9u
KD9XZWJJbnNwZWN0b3IuTmFtZWRGbG93KX0gdXNlckNhbGxiYWNrCi0gICAgICAgICAqIEBwYXJh
bSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAgICAgICAgKiBAcGFyYW0gez9DU1NBZ2VudC5O
YW1lZEZsb3c9fSBuYW1lZEZsb3dQYXlsb2FkCisgICAgICAgICAqIEBwYXJhbSB7P1dlYkluc3Bl
Y3Rvci5OYW1lZEZsb3dDb2xsZWN0aW9ufSBuYW1lZEZsb3dDb2xsZWN0aW9uCiAgICAgICAgICAq
LwotICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIGVycm9yLCBuYW1lZEZs
b3dQYXlsb2FkKQorICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayh1c2VyQ2FsbGJhY2ssIG5hbWVk
Rmxvd0NvbGxlY3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvciB8fCAhbmFt
ZWRGbG93UGF5bG9hZCkKKyAgICAgICAgICAgIGlmICghbmFtZWRGbG93Q29sbGVjdGlvbikKICAg
ICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgdXNlckNhbGxiYWNrKFdlYkluc3BlY3Rvci5OYW1lZEZsb3cucGFyc2VQYXls
b2FkKG5hbWVkRmxvd1BheWxvYWQpKTsKKyAgICAgICAgICAgICAgICB1c2VyQ2FsbGJhY2sobmFt
ZWRGbG93Q29sbGVjdGlvbi5mbG93QnlOYW1lKGZsb3dOYW1lKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBDU1NBZ2VudC5nZXRGbG93QnlOYW1lKG5vZGVJZCwgZmxvd05hbWUsIGNhbGxiYWNrLmJp
bmQodGhpcywgdXNlckNhbGxiYWNrKSk7CisgICAgICAgIHRoaXMuZ2V0TmFtZWRGbG93Q29sbGVj
dGlvbkFzeW5jKGRvY3VtZW50Tm9kZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMsIHVzZXJDYWxsYmFj
aykpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTM1MCw1MSArMzY3LDQ4IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZU1vZGVsLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICog
QHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93
UGF5bG9hZAogICAgICAqLwotICAgIF9uYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihkb2N1bWVu
dE5vZGVJZCwgbmFtZSkKKyAgICBfbmFtZWRGbG93Q3JlYXRlZDogZnVuY3Rpb24obmFtZWRGbG93
UGF5bG9hZCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVudExpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuRE9NRG9jdW1lbnR9IHJvb3QKLSAgICAgICAgKi8KLSAgICAgICAgZnVuY3Rpb24gY2FsbGJh
Y2socm9vdCkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gRklYTUU6IEF0IHRoZSBtb21lbnQg
d2Ugb25seSB3YW50IHN1cHBvcnQgZm9yIE5hbWVkRmxvd3MgaW4gdGhlIG1haW4gZG9jdW1lbnQK
LSAgICAgICAgICAgIGlmIChkb2N1bWVudE5vZGVJZCAhPT0gcm9vdC5pZCkKLSAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0b3IuTmFtZWRG
bG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgdmFyIG5hbWVkRmxv
d0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tuYW1lZEZsb3cuZG9jdW1l
bnROb2RlSWRdOwogCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgeyBkb2N1
bWVudE5vZGVJZDogZG9jdW1lbnROb2RlSWQsIG5hbWU6IG5hbWUgfSk7Ci0gICAgICAgIH0KKyAg
ICAgICAgaWYgKCFuYW1lZEZsb3dDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0RG9jdW1lbnQoY2FsbGJhY2suYmlu
ZCh0aGlzKSk7CisgICAgICAgIG5hbWVkRmxvd0NvbGxlY3Rpb24uX2FwcGVuZE5hbWVkRmxvdyhu
YW1lZEZsb3cpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93Q3JlYXRlZCwgbmFtZWRGbG93KTsK
ICAgICB9LAogCiAgICAgLyoqCiAgICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3Vt
ZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ30gZmxvd05hbWUKICAgICAgKi8KLSAgICBfbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24o
ZG9jdW1lbnROb2RlSWQsIG5hbWUpCisgICAgX25hbWVkRmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRv
Y3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5oYXNFdmVu
dExpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5FdmVudHMuTmFtZWRGbG93UmVt
b3ZlZCkpCisgICAgICAgIHZhciBuYW1lZEZsb3dDb2xsZWN0aW9uID0gdGhpcy5fbmFtZWRGbG93
Q29sbGVjdGlvbnNbZG9jdW1lbnROb2RlSWRdOworCisgICAgICAgIGlmICghbmFtZWRGbG93Q29s
bGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvKioKLSAgICAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5ET01Eb2N1bWVudH0gcm9vdAotICAgICAgICAqLwotICAgICAg
ICBmdW5jdGlvbiBjYWxsYmFjayhyb290KQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBGSVhN
RTogQXQgdGhlIG1vbWVudCB3ZSBvbmx5IHdhbnQgc3VwcG9ydCBmb3IgTmFtZWRGbG93cyBpbiB0
aGUgbWFpbiBkb2N1bWVudAotICAgICAgICAgICAgaWYgKGRvY3VtZW50Tm9kZUlkICE9PSByb290
LmlkKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbmFtZWRGbG93Q29sbGVjdGlv
bi5fcmVtb3ZlTmFtZWRGbG93KGZsb3dOYW1lKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1Jl
bW92ZWQsIHsgZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZTogZmxvd05h
bWUgfSk7CisgICAgfSwKIAotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLk5hbWVkRmxvd1JlbW92ZWQsIHsg
ZG9jdW1lbnROb2RlSWQ6IGRvY3VtZW50Tm9kZUlkLCBuYW1lOiBuYW1lIH0pOwotICAgICAgICB9
CisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2VudC5OYW1lZEZsb3d9IG5hbWVkRmxvd1Bh
eWxvYWQKKyAgICAgKi8KKyAgICBfcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRG
bG93UGF5bG9hZCkKKyAgICB7CisgICAgICAgIHZhciBuYW1lZEZsb3cgPSBXZWJJbnNwZWN0b3Iu
TmFtZWRGbG93LnBhcnNlUGF5bG9hZChuYW1lZEZsb3dQYXlsb2FkKTsKKyAgICAgICAgdmFyIG5h
bWVkRmxvd0NvbGxlY3Rpb24gPSB0aGlzLl9uYW1lZEZsb3dDb2xsZWN0aW9uc1tuYW1lZEZsb3cu
ZG9jdW1lbnROb2RlSWRdOwogCi0gICAgICAgIFdlYkluc3BlY3Rvci5kb21BZ2VudC5yZXF1ZXN0
RG9jdW1lbnQoY2FsbGJhY2suYmluZCh0aGlzKSk7CisgICAgICAgIGlmICghbmFtZWRGbG93Q29s
bGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBuYW1lZEZsb3dDb2xsZWN0
aW9uLl9hcHBlbmROYW1lZEZsb3cobmFtZWRGbG93KTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNTU1N0eWxlTW9kZWwuRXZlbnRzLlJlZ2lvbkxh
eW91dFVwZGF0ZWQsIG5hbWVkRmxvdyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtNDYzLDYgKzQ3
NywxMSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3NvdXJjZU1hcHBpbmdzID0ge307CiAgICAgfSwKIAorICAgIF9yZXNldE5hbWVkRmxv
d0NvbGxlY3Rpb25zOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9uYW1lZEZsb3dD
b2xsZWN0aW9ucyA9IHt9OworICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5DU1NMb2NhdGlvbn0gcmF3TG9jYXRpb24KICAgICAgKiBAcmV0dXJuIHs/V2ViSW5z
cGVjdG9yLlVJTG9jYXRpb259CkBAIC0xMzI2LDIxICsxMzQ1LDI4IEBAIFdlYkluc3BlY3Rvci5D
U1NEaXNwYXRjaGVyLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgLyoqCi0gICAgICogQHBh
cmFtIHtET01BZ2VudC5Ob2RlSWR9IGRvY3VtZW50Tm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IG5hbWUKKyAgICAgKiBAcGFyYW0ge0NTU0FnZW50Lk5hbWVkRmxvd30gbmFtZWRGbG93UGF5
bG9hZAogICAgICAqLwotICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9k
ZUlkLCBuYW1lKQorICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvd1BheWxv
YWQpCiAgICAgewotICAgICAgICB0aGlzLl9jc3NNb2RlbC5fbmFtZWRGbG93Q3JlYXRlZChkb2N1
bWVudE5vZGVJZCwgbmFtZSk7CisgICAgICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dDcmVh
dGVkKG5hbWVkRmxvd1BheWxvYWQpOwogICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0g
e0RPTUFnZW50Lk5vZGVJZH0gZG9jdW1lbnROb2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmbG93TmFtZQogICAgICAqLwotICAgIG5hbWVk
Rmxvd1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBuYW1lKQorICAgIG5hbWVkRmxv
d1JlbW92ZWQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSkKICAgICB7Ci0gICAg
ICAgIHRoaXMuX2Nzc01vZGVsLl9uYW1lZEZsb3dSZW1vdmVkKGRvY3VtZW50Tm9kZUlkLCBuYW1l
KTsKKyAgICAgICAgdGhpcy5fY3NzTW9kZWwuX25hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2Rl
SWQsIGZsb3dOYW1lKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtDU1NBZ2Vu
dC5OYW1lZEZsb3d9IG5hbWVkRmxvd1BheWxvYWQKKyAgICAgKi8KKyAgICByZWdpb25MYXlvdXRV
cGRhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3dQYXlsb2FkKQorICAgIHsKKyAgICAgICAgdGhpcy5f
Y3NzTW9kZWwuX3JlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRGbG93UGF5bG9hZCk7CiAgICAgfQog
fQogCkBAIC0xMzUwLDcgKzEzNzYsNyBAQCBXZWJJbnNwZWN0b3IuQ1NTRGlzcGF0Y2hlci5wcm90
b3R5cGUgPSB7CiAgKi8KIFdlYkluc3BlY3Rvci5OYW1lZEZsb3cgPSBmdW5jdGlvbihwYXlsb2Fk
KQogewotICAgIHRoaXMubm9kZUlkID0gcGF5bG9hZC5kb2N1bWVudE5vZGVJZDsKKyAgICB0aGlz
LmRvY3VtZW50Tm9kZUlkID0gcGF5bG9hZC5kb2N1bWVudE5vZGVJZDsKICAgICB0aGlzLm5hbWUg
PSBwYXlsb2FkLm5hbWU7CiAgICAgdGhpcy5vdmVyc2V0ID0gcGF5bG9hZC5vdmVyc2V0OwogICAg
IHRoaXMuY29udGVudCA9IHBheWxvYWQuY29udGVudDsKQEAgLTEzNjcsMjAgKzEzOTMsNTAgQEAg
V2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQgPSBmdW5jdGlvbihwYXlsb2FkKQog
fQogCiAvKioKLSAqIEBwYXJhbSB7P0FycmF5LjxDU1NBZ2VudC5OYW1lZEZsb3c+PX0gbmFtZWRG
bG93UGF5bG9hZAotICogQHJldHVybiB7P0FycmF5LjxXZWJJbnNwZWN0b3IuTmFtZWRGbG93Pn0K
KyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtBcnJheS48Q1NTQWdlbnQuTmFtZWRGbG93Pn0g
cGF5bG9hZAogICovCi1XZWJJbnNwZWN0b3IuTmFtZWRGbG93LnBhcnNlUGF5bG9hZEFycmF5ID0g
ZnVuY3Rpb24obmFtZWRGbG93UGF5bG9hZCkKK1dlYkluc3BlY3Rvci5OYW1lZEZsb3dDb2xsZWN0
aW9uID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsKLSAgICBpZiAoIW5hbWVkRmxvd1BheWxvYWQpCi0g
ICAgICAgIHJldHVybiBudWxsOworICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIFdlYklu
c3BlY3Rvci5OYW1lZEZsb3c+fSAqLworICAgIHRoaXMubmFtZWRGbG93TWFwID0ge307CiAKLSAg
ICB2YXIgcGFyc2VkQXJyYXkgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5hbWVkRmxv
d1BheWxvYWQubGVuZ3RoOyArK2kpCi0gICAgICAgIHBhcnNlZEFycmF5W2ldID0gV2ViSW5zcGVj
dG9yLk5hbWVkRmxvdy5wYXJzZVBheWxvYWQobmFtZWRGbG93UGF5bG9hZFtpXSk7Ci0gICAgcmV0
dXJuIHBhcnNlZEFycmF5OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGF5bG9hZC5sZW5ndGg7
ICsraSkgeworICAgICAgICB2YXIgbmFtZWRGbG93ID0gV2ViSW5zcGVjdG9yLk5hbWVkRmxvdy5w
YXJzZVBheWxvYWQocGF5bG9hZFtpXSk7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFwW25hbWVk
Rmxvdy5uYW1lXSA9IG5hbWVkRmxvdzsKKyAgICB9CiB9CiAKK1dlYkluc3BlY3Rvci5OYW1lZEZs
b3dDb2xsZWN0aW9uLnByb3RvdHlwZSA9IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5OYW1lZEZsb3d9IG5hbWVkRmxvdworICAgICAqLworICAgIF9hcHBlbmROYW1lZEZs
b3c6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAgICB7CisgICAgICAgIHRoaXMubmFtZWRGbG93TWFw
W25hbWVkRmxvdy5uYW1lXSA9IG5hbWVkRmxvdzsKKyAgICB9LAorCisgICAgLyoqCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGZsb3dOYW1lCisgICAgICovCisgICAgX3JlbW92ZU5hbWVkRmxvdzog
ZnVuY3Rpb24oZmxvd05hbWUpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5uYW1lZEZsb3dN
YXBbZmxvd05hbWVdOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30g
Zmxvd05hbWUKKyAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuTmFtZWRGbG93fQorICAgICAq
LworICAgIGZsb3dCeU5hbWU6IGZ1bmN0aW9uKGZsb3dOYW1lKQorICAgIHsKKyAgICAgICAgdmFy
IG5hbWVkRmxvdyA9IHRoaXMubmFtZWRGbG93TWFwW2Zsb3dOYW1lXTsKKworICAgICAgICBpZiAo
IW5hbWVkRmxvdykKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICByZXR1cm4gbmFt
ZWRGbG93OworICAgIH0KK30KIC8qKgogICogQHR5cGUge1dlYkluc3BlY3Rvci5DU1NTdHlsZU1v
ZGVsfQogICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFt
ZWRGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZs
b3dUaHJlYWQuY3BwCmluZGV4IDRlODNjY2EuLjc0NjFmNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgiCiAKICNpbmNsdWRlICJGbG93
VGhyZWFkQ29udHJvbGxlci5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNp
bmNsdWRlICJXZWJLaXROYW1lZEZsb3cuaCIKQEAgLTM1Nyw2ICszNTgsNyBAQCBjb25zdCBBdG9t
aWNTdHJpbmcmIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6Zmxvd1RocmVhZE5hbWUoKSBjb25zdAog
dm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRlRXZl
bnQoKQogewogICAgIFJlbmRlckZsb3dUaHJlYWQ6OmRpc3BhdGNoUmVnaW9uTGF5b3V0VXBkYXRl
RXZlbnQoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVwZGF0ZVJlZ2lvbkxh
eW91dChkb2N1bWVudCgpLCBtX25hbWVkRmxvdy5nZXQoKSk7CiAKICAgICBpZiAoIW1fcmVnaW9u
TGF5b3V0VXBkYXRlRXZlbnRUaW1lci5pc0FjdGl2ZSgpICYmIG1fbmFtZWRGbG93LT5oYXNFdmVu
dExpc3RlbmVycygpKQogICAgICAgICBtX3JlZ2lvbkxheW91dFVwZGF0ZUV2ZW50VGltZXIuc3Rh
cnRPbmVTaG90KDApOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>