<?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>172312</bug_id>
          
          <creation_ts>2017-05-18 14:15:47 -0700</creation_ts>
          <short_desc>Web Inspector: Should see active Web Sockets when opening Web Inspector</short_desc>
          <delta_ts>2017-06-02 10:54:52 -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</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1310258</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-18 14:15:47 -0700</bug_when>
    <thetext>Summary:
Should see active Web Sockets when opening Web Inspector.

Steps to Reproduce:
1. Open https://www.websocket.org/echo.html
2. Click Connect to create a web socket
3. Inspect the page
  =&gt; Expected to see the open Web Socket connect, but it did not show up

Notes:
- Workaround is to reload the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313954</commentid>
    <comment_count>1</comment_count>
      <attachid>311560</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-30 17:22:41 -0700</bug_when>
    <thetext>Created attachment 311560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313960</commentid>
    <comment_count>2</comment_count>
      <attachid>311560</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-30 17:43:12 -0700</bug_when>
    <thetext>Comment on attachment 311560
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:195
&gt; +HashSet&lt;WebSocket*&gt;&amp; WebSocket::allActiveWebSockets()
&gt; +{
&gt; +    static NeverDestroyed&lt;HashSet&lt;WebSocket*&gt;&gt; activeWebSockets;
&gt; +    return activeWebSockets;
&gt; +}

I think this may need to be threadsafe, since Worker contexts may create these.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.cpp:837
&gt; +unsigned WebSocketChannel::identifier() const
&gt; +{
&gt; +    return m_identifier;
&gt; +}

Lets inline this in the header.

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:664
&gt; +        Document&amp; document = downcast&lt;Document&gt;(*webSocket-&gt;scriptExecutionContext());
&gt; +        if (document.page() != &amp;m_pageAgent-&gt;page())
&gt; +            continue;

You cannot assume the scriptExecutionContext here is a Document. It might be a WorkerGlobalScope since a Worker can create a WebSocket. You will need to is&lt;Document&gt; check first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313988</commentid>
    <comment_count>3</comment_count>
      <attachid>311571</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-30 20:17:10 -0700</bug_when>
    <thetext>Created attachment 311571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314089</commentid>
    <comment_count>4</comment_count>
      <attachid>311571</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-30 22:29:36 -0700</bug_when>
    <thetext>Comment on attachment 311571
Patch

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

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:165
&gt; +    LockHolder lock(allActiveWebSocketsMutex());
&gt; +
&gt; +    allActiveWebSockets().remove(this);

Its best to scope the lock as finely as possible:

    {
        LockHolder lock(allActiveWebSocketsMutex());
        allActiveWebSockets().remove(this);
    }

Otherwise the lock is held for longer than it needs to be held (e.g. in the other operations in the method like the disconnect).

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:200
&gt; +HashSet&lt;WebSocket*&gt;&amp; WebSocket::allActiveWebSockets()
&gt; +{
&gt; +    static NeverDestroyed&lt;HashSet&lt;WebSocket*&gt;&gt; activeWebSockets;
&gt; +    return activeWebSockets;
&gt; +}

Since this requires the lock to be held when called, a common strategy is to make this function take a LockHolder reference parameter. This ensures, at compile time, that the person calling this function knows they need to be holding a lock, and do call this holding a lock. For example:

   static void buildBaseTextCodecMaps(const std::lock_guard&lt;StaticLock&gt;&amp;)

I&apos;m actually surprised this isn&apos;t done more widely in WebCore. Or maybe I&apos;m missing the pattern used there.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:495
&gt; -EventTargetInterface WebSocket::eventTargetInterface() const
&gt; +ScriptExecutionContext* WebSocket::scriptExecutionContext() const
&gt;  {
&gt; -    return WebSocketEventTargetInterfaceType;
&gt; +    return ActiveDOMObject::scriptExecutionContext();
&gt;  }
&gt;  
&gt; -ScriptExecutionContext* WebSocket::scriptExecutionContext() const
&gt; +EventTargetInterface WebSocket::eventTargetInterface() const
&gt;  {
&gt; -    return ActiveDOMObject::scriptExecutionContext();
&gt; +    return WebSocketEventTargetInterfaceType;
&gt;  }

Lets avoid the churn here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314202</commentid>
    <comment_count>5</comment_count>
      <attachid>311605</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-05-31 10:17:49 -0700</bug_when>
    <thetext>Created attachment 311605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314446</commentid>
    <comment_count>6</comment_count>
      <attachid>311605</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-31 17:03:02 -0700</bug_when>
    <thetext>Comment on attachment 311605
Patch

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

r-, we should be able to write a test for this. Ask me or NVI if you have questions.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.h:37
&gt; +#include &quot;ResourceRequest.h&quot;
&gt; +#include &quot;ResourceResponse.h&quot;

Avoid adding these includes to the header and use forward declarations.

&gt; Source/WebCore/Modules/websockets/WebSocketChannel.h:118
&gt; +    ResourceRequest clientHandshakeRequest() const;

You should be able to make this a `const ResourceRequest&amp;`. I think that will avoid a copy when using this getter. Note the one below this is constructing an handing us a request. The inspector code only expects a const reference as well.

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:679
&gt; +        unsigned identifier = channel-&gt;identifier();
&gt; +        didCreateWebSocket(identifier, webSocket-&gt;url());
&gt; +        willSendWebSocketHandshakeRequest(identifier, channel-&gt;clientHandshakeRequest());
&gt; +        didReceiveWebSocketHandshakeResponse(identifier, channel-&gt;serverHandshakeResponse());

What if this WebSocket has only been initialized but hasn&apos;t received a Handshake response yet?

If the WebSocketHandshake&apos;s Mode is Incomplete, it looks like we haven&apos;t yet received a response. So the serverHandshakeResponse would be completely empty and would eventually come in later, moving the Handshake to either Failed or Connected. I think you can check the WebSocket&apos;s readyState to determine whether or not to call this.

Likewise, since WebSockets are removed from this list in ~WebSocket it looks like we can include a closed WebSocket in this list. In which case we should send a didCloseWebSocket.

&gt; Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js:522
&gt; +        for (let pendingResourceData of this._pendingFunctionCalls)
&gt; +            pendingResourceData();

This has the potential to be time-consuming and UI breaking if its use expands beyond web sockets.

    1. It may handle a lot of messages at the same time
        - this is something that is normally chunked when the frontend processes incoming messages

    2. Any uncaught exception handling these arbitrary messages may break whatever actual message is being handled
        - a try/catch might reduce exposure

However given its very limited use right now, I&apos;m okay with it. I also couldn&apos;t think of reasonably better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314448</commentid>
    <comment_count>7</comment_count>
      <attachid>311605</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-31 17:05:43 -0700</bug_when>
    <thetext>Comment on attachment 311605
Patch

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

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:673
&gt; +        WebSocketChannel* channel = downcast&lt;WebSocketChannel&gt;(webSocket-&gt;channel().get());
&gt; +        if (!channel)

This is a real debug build failure:

    WebCore/inspector/InspectorNetworkAgent.cpp:672:37: note: in instantiation of function template specialization &apos;WTF::downcast&lt;WebCore::WebSocketChannel, WebCore::ThreadableWebSocketChannel&gt;&apos; requested here
        WebSocketChannel* channel = downcast&lt;WebSocketChannel&gt;(webSocket-&gt;channel().get());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314493</commentid>
    <comment_count>8</comment_count>
      <attachid>311605</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-05-31 18:58:11 -0700</bug_when>
    <thetext>Comment on attachment 311605
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js:213
&gt; +        if (!WebInspector.frameResourceManager.mainFrame) {

Shouldn&apos;t this just be `this._mainFrame`.

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/FrameResourceManager.js:522
&gt;&gt; +            pendingResourceData();
&gt; 
&gt; This has the potential to be time-consuming and UI breaking if its use expands beyond web sockets.
&gt; 
&gt;     1. It may handle a lot of messages at the same time
&gt;         - this is something that is normally chunked when the frontend processes incoming messages
&gt; 
&gt;     2. Any uncaught exception handling these arbitrary messages may break whatever actual message is being handled
&gt;         - a try/catch might reduce exposure
&gt; 
&gt; However given its very limited use right now, I&apos;m okay with it. I also couldn&apos;t think of reasonably better solution.

I think we have a better solution.

Just call PageAgent.getResourceTree earlier (e.g. right after PageAgent.enable) instead of waiting till later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314807</commentid>
    <comment_count>9</comment_count>
      <attachid>311753</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-01 13:44:54 -0700</bug_when>
    <thetext>Created attachment 311753
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314823</commentid>
    <comment_count>10</comment_count>
      <attachid>311753</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-06-01 14:10:45 -0700</bug_when>
    <thetext>Comment on attachment 311753
Patch

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

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:681
&gt; +        if (channel-&gt;handshakeMode() != WebSocketHandshake::Connected)
&gt; +            didReceiveWebSocketHandshakeResponse(identifier, channel-&gt;serverHandshakeResponse());

This condition doesn&apos;t make sense. If the mode is Incomplete won&apos;t this be empty?

It seems like this should be:

    if (webSocket-&gt;readyState() != CONNECTING)

In which case you wouldn&apos;t need to expose the handshakeMode. But I didn&apos;t look deeply, maybe the handshake mode is more accurate.

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:684
&gt; +        if (webSocket-&gt;readyState() == WebSocket::CLOSED)
&gt; +            didCloseWebSocket(identifier);

We should extend your test below to cover this.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:11
&gt; +const url = &quot;ws://127.0.0.1:8880/websocket/tests/hybi/inspector/before-load&quot;;
&gt; +let webSocket = new WebSocket(url);
&gt; +webSocket.addEventListener(&quot;open&quot;, (event) =&gt; {
&gt; +    // Only run the tests once the websocket has connected.
&gt; +    runTest();
&gt; +});

Lets add a test for two web sockets.

    (1) one that is open and connected (window.webSocketConnected)
    (2) one that is closed but still alive (window.webSocketClosed)

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:21
&gt; +            InspectorTest.evaluateInPage(&quot;webSocket.close()&quot;);

Why are we doing this?

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:25
&gt; +                InspectorTest.pass(`WebSocket resource exists for url &quot;${url}&quot;`);

You should confirm that this is a WebInspector.WebSocket and that its request/response data has headers etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314862</commentid>
    <comment_count>11</comment_count>
      <attachid>311753</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-01 16:05:57 -0700</bug_when>
    <thetext>Comment on attachment 311753
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:681
&gt;&gt; +            didReceiveWebSocketHandshakeResponse(identifier, channel-&gt;serverHandshakeResponse());
&gt; 
&gt; This condition doesn&apos;t make sense. If the mode is Incomplete won&apos;t this be empty?
&gt; 
&gt; It seems like this should be:
&gt; 
&gt;     if (webSocket-&gt;readyState() != CONNECTING)
&gt; 
&gt; In which case you wouldn&apos;t need to expose the handshakeMode. But I didn&apos;t look deeply, maybe the handshake mode is more accurate.

This was a typo.  It is supposed to be:

if (webSocket-&gt;readyState() == CONNECTING)

The reasoning for this is that `InspectorInstrumentation::didReceiveWebSocketHandshakeResponse` is only called if the WebSocketChannel&apos;s `m_handshake-&gt;mode() == WebSocketHandshake::Connected`.

&gt;&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:21
&gt;&gt; +            InspectorTest.evaluateInPage(&quot;webSocket.close()&quot;);
&gt; 
&gt; Why are we doing this?

I figured that it would be a good idea to close the websocket.  I guess it isn&apos;t necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314891</commentid>
    <comment_count>12</comment_count>
      <attachid>311753</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-01 16:57:49 -0700</bug_when>
    <thetext>Comment on attachment 311753
Patch

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

&gt;&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:684
&gt;&gt; +            didCloseWebSocket(identifier);
&gt; 
&gt; We should extend your test below to cover this.

So I did some digging, and I think that this event will rarely (if ever) be fired.  When the WebSocket closes (or is stopped, although I&apos;m not sure when that happens), it sets its WebSocketChannel to `nullptr`, meaning that even though it will still be in `allActiveWebSockets`, it won&apos;t be able to fire any events as the WebSocketChannel is what holds all the data needed for the events (namely the `requestIdentifier`).  I don&apos;t think we need this event (although it might be a good idea to keep it if there are other scenarios I didn&apos;t discover) or the test for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314893</commentid>
    <comment_count>13</comment_count>
      <attachid>311782</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-01 17:01:43 -0700</bug_when>
    <thetext>Created attachment 311782
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314921</commentid>
    <comment_count>14</comment_count>
      <attachid>311782</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-06-01 18:53:48 -0700</bug_when>
    <thetext>Comment on attachment 311782
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        New tests:
&gt; +         - http/tests/websocket/tests/hybi/inspector/before-load.html

The isn&apos;t the right syntax for a ChangeLog. It should be:

    Test: http/tests/websocket/tests/hybi/inspector/before-load.html

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:155
&gt; +

Style: remove this unnecessary empty line.

&gt; Source/WebCore/Modules/websockets/WebSocket.h:88
&gt; +    const RefPtr&lt;ThreadableWebSocketChannel&gt; channel() const;

I don&apos;t think we normally use `const RefPtr`, that doesn&apos;t really add any value over `RefPtr`.

&gt; Source/WebCore/inspector/InspectorNetworkAgent.cpp:684
&gt; +        if (webSocket-&gt;readyState() == WebSocket::CLOSED)
&gt; +            didCloseWebSocket(identifier);

Based on your last comments it sounds like you may be able to ASSERT that this is not the case, or just leave this in.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:41
&gt; +        test(resolve, reject) {

Can we also assert that the number of WebSocketResource instances is 1:

    let webSocketResources = WebInspector.frameResourceManager.mainFrame.resourceCollection.resourceCollectionForType(WebInspector.Resource.Type.WebSocket);
    InspectorTest.expectEqual(webSocketResources.items.size, 1, &quot;Main frame should have 1 WebSocketResource.&quot;);

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:53
&gt; +            logReadyState(webSocketResource.readyState);

Style: Just log String(webSocketResource.readyState).
Style: Lets shorten the Symbol descriptions from &quot;web-socket-ready-state-foo&quot; to just &quot;foo&quot;.
Style: We normally phrase expectation messages as &quot;Foo should be bar.&quot; sentences. See other tests for examples.

&gt; LayoutTests/http/tests/websocket/tests/hybi/inspector/before-load.html:63
&gt; +&lt;body onload=&quot;testRunner.waitUntilDone();&quot;&gt;

Style: I&apos;d prefer this be broken out into a function above. Its super easy to miss here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314927</commentid>
    <comment_count>15</comment_count>
      <attachid>311794</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-01 19:06:46 -0700</bug_when>
    <thetext>Created attachment 311794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314934</commentid>
    <comment_count>16</comment_count>
      <attachid>311794</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-01 19:44:49 -0700</bug_when>
    <thetext>Comment on attachment 311794
Patch

Clearing flags on attachment: 311794

Committed r217691: &lt;http://trac.webkit.org/changeset/217691&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314935</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-01 19:44:50 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314942</commentid>
    <comment_count>18</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-06-01 20:51:06 -0700</bug_when>
    <thetext>(In reply to WebKit Commit Bot from comment #16)
&gt; Comment on attachment 311794 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 311794
&gt; 
&gt; Committed r217691: &lt;http://trac.webkit.org/changeset/217691&gt;

This change broke the Windows build:
https://build.webkit.org/builders/Apple%20Win%20Release%20%28Build%29/builds/1934</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314952</commentid>
    <comment_count>19</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2017-06-01 21:17:19 -0700</bug_when>
    <thetext>Reverted r217691 for reason:

This change broke the Windows build.

Committed r217694: &lt;http://trac.webkit.org/changeset/217694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314955</commentid>
    <comment_count>20</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2017-06-01 21:28:36 -0700</bug_when>
    <thetext>&gt; Committed r217694: &lt;http://trac.webkit.org/changeset/217694&gt;

I landed a Windows build fix r217693..., but since this got rolled out, just reland it tomorrow (put a patch up to make sure Windows EWS is okay with it this time). Always check a Red EWS, even if no comment was added to the bugzilla.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315053</commentid>
    <comment_count>21</comment_count>
      <attachid>311828</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-06-02 08:48:08 -0700</bug_when>
    <thetext>Created attachment 311828
Patch [After Rollout]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315117</commentid>
    <comment_count>22</comment_count>
      <attachid>311828</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-02 10:54:51 -0700</bug_when>
    <thetext>Comment on attachment 311828
Patch [After Rollout]

Clearing flags on attachment: 311828

Committed r217721: &lt;http://trac.webkit.org/changeset/217721&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315118</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-02 10:54:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311560</attachid>
            <date>2017-05-30 17:22:41 -0700</date>
            <delta_ts>2017-05-30 20:17:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172312-20170530172240.patch</filename>
            <type>text/plain</type>
            <size>15070</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZjMyNGU4MDNhMjcyY2QyZWYyMjQ3ZGMwZTlkY2Q5Mjc3NWRkNGUyLi5l
YjgyZDc3Mjg1NTBlNmRmNWJkNmNkZTkzMjkwNmRiYzU4NWVjYjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMTctMDUtMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRz
IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
fldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjaGFubmVsKToKKyAgICAgICAg
QWRkIGEgc3RhdGljIHNldCBvZiBhbGwgV2ViU29ja2V0IG9iamVjdHMgYW5kIHByb3ZpZGUgZ2V0
dGVycyB0byBhY2Nlc3Mgd2ViIHNvY2tldCBtZXRhZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UpOgorICAgICAgICBNb3ZlIGZ1bmN0aW9uIGxv
Y2F0aW9uIHRvIG1hdGNoIG9yZGVyIGluIGhlYWRlci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbGll
bnRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgUHJvdmlkZSBnZXR0ZXJzIHRvIGFj
Y2VzcyB3ZWIgc29ja2V0IG1ldGFkYXRhLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmVuYWJsZSk6CisgICAgICAgIExvb3BzIG92ZXIgdGhlIHN0YXRpYyBzZXQgb2YgYWxsIFdl
YlNvY2tldCBvYmplY3RzIGFuZCBzZW5kcyBldmVudHMgZm9yIGVhY2ggdG8gdGhlIGZyb250ZW5k
LgorCiAyMDE3LTA1LTMwICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbQ3JlZGVudGlhbE1hbmFnZW1lbnRdIEluY29ycG9yYXRlIElETCB1cGRhdGVzIGZyb20gbGF0
ZXN0IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGEyNDBjYjM4NjMxMTJiODk0MzY0
M2MzMDM5OWM5Y2QwOTdjZjc1YjYuLjYyYzU4NmJkNDQzNjE5YWNhOWU4M2Q2MTM1MzA5YTgwNjM5
MTA1ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA1
LTMwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTaG91bGQgc2VlIGFjdGl2ZSBXZWIgU29ja2V0cyB3aGVuIG9wZW5pbmcgV2ViIElu
c3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcyMzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5
cGUud2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUud2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIENyZWF0ZSBhIGxpc3Qgb2YgcGVuZGluZyByZXNvdXJj
ZSBldmVudHMgdGhhdCBjYW4gYmUgcXVldWVkIGlmIHRoZSBtYWluIGZyYW1lIGhhcyBub3QgbG9h
ZGVkLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90
eXBlLl9zZXRNYWluRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VN
YW5hZ2VyLnByb3RvdHlwZS5mcmFtZURpZE5hdmlnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9y
VGFyZ2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90
b3R5cGUuX3Byb2Nlc3NNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKToKKyAgICAgICAgVW5p
Znkgc2l0ZXMgd2hlcmUgdGhlIF9tYWluRnJhbWUgaXMgc2V0IHRvIGVuc3VyZSB0aGF0IGFueSB0
aW1lIGl0IGNoYW5nZXMgYW55IHBlbmRpbmcKKyAgICAgICAgcmVzb3VyY2UgZXZlbnRzIGFyZSBw
cm9jZXNzZWQuCisKIDIwMTctMDUtMzAgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlA
c29ueS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViIEluc3BlY3RvcjogQWRkIERPTSBicmVha3Bv
aW50IGltYWdlIGZvciBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCmluZGV4IDA4ZTEyYTE2MDFjOGEyNGU2YWI2YzIyNDQ2MjdkMTBhZGM0
ZjI5MDIuLjU1MjE2NWU2ZTU5MTI4OGMzYTA5NzA2M2I1ODRkMjcxNTAxMDFhODcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01OCw2
ICs1OCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CkBAIC0xNTEsMTAgKzE1MiwxMyBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9leHRlbnNpb25zKGVtcHR5U3RyaW5nKCkpCiAg
ICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0OjpyZXN1bWVUaW1lckZpcmVkKQog
eworICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMoKS5hZGQodGhpcyk7CiB9CiAKIFdlYlNvY2tldDo6
fldlYlNvY2tldCgpCiB7CisgICAgYWxsQWN0aXZlV2ViU29ja2V0cygpLnJlbW92ZSh0aGlzKTsK
KwogICAgIGlmIChtX2NoYW5uZWwpCiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgpOwog
fQpAQCAtMTg0LDYgKzE4OCwxMiBAQCBFeGNlcHRpb25PcjxSZWY8V2ViU29ja2V0Pj4gV2ViU29j
a2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgIHJldHVy
biBjcmVhdGUoY29udGV4dCwgdXJsLCBWZWN0b3I8U3RyaW5nPiB7IDEsIHByb3RvY29sIH0pOwog
fQogCitIYXNoU2V0PFdlYlNvY2tldCo+JiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMo
KQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYlNvY2tldCo+PiBhY3Rp
dmVXZWJTb2NrZXRzOworICAgIHJldHVybiBhY3RpdmVXZWJTb2NrZXRzOworfQorCiBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAg
cmV0dXJuIGNvbm5lY3QodXJsLCBWZWN0b3I8U3RyaW5nPiB7IH0pOwpAQCAtNDA3LDYgKzQxNywx
MSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5z
aWduZWQgc2hvcnQ+IG9wdGlvbmFsQ29kZSwgYwogICAgIHJldHVybiB7IH07CiB9CiAKK2NvbnN0
IFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gV2ViU29ja2V0OjpjaGFubmVsKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9jaGFubmVsOworfQorCiBjb25zdCBVUkwmIFdlYlNvY2tl
dDo6dXJsKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV91cmw7CkBAIC00NTgsMTQgKzQ3MywxNCBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBXZWJTb2NrZXQ6OnNldEJpbmFyeVR5cGUoY29uc3QgU3RyaW5n
JiBiaW5hcnlUeXBlKQogICAgIHJldHVybiBFeGNlcHRpb24geyBTWU5UQVhfRVJSIH07CiB9CiAK
LUV2ZW50VGFyZ2V0SW50ZXJmYWNlIFdlYlNvY2tldDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBj
b25zdAorU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gV2ViU29ja2V0RXZlbnRUYXJnZXRJbnRlcmZh
Y2VUeXBlOworICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKIH0KIAotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogV2ViU29ja2V0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKK0V2ZW50VGFyZ2V0SW50ZXJmYWNlIFdlYlNvY2tldDo6ZXZl
bnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogewotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICByZXR1cm4gV2ViU29ja2V0RXZlbnRUYXJn
ZXRJbnRlcmZhY2VUeXBlOwogfQogCiB2b2lkIFdlYlNvY2tldDo6Y29udGV4dERlc3Ryb3llZCgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKaW5kZXgg
N2Q0M2YwNDM2MGZjM2I5YWNjMGJiZmI1YTU5MjQ1ZDY5YjgwOWFjMC4uYmRjMjQzODVhMzQxMDk2
YjA2MzhkMTIyOWMxMTU5MzcwOTc4YTViMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlVSTC5o
IgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvRGVx
dWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IEFycmF5QnVmZmVyOwpAQCAtNjIsNiArNjMsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEV4Y2Vw
dGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzKTsKICAgICB2
aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAorICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNvY2tldCo+JiBh
bGxBY3RpdmVXZWJTb2NrZXRzKCk7CisKICAgICBlbnVtIFN0YXRlIHsKICAgICAgICAgQ09OTkVD
VElORyA9IDAsCiAgICAgICAgIE9QRU4gPSAxLApAQCAtODAsNiArODMsOCBAQCBwdWJsaWM6CiAK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9zZShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0
PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKKyAgICBjb25zdCBSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw+IGNoYW5uZWwoKSBjb25zdDsKKwogICAgIGNvbnN0IFVSTCYg
dXJsKCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OwogICAgIHVuc2lnbmVk
IGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CkBAIC05MCw2ICs5NSw4IEBAIHB1YmxpYzoKICAgICBT
dHJpbmcgYmluYXJ5VHlwZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmFy
eVR5cGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisKICAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKQEAgLTEwOCw3ICsxMTUsNiBA
QCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBm
aW5hbDsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkg
Y29uc3QgZmluYWw7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFs
IHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IGRlcmVmKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAppbmRleCA2MWQzY2NkZDcxNWRmODYzOTA0OTVjYjNkZWRmMmE4MDdlNjEy
ZDIyLi5hN2I1NTM4YzgyYmE2ZTdkZGE1ZjBmNWQ1NTYzYTM0YzJkNWQ4NTE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCkBAIC04MzEsNiArODMxLDIxIEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZEZyYW1l
KFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBjaGFyKiBkYXRhCiAgICAgbV9o
YW5kbGUtPnNlbmREYXRhKGZyYW1lRGF0YS5kYXRhKCksIGZyYW1lRGF0YS5zaXplKCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAordW5zaWduZWQgV2ViU29ja2V0Q2hhbm5lbDo6
aWRlbnRpZmllcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faWRlbnRpZmllcjsKK30KKworUmVz
b3VyY2VSZXF1ZXN0IFdlYlNvY2tldENoYW5uZWw6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBj
b25zdAoreworICAgIHJldHVybiBtX2hhbmRzaGFrZS0+Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgp
OworfQorCitjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBXZWJTb2NrZXRDaGFubmVsOjpzZXJ2ZXJI
YW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZHNoYWtlLT5zZXJ2
ZXJIYW5kc2hha2VSZXNwb25zZSgpOworfQorCiB9ICAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCmluZGV4IDAzNjU4YzYyZjFjYzNk
MWVjODdhZjJhODBiZTI4YzVkMjk0ZjhhOGUuLmVkMGRmM2YxOGM4ZWM0NzUwYjlkZjM1NmI0MmZk
ZjhlOWZkMDQyNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuaApAQCAtMzMsNiArMzMsOCBAQAogI2lmIEVOQUJMRShXRUJf
U09DS0VUUykKIAogI2luY2x1ZGUgIkZpbGVSZWFkZXJMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5j
bHVkZSAiU29ja2V0U3RyZWFtSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJUaW1lci5oIgpAQCAtMTEyLDYgKzExNCwxMCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkaWRGYWlsKGludCBlcnJvckNvZGUpIG92ZXJyaWRlOwogCisgICAgdW5zaWduZWQgaWRlbnRp
ZmllcigpIGNvbnN0OworICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5kc2hha2VSZXF1ZXN0
KCkgY29uc3Q7CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVz
cG9uc2UoKSBjb25zdDsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46
OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cAppbmRleCA5OTI3MWVjY2EzYTgwYjY4NDAxZTVlYWM2NmJhMDgzNDljZmU0MmYzLi5jZDY1MDE1
ZmM3ZTE2M2MzNWRhOTA1ZDFkZjRhYTgyOGU2MzUwZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNjAsNiArNjAsOCBA
QAogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlckNsaWVudC5oIgogI2luY2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgor
I2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5o
IgogI2luY2x1ZGUgPGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg+CiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oPgpAQCAtNjU1LDYgKzY1NywyMSBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBtX2VuYWJsZWQgPSB0
cnVlOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JOZXR3b3JrQWdlbnQo
dGhpcyk7CisKKyAgICBmb3IgKFdlYlNvY2tldCogd2ViU29ja2V0IDogV2ViU29ja2V0OjphbGxB
Y3RpdmVXZWJTb2NrZXRzKCkpIHsKKyAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KCp3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAg
ICAgIGlmIChkb2N1bWVudC5wYWdlKCkgIT0gJm1fcGFnZUFnZW50LT5wYWdlKCkpCisgICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICBXZWJTb2NrZXRDaGFubmVsKiBjaGFubmVsID0gZG93
bmNhc3Q8V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpOworICAg
ICAgICBpZiAoIWNoYW5uZWwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyID0gY2hhbm5lbC0+aWRlbnRpZmllcigpOworICAgICAgICBkaWRDcmVh
dGVXZWJTb2NrZXQoaWRlbnRpZmllciwgd2ViU29ja2V0LT51cmwoKSk7CisgICAgICAgIHdpbGxT
ZW5kV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdChpZGVudGlmaWVyLCBjaGFubmVsLT5jbGllbnRI
YW5kc2hha2VSZXF1ZXN0KCkpOworICAgICAgICBkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UoaWRlbnRpZmllciwgY2hhbm5lbC0+c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSk7
CisgICAgfQogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShFcnJvclN0
cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCmluZGV4
IDc4YjMwOTUxNzMzNWQ0NjQ0NzY2M2FmNWU2MGFjNjAxOWY3MGY1ZDcuLjQ1ZGVhMDVlNmNkZmNj
ZTczYWJlMWE2MTU0ZGU4Y2JjMjY0ZjZiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1l
UmVzb3VyY2VNYW5hZ2VyLmpzCkBAIC01MCw2ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJl
c291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5z
cGVjCiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAgPSBuZXcgTWFw
OwogICAgICAgICB0aGlzLl9vcnBoYW5lZFJlc291cmNlcyA9IG5ldyBNYXA7CiAgICAgICAgIHRo
aXMuX3dlYlNvY2tldElkZW50aWZpZXJUb1VSTCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3Bl
bmRpbmdSZXNvdXJjZURhdGEgPSBbXTsKIAogICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lICE9
PSBvbGRNYWluRnJhbWUpCiAgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2Uob2xk
TWFpbkZyYW1lKTsKQEAgLTEyNyw3ICsxMjgsOCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwog
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGZyYW1lLnBhcmVudEZyYW1lKQogICAg
ICAgICAgICAgICAgIGZyYW1lLnBhcmVudEZyYW1lLnJlbW92ZUNoaWxkRnJhbWUoZnJhbWUpOwot
ICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0gZnJhbWU7CisKKyAgICAgICAgICAgIHRoaXMu
X3NldE1haW5GcmFtZShmcmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhpcy5fbWFp
bkZyYW1lICE9PSBvbGRNYWluRnJhbWUpCkBAIC0yMDgsNiArMjEwLDE0IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVu
ZHMgV2ViSW5zcGVjCiAKICAgICB3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QocmVx
dWVzdElkLCB0aW1lc3RhbXAsIHdhbGx0aW1lLCByZXF1ZXN0KQogICAgIHsKKyAgICAgICAgaWYg
KCFXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKSB7CisgICAgICAg
ICAgICB0aGlzLl9wZW5kaW5nUmVzb3VyY2VEYXRhLnB1c2goeworICAgICAgICAgICAgICAgIGZ1
bmN0aW9uOiAid2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0IiwKKyAgICAgICAgICAg
ICAgICBhcmd1bWVudHMsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCiAgICAgICAgIGxldCB1cmwgPSB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9V
UkwuZ2V0KHJlcXVlc3RJZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CiAgICAgICAg
IGlmICghdXJsKQpAQCAtMjM4LDYgKzI0OCwxNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJj
ZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwog
CiAgICAgd2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVz
dGFtcCwgcmVzcG9uc2UpCiAgICAgeworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5mcmFtZVJl
c291cmNlTWFuYWdlci5tYWluRnJhbWUpIHsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdSZXNv
dXJjZURhdGEucHVzaCh7CisgICAgICAgICAgICAgICAgZnVuY3Rpb246ICJ3ZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZVJlY2VpdmVkIiwKKyAgICAgICAgICAgICAgICBhcmd1bWVudHMsCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGxl
dCByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50aWZpZXJNYXAuZ2V0KHJlcXVl
c3RJZCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKICAgICAgICAgaWYgKCFy
ZXNvdXJjZSkKQEAgLTI0NiwxMiArMjY0LDEzIEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNl
TWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjCiAg
ICAgICAgIHJlc291cmNlLnJlYWR5U3RhdGUgPSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3Vy
Y2UuUmVhZHlTdGF0ZS5PcGVuOwogCiAgICAgICAgIGxldCBlbGFwc2VkVGltZSA9IFdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1lKHRpbWVzdGFtcCk7Ci0gICAg
ICAgIHJlc291cmNlLm1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKIAogICAgICAgICAvLyBG
SVhNRTogPHdlYmtpdC5vcmcvYi8xNjkxNjY+IFdlYiBJbnNwZWN0b3I6IFdlYlNvY2tldHM6IElt
cGxlbWVudCB0aW1pbmcgaW5mb3JtYXRpb24KICAgICAgICAgbGV0IHJlc3BvbnNlVGltaW5nID0g
cmVzcG9uc2UudGltaW5nIHx8IG51bGw7CiAKICAgICAgICAgcmVzb3VyY2UudXBkYXRlRm9yUmVz
cG9uc2UocmVzb3VyY2UudXJsLCByZXNvdXJjZS5taW1lVHlwZSwgcmVzb3VyY2UudHlwZSwgcmVz
cG9uc2UuaGVhZGVycywgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5zdGF0dXNUZXh0LCBlbGFw
c2VkVGltZSwgcmVzcG9uc2VUaW1pbmcpOworCisgICAgICAgIHJlc291cmNlLm1hcmtBc0Zpbmlz
aGVkKGVsYXBzZWRUaW1lKTsKICAgICB9CiAKICAgICB3ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKHJl
cXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKQEAgLTUwMSw2ICs1MjAsMTYgQEAgV2ViSW5z
cGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIg
ZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIC8vIFByaXZhdGUKIAorICAgIF9zZXRNYWluRnJhbWUo
ZnJhbWUpCisgICAgeworICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSBmcmFtZTsKKworICAgICAg
ICBmb3IgKGxldCBwZW5kaW5nUmVzb3VyY2VEYXRhIG9mIHRoaXMuX3BlbmRpbmdSZXNvdXJjZURh
dGEpCisgICAgICAgICAgICB0aGlzW3BlbmRpbmdSZXNvdXJjZURhdGEuZnVuY3Rpb25dLmFwcGx5
KHRoaXMsIHBlbmRpbmdSZXNvdXJjZURhdGEuYXJndW1lbnRzKTsKKworICAgICAgICB0aGlzLl9w
ZW5kaW5nUmVzb3VyY2VEYXRhID0gW107CisgICAgfQorCiAgICAgX2FkZE5ld1Jlc291cmNlVG9G
cmFtZU9yVGFyZ2V0KHJlcXVlc3RJZGVudGlmaWVyLCBmcmFtZUlkZW50aWZpZXIsIGxvYWRlcklk
ZW50aWZpZXIsIHVybCwgdHlwZSwgcmVxdWVzdE1ldGhvZCwgcmVxdWVzdEhlYWRlcnMsIHJlcXVl
c3REYXRhLCBlbGFwc2VkVGltZSwgZnJhbWVOYW1lLCBmcmFtZVNlY3VyaXR5T3JpZ2luLCBpbml0
aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3Rh
bXAsIHRhcmdldElkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3dhaXRp
bmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKTsKQEAgLTUzMyw3ICs1NjIsNyBAQCBX
ZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFu
YWdlciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBh
IG1haW4gZnJhbWUsIGFzc3VtZSB0aGlzIGlzIGl0LiBUaGlzIGNhbiBjaGFuZ2UgbGF0ZXIgaW4K
ICAgICAgICAgICAgIC8vIGZyYW1lRGlkTmF2aWdhdGUgd2hlbiB0aGUgcGFyZW50IGZyYW1lIGlz
IGtub3duLgogICAgICAgICAgICAgaWYgKCF0aGlzLl9tYWluRnJhbWUpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLl9tYWluRnJhbWUgPSBmcmFtZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRN
YWluRnJhbWUoZnJhbWUpOwogICAgICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5n
ZShudWxsKTsKICAgICAgICAgICAgIH0KIApAQCAtNjM3LDcgKzY2Niw3IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVu
ZHMgV2ViSW5zcGVjCiAKICAgICAgICAgdmFyIG9sZE1haW5GcmFtZSA9IHRoaXMuX21haW5GcmFt
ZTsKIAotICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSB0aGlzLl9hZGRGcmFtZVRyZWVGcm9tRnJh
bWVSZXNvdXJjZVRyZWVQYXlsb2FkKG1haW5GcmFtZVBheWxvYWQsIHRydWUpOworICAgICAgICB0
aGlzLl9zZXRNYWluRnJhbWUodGhpcy5fYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3VyY2VUcmVl
UGF5bG9hZChtYWluRnJhbWVQYXlsb2FkLCB0cnVlKSk7CiAKICAgICAgICAgaWYgKHRoaXMuX21h
aW5GcmFtZSAhPT0gb2xkTWFpbkZyYW1lKQogICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lRGlk
Q2hhbmdlKG9sZE1haW5GcmFtZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311571</attachid>
            <date>2017-05-30 20:17:10 -0700</date>
            <delta_ts>2017-05-31 10:17:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172312-20170530201710.patch</filename>
            <type>text/plain</type>
            <size>15629</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZjMyNGU4MDNhMjcyY2QyZWYyMjQ3ZGMwZTlkY2Q5Mjc3NWRkNGUyLi42
Mjc3ZmUyNDVmMjNhNWIxZmM3YmQ2YmE5NmM4ZjIyZDkxNDM0MWE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzQgQEAKKzIwMTctMDUtMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRz
IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
fldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
TXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjaGFubmVsKToKKyAgICAgICAg
QWRkIGEgc3RhdGljIHNldCBvZiBhbGwgV2ViU29ja2V0IG9iamVjdHMgYW5kIHByb3ZpZGUgZ2V0
dGVycyB0byBhY2Nlc3Mgd2ViIHNvY2tldCBtZXRhZGF0YS4KKworICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UpOgorICAgICAgICBNb3ZlIGZ1bmN0aW9uIGxv
Y2F0aW9uIHRvIG1hdGNoIG9yZGVyIGluIGhlYWRlci4KKworICAgICAgICAqIE1vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5l
bDo6aWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpjbGll
bnRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgUHJvdmlkZSBnZXR0ZXJzIHRvIGFj
Y2VzcyB3ZWIgc29ja2V0IG1ldGFkYXRhLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmVuYWJsZSk6CisgICAgICAgIExvb3BzIG92ZXIgdGhlIHN0YXRpYyBzZXQgb2YgYWxsIFdl
YlNvY2tldCBvYmplY3RzIGFuZCBzZW5kcyBldmVudHMgZm9yIGVhY2ggdG8gdGhlIGZyb250ZW5k
LgorCiAyMDE3LTA1LTMwICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbQ3JlZGVudGlhbE1hbmFnZW1lbnRdIEluY29ycG9yYXRlIElETCB1cGRhdGVzIGZyb20gbGF0
ZXN0IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGEyNDBjYjM4NjMxMTJiODk0MzY0
M2MzMDM5OWM5Y2QwOTdjZjc1YjYuLjhlOWFlYmUyMjM3YzBkMjE3NmM5NmZiOGQwYmQyNDM5NjA2
ZjNjMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA1
LTMwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBTaG91bGQgc2VlIGFjdGl2ZSBXZWIgU29ja2V0cyB3aGVuIG9wZW5pbmcgV2ViIElu
c3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcyMzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5
cGUud2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUud2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIENyZWF0ZSBhIGxpc3Qgb2YgcGVuZGluZyByZXNvdXJj
ZSBldmVudHMgdGhhdCBjYW4gYmUgcXVldWVkIGlmIHRoZSBtYWluIGZyYW1lIGhhcyBub3QgbG9h
ZGVkLgorCisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90
eXBlLl9zZXRNYWluRnJhbWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VN
YW5hZ2VyLnByb3RvdHlwZS5mcmFtZURpZE5hdmlnYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuX2FkZE5ld1Jlc291cmNlVG9GcmFtZU9y
VGFyZ2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90
b3R5cGUuX3Byb2Nlc3NNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKToKKyAgICAgICAgVW5p
Znkgc2l0ZXMgd2hlcmUgdGhlIG1haW4gZnJhbWUgaXMgc2V0IHRvIGVuc3VyZSB0aGF0IGFueSB0
aW1lIGl0IGNoYW5nZXMgYW55IHBlbmRpbmcKKyAgICAgICAgcmVzb3VyY2UgZXZlbnRzIGFyZSBw
cm9jZXNzZWQuCisKIDIwMTctMDUtMzAgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlA
c29ueS5jb20+CiAKICAgICAgICAgW0dUS10gV2ViIEluc3BlY3RvcjogQWRkIERPTSBicmVha3Bv
aW50IGltYWdlIGZvciBHVEsrCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuY3BwCmluZGV4IDA4ZTEyYTE2MDFjOGEyNGU2YWI2YzIyNDQ2MjdkMTBhZGM0
ZjI5MDIuLjdkNjJlMGMwZWZiYjNjNTM5ZTMwOGI5YWQ5Nzg4NGEyNGEyOTk3ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCkBAIC01OCw2
ICs1OCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CkBAIC0xNTEsMTAgKzE1MiwxOCBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9leHRlbnNpb25zKGVtcHR5U3RyaW5nKCkpCiAg
ICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0OjpyZXN1bWVUaW1lckZpcmVkKQog
eworCisgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKKwor
ICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMoKS5hZGQodGhpcyk7CiB9CiAKIFdlYlNvY2tldDo6fldl
YlNvY2tldCgpCiB7CisgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRl
eCgpKTsKKworICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMoKS5yZW1vdmUodGhpcyk7CisKICAgICBp
ZiAobV9jaGFubmVsKQogICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KQEAgLTE4
NCw2ICsxOTMsMTggQEAgRXhjZXB0aW9uT3I8UmVmPFdlYlNvY2tldD4+IFdlYlNvY2tldDo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICByZXR1cm4gY3JlYXRl
KGNvbnRleHQsIHVybCwgVmVjdG9yPFN0cmluZz4geyAxLCBwcm90b2NvbCB9KTsKIH0KIAorSGFz
aFNldDxXZWJTb2NrZXQqPiYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJTb2NrZXQqPj4gYWN0aXZlV2ViU29j
a2V0czsKKyAgICByZXR1cm4gYWN0aXZlV2ViU29ja2V0czsKK30KKworU3RhdGljTG9jayYgV2Vi
U29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKQoreworICAgIHN0YXRpYyBTdGF0aWNM
b2NrIG11dGV4OworICAgIHJldHVybiBtdXRleDsKK30KKwogRXhjZXB0aW9uT3I8dm9pZD4gV2Vi
U29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIHJldHVybiBjb25uZWN0
KHVybCwgVmVjdG9yPFN0cmluZz4geyB9KTsKQEAgLTQwNyw2ICs0MjgsMTEgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gV2ViU29ja2V0OjpjbG9zZShzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkIHNob3J0PiBv
cHRpb25hbENvZGUsIGMKICAgICByZXR1cm4geyB9OwogfQogCitjb25zdCBSZWZQdHI8VGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldDo6Y2hhbm5lbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fY2hhbm5lbDsKK30KKwogY29uc3QgVVJMJiBXZWJTb2NrZXQ6OnVybCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIG1fdXJsOwpAQCAtNDU4LDE0ICs0ODQsMTQgQEAgRXhjZXB0aW9uT3I8
dm9pZD4gV2ViU29ja2V0OjpzZXRCaW5hcnlUeXBlKGNvbnN0IFN0cmluZyYgYmluYXJ5VHlwZSkK
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU1lOVEFYX0VSUiB9OwogfQogCi1FdmVudFRhcmdldElu
dGVyZmFjZSBXZWJTb2NrZXQ6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKK1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYlNvY2tldEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKKyAgICBy
ZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiB9CiAKLVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIFdlYlNvY2tldDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0CitFdmVudFRhcmdldEludGVyZmFjZSBXZWJTb2NrZXQ6OmV2ZW50VGFyZ2V0SW50ZXJm
YWNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCk7CisgICAgcmV0dXJuIFdlYlNvY2tldEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlw
ZTsKIH0KIAogdm9pZCBXZWJTb2NrZXQ6OmNvbnRleHREZXN0cm95ZWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDdkNDNmMDQzNjBmYzNi
OWFjYzBiYmZiNWE1OTI0NWQ2OWI4MDlhYzAuLjQ4Mjg5MDkzYzdkODVlNGFmMTg3ZmM4OWFmNmQ3
NWU1YTFiN2RhNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNjIsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
KTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAorICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNv
Y2tldCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKCk7CisgICAgc3RhdGljIFN0YXRpY0xvY2smIGFs
bEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpOworCiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIENP
Tk5FQ1RJTkcgPSAwLAogICAgICAgICBPUEVOID0gMSwKQEAgLTgwLDYgKzg1LDggQEAgcHVibGlj
OgogCiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY2xvc2Uoc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBz
aG9ydD4gY29kZSwgY29uc3QgU3RyaW5nJiByZWFzb24pOwogCisgICAgY29uc3QgUmVmUHRyPFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjaGFubmVsKCkgY29uc3Q7CisKICAgICBjb25zdCBV
UkwmIHVybCgpIGNvbnN0OwogICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICB1bnNp
Z25lZCBidWZmZXJlZEFtb3VudCgpIGNvbnN0OwpAQCAtOTAsNiArOTcsOCBAQCBwdWJsaWM6CiAg
ICAgU3RyaW5nIGJpbmFyeVR5cGUoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRC
aW5hcnlUeXBlKGNvbnN0IFN0cmluZyYpOwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOworCiAgICAgdXNpbmcgUmVmQ291
bnRlZDo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCkBAIC0xMDgsNyArMTE3
LDYgQEAgcHJpdmF0ZToKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29u
c3QgZmluYWw7CiAKICAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IGZpbmFsOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IHJlZigpOyB9CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJl
ZigpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKaW5kZXggNjFkM2NjZGQ3MTVkZjg2MzkwNDk1Y2IzZGVkZjJhODA3
ZTYxMmQyMi4uNDc2ZmNlZjNkNzlmMmU2MjJhM2E1N2ViOTM5MDI0NjIwOTlkYzJkYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsLmNwcApAQCAtODMxLDYgKzgzMSwxNiBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRG
cmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YQogICAg
IG1faGFuZGxlLT5zZW5kRGF0YShmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6ZSgpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKK1Jlc291cmNlUmVxdWVzdCBXZWJTb2Nr
ZXRDaGFubmVsOjpjbGllbnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9oYW5kc2hha2UtPmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKTsKK30KKworY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgV2ViU29ja2V0Q2hhbm5lbDo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBj
b25zdAoreworICAgIHJldHVybiBtX2hhbmRzaGFrZS0+c2VydmVySGFuZHNoYWtlUmVzcG9uc2Uo
KTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUoV0VC
X1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuaAppbmRleCAwMzY1OGM2MmYxY2MzZDFlYzg3YWYyYTgwYmUyOGM1ZDI5
NGY4YThlLi4wMjJlNGE2ZjdhOWUwNTkyNjM1N2RjMDdmN2NkNjE3ZmRjODg3MTIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKICNpbmNsdWRl
ICJGaWxlUmVhZGVyTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0Lmgi
CisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhh
bmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAj
aW5jbHVkZSAiVGltZXIuaCIKQEAgLTExMiw2ICsxMTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQg
ZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChpbnQgZXJyb3JD
b2RlKSBvdmVycmlkZTsKIAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biBtX2lkZW50aWZpZXI7IH0KKyAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVx
dWVzdCgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFr
ZVJlc3BvbnNlKCkgY29uc3Q7CisKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5u
ZWw+OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2Vu
dC5jcHAKaW5kZXggOTkyNzFlY2NhM2E4MGI2ODQwMWU1ZWFjNjZiYTA4MzQ5Y2ZlNDJmMy4uN2Q3
YTFmM2Y2ODQyYjM5MGE0NGYxYzEzYjFmYTE1NmYzNjU5M2IxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTYwLDYgKzYw
LDggQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFi
bGVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQu
aCIKKyNpbmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJh
bWUuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTY3LDYgKzY5LDcgQEAK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVj
dG9yL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3Rh
Y2tGYWN0b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0J1aWxkZXIuaD4KQEAgLTY1NSw2ICs2NTgsMjYgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdl
bnQ6OmVuYWJsZSgpCiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0SW5zcGVjdG9yTmV0d29ya0FnZW50KHRoaXMpOworCisgICAgTG9ja0hvbGRl
ciBsb2NrKFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgZm9y
IChXZWJTb2NrZXQqIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cygp
KSB7CisgICAgICAgIGlmICghaXM8RG9jdW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisgICAgICAgIGlmIChkb2N1bWVudC0+cGFnZSgpICE9ICZtX3BhZ2VBZ2VudC0+
cGFnZSgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5l
bCogY2hhbm5lbCA9IGRvd25jYXN0PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5l
bCgpLmdldCgpKTsKKyAgICAgICAgaWYgKCFjaGFubmVsKQorICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKTsK
KyAgICAgICAgZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHdlYlNvY2tldC0+dXJsKCkp
OworICAgICAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwg
Y2hhbm5lbC0+Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpKTsKKyAgICAgICAgZGlkUmVjZWl2ZVdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIGNoYW5uZWwtPnNlcnZlckhhbmRz
aGFrZVJlc3BvbnNlKCkpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNl
TWFuYWdlci5qcwppbmRleCA3OGIzMDk1MTczMzVkNDY0NDc2NjNhZjVlNjBhYzYwMTlmNzBmNWQ3
Li4zZjg3MjNhMTUwMTcwZDcxNjM5MmE1MjBmNTk4ODdkM2YyYzQzYmZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291
cmNlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcwpAQCAtNTAsNiArNTAsNyBAQCBXZWJJ
bnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdl
ciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlm
aWVyTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMgPSBuZXcg
TWFwOwogICAgICAgICB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwgPSBuZXcgTWFwOwor
ICAgICAgICB0aGlzLl9wZW5kaW5nRnVuY3Rpb25DYWxscyA9IFtdOwogCiAgICAgICAgIGlmICh0
aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKICAgICAgICAgICAgIHRoaXMuX21haW5G
cmFtZURpZENoYW5nZShvbGRNYWluRnJhbWUpOwpAQCAtMTI3LDcgKzEyOCw4IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4
dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoZnJhbWUu
cGFyZW50RnJhbWUpCiAgICAgICAgICAgICAgICAgZnJhbWUucGFyZW50RnJhbWUucmVtb3ZlQ2hp
bGRGcmFtZShmcmFtZSk7Ci0gICAgICAgICAgICB0aGlzLl9tYWluRnJhbWUgPSBmcmFtZTsKKwor
ICAgICAgICAgICAgdGhpcy5fc2V0TWFpbkZyYW1lKGZyYW1lKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKQEAgLTIwOCw2ICsyMTAs
MTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNv
dXJjZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIHdlYlNvY2tldFdpbGxTZW5kSGFu
ZHNoYWtlUmVxdWVzdChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgd2FsbHRpbWUsIHJlcXVlc3QpCiAg
ICAgeworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWlu
RnJhbWUpIHsKKyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdGdW5jdGlvbkNhbGxzLnB1c2godGhp
cy53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QuYmluZCh0aGlzLCAuLi5hcmd1bWVu
dHMpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGxldCB1cmwg
PSB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwuZ2V0KHJlcXVlc3RJZCk7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHVybCk7CiAgICAgICAgIGlmICghdXJsKQpAQCAtMjM4LDYgKzI0NSwx
MSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291
cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAgd2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2VSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCiAgICAgeworICAg
ICAgICBpZiAoIVdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpIHsK
KyAgICAgICAgICAgIHRoaXMuX3BlbmRpbmdGdW5jdGlvbkNhbGxzLnB1c2godGhpcy53ZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkLmJpbmQodGhpcywgLi4uYXJndW1lbnRzKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBsZXQgcmVzb3VyY2UgPSB0
aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFwLmdldChyZXF1ZXN0SWQpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCkBAIC0y
NDYsMTIgKzI1OCwxMyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFz
cyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICByZXNvdXJj
ZS5yZWFkeVN0YXRlID0gV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLlJlYWR5U3RhdGUu
T3BlbjsKIAogICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLmNvbXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwotICAgICAgICByZXNvdXJjZS5t
YXJrQXNGaW5pc2hlZChlbGFwc2VkVGltZSk7CiAKICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQu
b3JnL2IvMTY5MTY2PiBXZWIgSW5zcGVjdG9yOiBXZWJTb2NrZXRzOiBJbXBsZW1lbnQgdGltaW5n
IGluZm9ybWF0aW9uCiAgICAgICAgIGxldCByZXNwb25zZVRpbWluZyA9IHJlc3BvbnNlLnRpbWlu
ZyB8fCBudWxsOwogCiAgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKHJlc291cmNl
LnVybCwgcmVzb3VyY2UubWltZVR5cGUsIHJlc291cmNlLnR5cGUsIHJlc3BvbnNlLmhlYWRlcnMs
IHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJlc3Bv
bnNlVGltaW5nKTsKKworICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZChlbGFwc2VkVGlt
ZSk7CiAgICAgfQogCiAgICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVz
dGFtcCwgcmVzcG9uc2UpCkBAIC01MDEsNiArNTE0LDE2IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJl
c291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5z
cGVjCiAKICAgICAvLyBQcml2YXRlCiAKKyAgICBfc2V0TWFpbkZyYW1lKGZyYW1lKQorICAgIHsK
KyAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0gZnJhbWU7CisKKyAgICAgICAgZm9yIChsZXQgcGVu
ZGluZ1Jlc291cmNlRGF0YSBvZiB0aGlzLl9wZW5kaW5nRnVuY3Rpb25DYWxscykKKyAgICAgICAg
ICAgIHBlbmRpbmdSZXNvdXJjZURhdGEoKTsKKworICAgICAgICB0aGlzLl9wZW5kaW5nRnVuY3Rp
b25DYWxscyA9IFtdOworICAgIH0KKwogICAgIF9hZGROZXdSZXNvdXJjZVRvRnJhbWVPclRhcmdl
dChyZXF1ZXN0SWRlbnRpZmllciwgZnJhbWVJZGVudGlmaWVyLCBsb2FkZXJJZGVudGlmaWVyLCB1
cmwsIHR5cGUsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RIZWFkZXJzLCByZXF1ZXN0RGF0YSwgZWxh
cHNlZFRpbWUsIGZyYW1lTmFtZSwgZnJhbWVTZWN1cml0eU9yaWdpbiwgaW5pdGlhdG9yU291cmNl
Q29kZUxvY2F0aW9uLCBvcmlnaW5hbFJlcXVlc3RXaWxsQmVTZW50VGltZXN0YW1wLCB0YXJnZXRJ
ZCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl93YWl0aW5nRm9yTWFpbkZy
YW1lUmVzb3VyY2VUcmVlUGF5bG9hZCk7CkBAIC01MzMsNyArNTU2LDcgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIgZXh0ZW5k
cyBXZWJJbnNwZWMKICAgICAgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBtYWluIGZyYW1l
LCBhc3N1bWUgdGhpcyBpcyBpdC4gVGhpcyBjYW4gY2hhbmdlIGxhdGVyIGluCiAgICAgICAgICAg
ICAvLyBmcmFtZURpZE5hdmlnYXRlIHdoZW4gdGhlIHBhcmVudCBmcmFtZSBpcyBrbm93bi4KICAg
ICAgICAgICAgIGlmICghdGhpcy5fbWFpbkZyYW1lKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5f
bWFpbkZyYW1lID0gZnJhbWU7CisgICAgICAgICAgICAgICAgdGhpcy5fc2V0TWFpbkZyYW1lKGZy
YW1lKTsKICAgICAgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UobnVsbCk7CiAg
ICAgICAgICAgICB9CiAKQEAgLTYzNyw3ICs2NjAsNyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNv
dXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3Bl
YwogCiAgICAgICAgIHZhciBvbGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7CiAKLSAgICAg
ICAgdGhpcy5fbWFpbkZyYW1lID0gdGhpcy5fYWRkRnJhbWVUcmVlRnJvbUZyYW1lUmVzb3VyY2VU
cmVlUGF5bG9hZChtYWluRnJhbWVQYXlsb2FkLCB0cnVlKTsKKyAgICAgICAgdGhpcy5fc2V0TWFp
bkZyYW1lKHRoaXMuX2FkZEZyYW1lVHJlZUZyb21GcmFtZVJlc291cmNlVHJlZVBheWxvYWQobWFp
bkZyYW1lUGF5bG9hZCwgdHJ1ZSkpOwogCiAgICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09
IG9sZE1haW5GcmFtZSkKICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZURpZENoYW5nZShvbGRN
YWluRnJhbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311605</attachid>
            <date>2017-05-31 10:17:49 -0700</date>
            <delta_ts>2017-06-01 13:44:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172312-20170531101751.patch</filename>
            <type>text/plain</type>
            <size>14934</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZjMyNGU4MDNhMjcyY2QyZWYyMjQ3ZGMwZTlkY2Q5Mjc3NWRkNGUyLi44
MTgwNDJlM2YzODVmZDE4NGEwYzUyMzJlMjQzZTg5NDE1MTE3OTViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMTctMDUtMzEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRz
IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldDo6V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
fldlYlNvY2tldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNv
Y2tldHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRz
TXV0ZXgpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpjaGFubmVsKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UpOgorICAgICAgICBBZGQg
YSBzdGF0aWMgc2V0IG9mIGFsbCBXZWJTb2NrZXQgb2JqZWN0cyBhbmQgcHJvdmlkZSBnZXR0ZXJz
IHRvIGFjY2VzcyB3ZWIgc29ja2V0IG1ldGFkYXRhLgorCisgICAgICAgICogTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
OjppZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNsaWVu
dEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
c2VydmVySGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICBQcm92aWRlIGdldHRlcnMgdG8gYWNj
ZXNzIHdlYiBzb2NrZXQgbWV0YWRhdGEuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2Vu
dDo6ZW5hYmxlKToKKyAgICAgICAgTG9vcHMgb3ZlciB0aGUgc3RhdGljIHNldCBvZiBhbGwgV2Vi
U29ja2V0IG9iamVjdHMgYW5kIHNlbmRzIGV2ZW50cyBmb3IgZWFjaCB0byB0aGUgZnJvbnRlbmQu
CisKIDIwMTctMDUtMzAgIEFsaSBKdW1hICA8YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFtDcmVkZW50aWFsTWFuYWdlbWVudF0gSW5jb3Jwb3JhdGUgSURMIHVwZGF0ZXMgZnJvbSBsYXRl
c3Qgc3BlYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYTI0MGNiMzg2MzExMmI4OTQzNjQz
YzMwMzk5YzljZDA5N2NmNzViNi4uODU1MTNmM2ZlZmM5NDE2YzFhZGEwNWMzZDE4ZTE5N2JkNzY1
NDJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDUt
MzEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRzIHdoZW4gb3BlbmluZyBXZWIgSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanM6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxp
emUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlw
ZS53ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS53ZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZVJlY2VpdmVkKToKKyAgICAgICAgQ3JlYXRlIGEgbGlzdCBvZiBwZW5kaW5nIHJlc291cmNl
IGV2ZW50cyB0aGF0IGNhbiBiZSBxdWV1ZWQgaWYgdGhlIG1haW4gZnJhbWUgaGFzIG5vdCBsb2Fk
ZWQuCisKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5
cGUuX3NldE1haW5GcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1h
bmFnZXIucHJvdG90eXBlLmZyYW1lRGlkTmF2aWdhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5fYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JU
YXJnZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3Rv
dHlwZS5fcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQpOgorICAgICAgICBVbmlm
eSBzaXRlcyB3aGVyZSB0aGUgbWFpbiBmcmFtZSBpcyBzZXQgdG8gZW5zdXJlIHRoYXQgYW55IHRp
bWUgaXQgY2hhbmdlcyBhbnkgcGVuZGluZworICAgICAgICByZXNvdXJjZSBldmVudHMgYXJlIHBy
b2Nlc3NlZC4KKwogMjAxNy0wNS0zMCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBz
b255LmNvbT4KIAogICAgICAgICBbR1RLXSBXZWIgSW5zcGVjdG9yOiBBZGQgRE9NIGJyZWFrcG9p
bnQgaW1hZ2UgZm9yIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKaW5kZXggMDhlMTJhMTYwMWM4YTI0ZTZhYjZjMjI0NDYyN2QxMGFkYzRm
MjkwMi4uNWVjMTRkZjM2ZGJjNzJiMzM0MGMxYWE3YzM2Zjg2OGFmOTk2NWVkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTU4LDYg
KzU4LDcgQEAKICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
QEAgLTE1MSwxMCArMTUyLDIwIEBAIFdlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiAgICAgLCBtX2V4dGVuc2lvbnMoZW1wdHlTdHJpbmcoKSkKICAg
ICAsIG1fcmVzdW1lVGltZXIoKnRoaXMsICZXZWJTb2NrZXQ6OnJlc3VtZVRpbWVyRmlyZWQpCiB7
CisKKyAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisg
ICAgYWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKS5hZGQodGhpcyk7CiB9CiAKIFdlYlNvY2tldDo6
fldlYlNvY2tldCgpCiB7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZl
V2ViU29ja2V0c011dGV4KCkpOworCisgICAgICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jayku
cmVtb3ZlKHRoaXMpOworICAgIH0KKwogICAgIGlmIChtX2NoYW5uZWwpCiAgICAgICAgIG1fY2hh
bm5lbC0+ZGlzY29ubmVjdCgpOwogfQpAQCAtMTg0LDYgKzE5NSwxOCBAQCBFeGNlcHRpb25PcjxS
ZWY8V2ViU29ja2V0Pj4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgYwogICAgIHJldHVybiBjcmVhdGUoY29udGV4dCwgdXJsLCBWZWN0b3I8U3RyaW5n
PiB7IDEsIHByb3RvY29sIH0pOwogfQogCitIYXNoU2V0PFdlYlNvY2tldCo+JiBXZWJTb2NrZXQ6
OmFsbEFjdGl2ZVdlYlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEhhc2hTZXQ8V2ViU29ja2V0Kj4+IGFjdGl2ZVdlYlNvY2tldHM7CisgICAg
cmV0dXJuIGFjdGl2ZVdlYlNvY2tldHM7Cit9CisKK1N0YXRpY0xvY2smIFdlYlNvY2tldDo6YWxs
QWN0aXZlV2ViU29ja2V0c011dGV4KCkKK3sKKyAgICBzdGF0aWMgU3RhdGljTG9jayBtdXRleDsK
KyAgICByZXR1cm4gbXV0ZXg7Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y29u
bmVjdChjb25zdCBTdHJpbmcmIHVybCkKIHsKICAgICByZXR1cm4gY29ubmVjdCh1cmwsIFZlY3Rv
cjxTdHJpbmc+IHsgfSk7CkBAIC00MDcsNiArNDMwLDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdl
YlNvY2tldDo6Y2xvc2Uoc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gb3B0aW9uYWxDb2Rl
LCBjCiAgICAgcmV0dXJuIHsgfTsKIH0KIAorY29uc3QgUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsPiBXZWJTb2NrZXQ6OmNoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2No
YW5uZWw7Cit9CisKIGNvbnN0IFVSTCYgV2ViU29ja2V0Ojp1cmwoKSBjb25zdAogewogICAgIHJl
dHVybiBtX3VybDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuaAppbmRleCA3ZDQzZjA0MzYwZmMzYjlhY2MwYmJmYjVhNTkyNDVkNjliODA5YWMwLi5jOTAx
N2ZiN2Q3YzM4NDUyOTFjZDgyNjU5Y2ZhODU3OGYxMGY1MGRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCkBAIC0zOSw2ICszOSw4IEBACiAjaW5j
bHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIgogI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBBcnJheUJ1ZmZlcjsKQEAgLTYyLDYg
KzY0LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8V2ViU29ja2V0Pj4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHByb3RvY29scyk7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAK
KyAgICBzdGF0aWMgSGFzaFNldDxXZWJTb2NrZXQqPiYgYWxsQWN0aXZlV2ViU29ja2V0cyhjb25z
dCBMb2NrSG9sZGVyJik7CisgICAgc3RhdGljIFN0YXRpY0xvY2smIGFsbEFjdGl2ZVdlYlNvY2tl
dHNNdXRleCgpOworCiAgICAgZW51bSBTdGF0ZSB7CiAgICAgICAgIENPTk5FQ1RJTkcgPSAwLAog
ICAgICAgICBPUEVOID0gMSwKQEAgLTgwLDYgKzg1LDggQEAgcHVibGljOgogCiAgICAgRXhjZXB0
aW9uT3I8dm9pZD4gY2xvc2Uoc3RkOjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gY29kZSwgY29u
c3QgU3RyaW5nJiByZWFzb24pOwogCisgICAgY29uc3QgUmVmUHRyPFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsPiBjaGFubmVsKCkgY29uc3Q7CisKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0
OwogICAgIFN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKICAgICB1bnNpZ25lZCBidWZmZXJlZEFt
b3VudCgpIGNvbnN0OwpAQCAtOTAsNiArOTcsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGJpbmFy
eVR5cGUoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCaW5hcnlUeXBlKGNvbnN0
IFN0cmluZyYpOwogCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0IGZpbmFsOworCiAgICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwogICAg
IHVzaW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwogCkBAIC0xMDgsNyArMTE3LDYgQEAgcHJpdmF0ZToK
ICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CiAKICAg
ICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IGZpbmFs
OwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9
CiAgICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5j
cHAKaW5kZXggNjFkM2NjZGQ3MTVkZjg2MzkwNDk1Y2IzZGVkZjJhODA3ZTYxMmQyMi4uNDc2ZmNl
ZjNkNzlmMmU2MjJhM2E1N2ViOTM5MDI0NjIwOTlkYzJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtODMx
LDYgKzgzMSwxNiBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnNlbmRGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlIG9wQ29kZSwgY29uc3QgY2hhciogZGF0YQogICAgIG1faGFuZGxlLT5zZW5k
RGF0YShmcmFtZURhdGEuZGF0YSgpLCBmcmFtZURhdGEuc2l6ZSgpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKK1Jlc291cmNlUmVxdWVzdCBXZWJTb2NrZXRDaGFubmVsOjpjbGll
bnRIYW5kc2hha2VSZXF1ZXN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPmNs
aWVudEhhbmRzaGFrZVJlcXVlc3QoKTsKK30KKworY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgV2Vi
U29ja2V0Q2hhbm5lbDo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2hhbmRzaGFrZS0+c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKTsKK30KKwogfSAgLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
aAppbmRleCAwMzY1OGM2MmYxY2MzZDFlYzg3YWYyYTgwYmUyOGM1ZDI5NGY4YThlLi4wMjJlNGE2
ZjdhOWUwNTkyNjM1N2RjMDdmN2NkNjE3ZmRjODg3MTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTMzLDYgKzMz
LDggQEAKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAKICNpbmNsdWRlICJGaWxlUmVhZGVyTG9h
ZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oIgog
I2luY2x1ZGUgIlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiVGltZXIu
aCIKQEAgLTExMiw2ICsxMTQsMTAgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRmluaXNoTG9hZGlu
ZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChpbnQgZXJyb3JDb2RlKSBvdmVycmlkZTsK
IAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7
IH0KKyAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0Owor
ICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29u
c3Q7CisKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpyZWY7CiAgICAg
dXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKaW5kZXggOTky
NzFlY2NhM2E4MGI2ODQwMWU1ZWFjNjZiYTA4MzQ5Y2ZlNDJmMy4uNWZmYTk1NmU5ODQyMDlkMGE4
ZmU2MGJlYjE0ZTZlYmU2MGMyMWM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTYwLDYgKzYwLDggQEAKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGllbnQu
aCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNsdWRl
IDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTY3LDYgKzY5LDcgQEAKICNpbmNsdWRlIDxpbnNw
ZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+Cisj
aW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAg
LTY1NSw2ICs2NTgsMjYgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSgpCiB7
CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0SW5z
cGVjdG9yTmV0d29ya0FnZW50KHRoaXMpOworCisgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNvY2tl
dDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgZm9yIChXZWJTb2NrZXQqIHdl
YlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgeworICAgICAg
ICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBk
b3duY2FzdDxEb2N1bWVudD4od2ViU29ja2V0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwor
ICAgICAgICBpZiAoZG9jdW1lbnQtPnBhZ2UoKSAhPSAmbV9wYWdlQWdlbnQtPnBhZ2UoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFdlYlNvY2tldENoYW5uZWwqIGNoYW5uZWwg
PSBkb3duY2FzdDxXZWJTb2NrZXRDaGFubmVsPih3ZWJTb2NrZXQtPmNoYW5uZWwoKS5nZXQoKSk7
CisgICAgICAgIGlmICghY2hhbm5lbCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
IHVuc2lnbmVkIGlkZW50aWZpZXIgPSBjaGFubmVsLT5pZGVudGlmaWVyKCk7CisgICAgICAgIGRp
ZENyZWF0ZVdlYlNvY2tldChpZGVudGlmaWVyLCB3ZWJTb2NrZXQtPnVybCgpKTsKKyAgICAgICAg
d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIsIGNoYW5uZWwtPmNs
aWVudEhhbmRzaGFrZVJlcXVlc3QoKSk7CisgICAgICAgIGRpZFJlY2VpdmVXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZShpZGVudGlmaWVyLCBjaGFubmVsLT5zZXJ2ZXJIYW5kc2hha2VSZXNwb25z
ZSgpKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaXNhYmxlKEVy
cm9yU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMK
aW5kZXggNzhiMzA5NTE3MzM1ZDQ2NDQ3NjYzYWY1ZTYwYWM2MDE5ZjcwZjVkNy4uM2Y4NzIzYTE1
MDE3MGQ3MTYzOTJhNTIwZjU5ODg3ZDNmMmM0M2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKQEAgLTUwLDYgKzUwLDcgQEAgV2ViSW5zcGVjdG9yLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIgZXh0ZW5kcyBX
ZWJJbnNwZWMKICAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcCA9IG5l
dyBNYXA7CiAgICAgICAgIHRoaXMuX29ycGhhbmVkUmVzb3VyY2VzID0gbmV3IE1hcDsKICAgICAg
ICAgdGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMID0gbmV3IE1hcDsKKyAgICAgICAgdGhp
cy5fcGVuZGluZ0Z1bmN0aW9uQ2FsbHMgPSBbXTsKIAogICAgICAgICBpZiAodGhpcy5fbWFpbkZy
YW1lICE9PSBvbGRNYWluRnJhbWUpCiAgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVEaWRDaGFu
Z2Uob2xkTWFpbkZyYW1lKTsKQEAgLTEyNyw3ICsxMjgsOCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVS
ZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYklu
c3BlYwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKGZyYW1lLnBhcmVudEZyYW1l
KQogICAgICAgICAgICAgICAgIGZyYW1lLnBhcmVudEZyYW1lLnJlbW92ZUNoaWxkRnJhbWUoZnJh
bWUpOwotICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0gZnJhbWU7CisKKyAgICAgICAgICAg
IHRoaXMuX3NldE1haW5GcmFtZShmcmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodGhp
cy5fbWFpbkZyYW1lICE9PSBvbGRNYWluRnJhbWUpCkBAIC0yMDgsNiArMjEwLDExIEBAIFdlYklu
c3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2Vy
IGV4dGVuZHMgV2ViSW5zcGVjCiAKICAgICB3ZWJTb2NrZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVl
c3QocmVxdWVzdElkLCB0aW1lc3RhbXAsIHdhbGx0aW1lLCByZXF1ZXN0KQogICAgIHsKKyAgICAg
ICAgaWYgKCFXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKSB7Cisg
ICAgICAgICAgICB0aGlzLl9wZW5kaW5nRnVuY3Rpb25DYWxscy5wdXNoKHRoaXMud2ViU29ja2V0
V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0LmJpbmQodGhpcywgLi4uYXJndW1lbnRzKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBsZXQgdXJsID0gdGhpcy5fd2Vi
U29ja2V0SWRlbnRpZmllclRvVVJMLmdldChyZXF1ZXN0SWQpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCh1cmwpOwogICAgICAgICBpZiAoIXVybCkKQEAgLTIzOCw2ICsyNDUsMTEgQEAgV2ViSW5z
cGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIg
ZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgIHdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2
ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQogICAgIHsKKyAgICAgICAgaWYgKCFX
ZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKSB7CisgICAgICAgICAg
ICB0aGlzLl9wZW5kaW5nRnVuY3Rpb25DYWxscy5wdXNoKHRoaXMud2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2VSZWNlaXZlZC5iaW5kKHRoaXMsIC4uLmFyZ3VtZW50cykpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgbGV0IHJlc291cmNlID0gdGhpcy5fcmVzb3Vy
Y2VSZXF1ZXN0SWRlbnRpZmllck1hcC5nZXQocmVxdWVzdElkKTsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocmVzb3VyY2UpOwogICAgICAgICBpZiAoIXJlc291cmNlKQpAQCAtMjQ2LDEyICsyNTgs
MTMgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNv
dXJjZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0
ZSA9IFdlYkluc3BlY3Rvci5XZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlLk9wZW47CiAKICAg
ICAgICAgbGV0IGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21w
dXRlRWxhcHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNo
ZWQoZWxhcHNlZFRpbWUpOwogCiAgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE2OTE2
Nj4gV2ViIEluc3BlY3RvcjogV2ViU29ja2V0czogSW1wbGVtZW50IHRpbWluZyBpbmZvcm1hdGlv
bgogICAgICAgICBsZXQgcmVzcG9uc2VUaW1pbmcgPSByZXNwb25zZS50aW1pbmcgfHwgbnVsbDsK
IAogICAgICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNvdXJjZS51cmwsIHJlc291
cmNlLm1pbWVUeXBlLCByZXNvdXJjZS50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5z
dGF0dXMsIHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZVRpbWluZyk7
CisKKyAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOwogICAgIH0K
IAogICAgIHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3Bv
bnNlKQpAQCAtNTAxLDYgKzUxNCwxNiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFn
ZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwogCiAgICAg
Ly8gUHJpdmF0ZQogCisgICAgX3NldE1haW5GcmFtZShmcmFtZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX21haW5GcmFtZSA9IGZyYW1lOworCisgICAgICAgIGZvciAobGV0IHBlbmRpbmdSZXNvdXJj
ZURhdGEgb2YgdGhpcy5fcGVuZGluZ0Z1bmN0aW9uQ2FsbHMpCisgICAgICAgICAgICBwZW5kaW5n
UmVzb3VyY2VEYXRhKCk7CisKKyAgICAgICAgdGhpcy5fcGVuZGluZ0Z1bmN0aW9uQ2FsbHMgPSBb
XTsKKyAgICB9CisKICAgICBfYWRkTmV3UmVzb3VyY2VUb0ZyYW1lT3JUYXJnZXQocmVxdWVzdElk
ZW50aWZpZXIsIGZyYW1lSWRlbnRpZmllciwgbG9hZGVySWRlbnRpZmllciwgdXJsLCB0eXBlLCBy
ZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIGVsYXBzZWRUaW1lLCBm
cmFtZU5hbWUsIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlv
biwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcCwgdGFyZ2V0SWQpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNl
VHJlZVBheWxvYWQpOwpAQCAtNTMzLDcgKzU1Niw3IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291
cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVj
CiAgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgbWFpbiBmcmFtZSwgYXNzdW1lIHRo
aXMgaXMgaXQuIFRoaXMgY2FuIGNoYW5nZSBsYXRlciBpbgogICAgICAgICAgICAgLy8gZnJhbWVE
aWROYXZpZ2F0ZSB3aGVuIHRoZSBwYXJlbnQgZnJhbWUgaXMga25vd24uCiAgICAgICAgICAgICBp
ZiAoIXRoaXMuX21haW5GcmFtZSkgewotICAgICAgICAgICAgICAgIHRoaXMuX21haW5GcmFtZSA9
IGZyYW1lOworICAgICAgICAgICAgICAgIHRoaXMuX3NldE1haW5GcmFtZShmcmFtZSk7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG51bGwpOwogICAgICAgICAgICAg
fQogCkBAIC02MzcsNyArNjYwLDcgQEAgV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2Vy
ID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWMKIAogICAgICAg
ICB2YXIgb2xkTWFpbkZyYW1lID0gdGhpcy5fbWFpbkZyYW1lOwogCi0gICAgICAgIHRoaXMuX21h
aW5GcmFtZSA9IHRoaXMuX2FkZEZyYW1lVHJlZUZyb21GcmFtZVJlc291cmNlVHJlZVBheWxvYWQo
bWFpbkZyYW1lUGF5bG9hZCwgdHJ1ZSk7CisgICAgICAgIHRoaXMuX3NldE1haW5GcmFtZSh0aGlz
Ll9hZGRGcmFtZVRyZWVGcm9tRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkKG1haW5GcmFtZVBheWxv
YWQsIHRydWUpKTsKIAogICAgICAgICBpZiAodGhpcy5fbWFpbkZyYW1lICE9PSBvbGRNYWluRnJh
bWUpCiAgICAgICAgICAgICB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2Uob2xkTWFpbkZyYW1lKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311753</attachid>
            <date>2017-06-01 13:44:54 -0700</date>
            <delta_ts>2017-06-01 17:01:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172312-20170601134453.patch</filename>
            <type>text/plain</type>
            <size>19185</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTQxMzhjM2Q0YzlkMzJlODM4YzExMzgyZDMwNzNkODk4YmRjM2Y1Li4x
NTI5OTUxMzg1NmUzZTE3NjgyOTc3MWRmNjY1Y2NiYTY4MWQwYTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzggQEAKKzIwMTctMDYtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRz
IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHli
aS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbAorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpXZWJTb2NrZXQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXQ6
OmNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpldmVudFRhcmdldEludGVy
ZmFjZSk6CisgICAgICAgIEFkZCBhIHN0YXRpYyBzZXQgb2YgYWxsIFdlYlNvY2tldCBvYmplY3Rz
IGFuZCBwcm92aWRlIGdldHRlcnMgdG8gYWNjZXNzIHdlYiBzb2NrZXQgbWV0YWRhdGEuCisKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjppc1dlYlNvY2tl
dENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6aXNXZWJTb2NrZXRDaGFubmVsKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpoYW5kc2hha2VNb2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlzVHlwZSk6CisgICAgICAgIFBy
b3ZpZGUgZ2V0dGVycyB0byBhY2Nlc3Mgd2ViIHNvY2tldCBtZXRhZGF0YS4KKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUpOgorICAgICAgICBMb29wcyBvdmVyIHRoZSBz
dGF0aWMgc2V0IG9mIGFsbCBXZWJTb2NrZXQgb2JqZWN0cyBhbmQgc2VuZHMgZXZlbnRzIGZvciBl
YWNoIHRvIHRoZSBmcm9udGVuZC4KKwogMjAxNy0wNS0zMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBpdGVyYXRvciBpbnZhbGlkYXRpb24gYnVn
IGluIFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
CmluZGV4IDJiNTlkMjBkNWRlNzE0YTNiZmExZTEwNWJiYmU2OWQ4Yjg2NDNmOTIuLjg5NTJkODI0
ODk1MTBiM2QyOWNiZDg2ODM3ZjgxZGNmNGFmNmQ5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQgc2VlIGFjdGl2ZSBXZWIg
U29ja2V0cyB3aGVuIG9wZW5pbmcgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Zy
YW1lUmVzb3VyY2VNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyLnByb3RvdHlwZS53ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUuaW5p
dGlhbGl6ZSk6IFJlbW92ZWQuCisgICAgICAgIFJld29yayBvcmRlciBvZiBhZ2VudCBlbmFibGUg
Y2FsbHMgdG8gZW5zdXJlIHRoYXQgdGhlIG1haW4gZnJhbWUgaXMgaW5pdGlhbGl6ZWQgYmVmb3Jl
IGFueQorICAgICAgICB3ZWJzb2NrZXQgZXZlbnRzIGFyZSBkaXNwYXRjaGVkLgorCiAyMDE3LTA1
LTMxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBZGQgRGVidWcgdmlldyB0byBTZXR0aW5ncyB0YWIgZm9yIGRlYnVnIHNldHRpbmdz
IGFuZCBleHBlcmltZW50YWwgZmVhdHVyZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5k
ZXggOTMyN2UyZjAyNGQ5ZmE2ZmYxOWMwZmU3YWZmYjRiZDdjZTQwYjQ4Ni4uZWRjOTZiMzdmYjBk
MmM1NGIwMWU2ZjNkNWRhMWI3ZjQ0MmQ1ZmYzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmgKQEAgLTUzLDYgKzUzLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8VGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViU29ja2V0
Q2hhbm5lbENsaWVudCYsIFNvY2tldFByb3ZpZGVyJik7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwoKSB7IH0KIAorICAgIHZpcnR1YWwgYm9vbCBpc1dlYlNvY2tldENoYW5uZWwoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAgICAgZW51bSBTZW5kUmVzdWx0IHsKICAgICAgICAg
U2VuZFN1Y2Nlc3MsCiAgICAgICAgIFNlbmRGYWlsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDA4ZTEyYTE2MDFjOGEyNGU2YWI2YzIy
NDQ2MjdkMTBhZGM0ZjI5MDIuLjVlYzE0ZGYzNmRiYzcyYjMzNDBjMWFhN2MzNmY4NjhhZjk5NjVl
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQu
Y3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlci5oPgog
I2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CkBAIC0xNTEsMTAgKzE1MiwyMCBAQCBXZWJTb2NrZXQ6OldlYlNvY2tldChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgICwgbV9leHRlbnNpb25zKGVtcHR5
U3RyaW5nKCkpCiAgICAgLCBtX3Jlc3VtZVRpbWVyKCp0aGlzLCAmV2ViU29ja2V0OjpyZXN1bWVU
aW1lckZpcmVkKQogeworCisgICAgTG9ja0hvbGRlciBsb2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNN
dXRleCgpKTsKKworICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykuYWRkKHRoaXMpOwogfQog
CiBXZWJTb2NrZXQ6On5XZWJTb2NrZXQoKQogeworICAgIHsKKyAgICAgICAgTG9ja0hvbGRlciBs
b2NrKGFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpKTsKKworICAgICAgICBhbGxBY3RpdmVXZWJT
b2NrZXRzKGxvY2spLnJlbW92ZSh0aGlzKTsKKyAgICB9CisKICAgICBpZiAobV9jaGFubmVsKQog
ICAgICAgICBtX2NoYW5uZWwtPmRpc2Nvbm5lY3QoKTsKIH0KQEAgLTE4NCw2ICsxOTUsMTggQEAg
RXhjZXB0aW9uT3I8UmVmPFdlYlNvY2tldD4+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIGMKICAgICByZXR1cm4gY3JlYXRlKGNvbnRleHQsIHVybCwg
VmVjdG9yPFN0cmluZz4geyAxLCBwcm90b2NvbCB9KTsKIH0KIAorSGFzaFNldDxXZWJTb2NrZXQq
PiYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PFdlYlNvY2tldCo+PiBhY3RpdmVXZWJT
b2NrZXRzOworICAgIHJldHVybiBhY3RpdmVXZWJTb2NrZXRzOworfQorCitTdGF0aWNMb2NrJiBX
ZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCgpCit7CisgICAgc3RhdGljIFN0YXRp
Y0xvY2sgbXV0ZXg7CisgICAgcmV0dXJuIG11dGV4OworfQorCiBFeGNlcHRpb25Pcjx2b2lkPiBX
ZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvbm5l
Y3QodXJsLCBWZWN0b3I8U3RyaW5nPiB7IH0pOwpAQCAtNDA3LDYgKzQzMCwxMSBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBXZWJTb2NrZXQ6OmNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hvcnQ+
IG9wdGlvbmFsQ29kZSwgYwogICAgIHJldHVybiB7IH07CiB9CiAKK2NvbnN0IFJlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gV2ViU29ja2V0OjpjaGFubmVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jaGFubmVsOworfQorCiBjb25zdCBVUkwmIFdlYlNvY2tldDo6dXJsKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV91cmw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmgKaW5kZXggN2Q0M2YwNDM2MGZjM2I5YWNjMGJiZmI1YTU5MjQ1ZDY5
YjgwOWFjMC4uYzkwMTdmYjdkN2MzODQ1MjkxY2Q4MjY1OWNmYTg1NzhmMTBmNTBkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaApAQCAtMzksNiAr
MzksOCBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldlYlNvY2tldENoYW5uZWxDbGll
bnQuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgQXJyYXlCdWZm
ZXI7CkBAIC02Miw2ICs2NCw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVm
PFdlYlNvY2tldD4+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMpOwogICAgIHZpcnR1YWwgfldl
YlNvY2tldCgpOwogCisgICAgc3RhdGljIEhhc2hTZXQ8V2ViU29ja2V0Kj4mIGFsbEFjdGl2ZVdl
YlNvY2tldHMoY29uc3QgTG9ja0hvbGRlciYpOworICAgIHN0YXRpYyBTdGF0aWNMb2NrJiBhbGxB
Y3RpdmVXZWJTb2NrZXRzTXV0ZXgoKTsKKwogICAgIGVudW0gU3RhdGUgewogICAgICAgICBDT05O
RUNUSU5HID0gMCwKICAgICAgICAgT1BFTiA9IDEsCkBAIC04MCw2ICs4NSw4IEBAIHB1YmxpYzoK
IAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNsb3NlKHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQgc2hv
cnQ+IGNvZGUsIGNvbnN0IFN0cmluZyYgcmVhc29uKTsKIAorICAgIGNvbnN0IFJlZlB0cjxUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gY2hhbm5lbCgpIGNvbnN0OworCiAgICAgY29uc3QgVVJM
JiB1cmwoKSBjb25zdDsKICAgICBTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgYnVmZmVyZWRBbW91bnQoKSBjb25zdDsKQEAgLTkwLDYgKzk3LDggQEAgcHVibGljOgogICAg
IFN0cmluZyBiaW5hcnlUeXBlKCkgY29uc3Q7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0Qmlu
YXJ5VHlwZShjb25zdCBTdHJpbmcmKTsKIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKKwogICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIApAQCAtMTA4LDcgKzExNyw2
IEBAIHByaXZhdGU6CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0
IGZpbmFsOwogCiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2Uo
KSBjb25zdCBmaW5hbDsKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyByZWYoKTsgfQogICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IDYxZDNjY2RkNzE1ZGY4NjM5MDQ5NWNiM2RlZGYyYTgwN2U2
MTJkMjIuLjcxNzY0NjNjNDA3ZDg0MDFhNTMyZWJiYWJiYzBjZTFhYzFlOWMyODQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5l
bC5jcHAKQEAgLTgzMSw2ICs4MzEsMjEgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpzZW5kRnJh
bWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIqIGRhdGEKICAgICBt
X2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRhLnNpemUoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCitSZXNvdXJjZVJlcXVlc3QgV2ViU29ja2V0
Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
aGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KCk7Cit9CisKK2NvbnN0IFJlc291cmNl
UmVzcG9uc2UmIFdlYlNvY2tldENoYW5uZWw6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCk7
Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRDaGFubmVsOjpoYW5kc2hh
a2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPm1vZGUoKTsKK30KKwog
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaAppbmRleCAwMzY1OGM2MmYxY2MzZDFlYzg3YWYyYTgwYmUyOGM1ZDI5NGY4YThlLi5k
ZGNhM2M3M2E0NmUzZmNlZDgzYjkwZWIzMjVjOGEzNjUwNzIzNzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKQEAgLTM4
LDkgKzM4LDExIEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXREZWZs
YXRlRnJhbWVyLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKKyNpbmNsdWRlICJXZWJT
b2NrZXRIYW5kc2hha2UuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKQEAgLTQ5LDExICs1MSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBCbG9iOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBGaWxlUmVhZGVyTG9hZGVyOworY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKIGNsYXNzIFNvY2tldFBy
b3ZpZGVyOwogY2xhc3MgU29ja2V0U3RyZWFtSGFuZGxlOwogY2xhc3MgU29ja2V0U3RyZWFtRXJy
b3I7CiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsQ2xpZW50OwotY2xhc3MgV2ViU29ja2V0SGFuZHNo
YWtlOwogCiBjbGFzcyBXZWJTb2NrZXRDaGFubmVsIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViU29j
a2V0Q2hhbm5lbD4sIHB1YmxpYyBTb2NrZXRTdHJlYW1IYW5kbGVDbGllbnQsIHB1YmxpYyBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbCwgcHVibGljIEZpbGVSZWFkZXJMb2FkZXJDbGllbnQKIHsK
QEAgLTYyLDYgKzY1LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8V2ViU29ja2V0Q2hhbm5l
bD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViU29ja2V0Q2hhbm5lbENsaWVudCYgY2xp
ZW50LCBTb2NrZXRQcm92aWRlciYgcHJvdmlkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vi
U29ja2V0Q2hhbm5lbChkb2N1bWVudCwgY2xpZW50LCBwcm92aWRlcikpOyB9CiAgICAgdmlydHVh
bCB+V2ViU29ja2V0Q2hhbm5lbCgpOwogCisgICAgYm9vbCBpc1dlYlNvY2tldENoYW5uZWwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CisKICAgICBib29sIHNlbmQoY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbmd0aCk7CiAKICAgICAvLyBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCBm
dW5jdGlvbnMuCkBAIC0xMTIsNiArMTE3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZEZpbmlz
aExvYWRpbmcoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZEZhaWwoaW50IGVycm9yQ29kZSkgb3Zl
cnJpZGU7CiAKKyAgICB1bnNpZ25lZCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVu
dGlmaWVyOyB9CisgICAgUmVzb3VyY2VSZXF1ZXN0IGNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBj
b25zdDsKKyAgICBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25z
ZSgpIGNvbnN0OworICAgIFdlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBoYW5kc2hha2VNb2RlKCkg
Y29uc3Q7CisKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpyZWY7CiAg
ICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRDaGFubmVsPjo6ZGVyZWY7CiAKQEAgLTIxOSw0
ICsyMjksOCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbCkKKyAgICBzdGF0
aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwm
IHRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKSB7IHJldHVybiB0aHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5pc1dlYlNvY2tldENoYW5uZWwoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCA5OTI3MWVjY2Ez
YTgwYjY4NDAxZTVlYWM2NmJhMDgzNDljZmU0MmYzLi5lZmQxZjYzOTMwMzEzZGFkOTU4ZDk5Mjdm
NDYyMzdlZDQ5YWQzZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcApAQCAtNjAsNiArNjAsOCBAQAogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIlVSTC5oIgorI2luY2x1ZGUgIldlYlNvY2tldC5oIgorI2luY2x1ZGUgIldlYlNvY2tl
dENoYW5uZWwuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0lkZW50
aWZpZXJzRmFjdG9yeS5oPgpAQCAtNjcsNiArNjksNyBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9J
bnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KKyNpbmNsdWRl
IDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvU3Rv
cHdhdGNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNjU1LDYg
KzY1OCwzMSBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBt
X2VuYWJsZWQgPSB0cnVlOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQodGhpcyk7CisKKyAgICBMb2NrSG9sZGVyIGxvY2soV2ViU29ja2V0OjphbGxB
Y3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CisKKyAgICBmb3IgKFdlYlNvY2tldCogd2ViU29ja2V0
IDogV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2spKSB7CisgICAgICAgIGlmICgh
aXM8RG9jdW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB8fCAhaXM8
V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpKQorICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZG93bmNhc3Q8RG9j
dW1lbnQ+KHdlYlNvY2tldC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICAgICAgaWYg
KGRvY3VtZW50LT5wYWdlKCkgIT0gJm1fcGFnZUFnZW50LT5wYWdlKCkpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBXZWJTb2NrZXRDaGFubmVsKiBjaGFubmVsID0gZG93bmNhc3Q8
V2ViU29ja2V0Q2hhbm5lbD4od2ViU29ja2V0LT5jaGFubmVsKCkuZ2V0KCkpOworICAgICAgICBp
ZiAoIWNoYW5uZWwpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB1bnNpZ25lZCBp
ZGVudGlmaWVyID0gY2hhbm5lbC0+aWRlbnRpZmllcigpOworICAgICAgICBkaWRDcmVhdGVXZWJT
b2NrZXQoaWRlbnRpZmllciwgd2ViU29ja2V0LT51cmwoKSk7CisgICAgICAgIHdpbGxTZW5kV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdChpZGVudGlmaWVyLCBjaGFubmVsLT5jbGllbnRIYW5kc2hh
a2VSZXF1ZXN0KCkpOworCisgICAgICAgIGlmIChjaGFubmVsLT5oYW5kc2hha2VNb2RlKCkgIT0g
V2ViU29ja2V0SGFuZHNoYWtlOjpDb25uZWN0ZWQpCisgICAgICAgICAgICBkaWRSZWNlaXZlV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoaWRlbnRpZmllciwgY2hhbm5lbC0+c2VydmVySGFuZHNo
YWtlUmVzcG9uc2UoKSk7CisKKyAgICAgICAgaWYgKHdlYlNvY2tldC0+cmVhZHlTdGF0ZSgpID09
IFdlYlNvY2tldDo6Q0xPU0VEKQorICAgICAgICAgICAgZGlkQ2xvc2VXZWJTb2NrZXQoaWRlbnRp
Zmllcik7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlzYWJsZShF
cnJvclN0cmluZyYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpz
CmluZGV4IDc4YjMwOTUxNzMzNWQ0NjQ0NzY2M2FmNWU2MGFjNjAxOWY3MGY1ZDcuLmM0OWNhMGJi
YjczYzBmNGM4M2QyMGNiOGYxZTVmMmYyZjY3ZjhmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0ZyYW1lUmVzb3VyY2VNYW5hZ2VyLmpzCkBAIC0yOSwzNiArMjksMjcgQEAgV2ViSW5zcGVjdG9y
LkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1hbmFnZXIgZXh0ZW5k
cyBXZWJJbnNwZWMKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgaWYgKHdpbmRv
dy5QYWdlQWdlbnQpCi0gICAgICAgICAgICBQYWdlQWdlbnQuZW5hYmxlKCk7Ci0gICAgICAgIGlm
ICh3aW5kb3cuTmV0d29ya0FnZW50KQotICAgICAgICAgICAgTmV0d29ya0FnZW50LmVuYWJsZSgp
OwotCi0gICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMuX2V4
dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7
Ci0gICAgfQotCi0gICAgLy8gUHVibGljCi0KLSAgICBpbml0aWFsaXplKCkKLSAgICB7Ci0gICAg
ICAgIHZhciBvbGRNYWluRnJhbWUgPSB0aGlzLl9tYWluRnJhbWU7Ci0KICAgICAgICAgdGhpcy5f
ZnJhbWVJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fbWFpbkZyYW1lID0g
bnVsbDsKICAgICAgICAgdGhpcy5fcmVzb3VyY2VSZXF1ZXN0SWRlbnRpZmllck1hcCA9IG5ldyBN
YXA7CiAgICAgICAgIHRoaXMuX29ycGhhbmVkUmVzb3VyY2VzID0gbmV3IE1hcDsKICAgICAgICAg
dGhpcy5fd2ViU29ja2V0SWRlbnRpZmllclRvVVJMID0gbmV3IE1hcDsKIAotICAgICAgICBpZiAo
dGhpcy5fbWFpbkZyYW1lICE9PSBvbGRNYWluRnJhbWUpCi0gICAgICAgICAgICB0aGlzLl9tYWlu
RnJhbWVEaWRDaGFuZ2Uob2xkTWFpbkZyYW1lKTsKLQogICAgICAgICB0aGlzLl93YWl0aW5nRm9y
TWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5bG9hZCA9IHRydWU7Ci0gICAgICAgIGlmICh3aW5kb3cu
UGFnZUFnZW50KQorCisgICAgICAgIGlmICh3aW5kb3cuUGFnZUFnZW50KSB7CisgICAgICAgICAg
ICBQYWdlQWdlbnQuZW5hYmxlKCk7CiAgICAgICAgICAgICBQYWdlQWdlbnQuZ2V0UmVzb3VyY2VU
cmVlKHRoaXMuX3Byb2Nlc3NNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkLmJpbmQodGhpcykp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHdpbmRvdy5OZXR3b3JrQWdlbnQpCisgICAgICAg
ICAgICBOZXR3b3JrQWdlbnQuZW5hYmxlKCk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlm
aWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLkV4dHJh
RG9tYWluc0FjdGl2YXRlZCwgdGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzKTsKICAg
ICB9CiAKKyAgICAvLyBQdWJsaWMKKwogICAgIGdldCBtYWluRnJhbWUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX21haW5GcmFtZTsKQEAgLTI0NiwxMiArMjM3LDEzIEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3VyY2VNYW5hZ2VyIGV4
dGVuZHMgV2ViSW5zcGVjCiAgICAgICAgIHJlc291cmNlLnJlYWR5U3RhdGUgPSBXZWJJbnNwZWN0
b3IuV2ViU29ja2V0UmVzb3VyY2UuUmVhZHlTdGF0ZS5PcGVuOwogCiAgICAgICAgIGxldCBlbGFw
c2VkVGltZSA9IFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuY29tcHV0ZUVsYXBzZWRUaW1l
KHRpbWVzdGFtcCk7Ci0gICAgICAgIHJlc291cmNlLm1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1l
KTsKIAogICAgICAgICAvLyBGSVhNRTogPHdlYmtpdC5vcmcvYi8xNjkxNjY+IFdlYiBJbnNwZWN0
b3I6IFdlYlNvY2tldHM6IEltcGxlbWVudCB0aW1pbmcgaW5mb3JtYXRpb24KICAgICAgICAgbGV0
IHJlc3BvbnNlVGltaW5nID0gcmVzcG9uc2UudGltaW5nIHx8IG51bGw7CiAKICAgICAgICAgcmVz
b3VyY2UudXBkYXRlRm9yUmVzcG9uc2UocmVzb3VyY2UudXJsLCByZXNvdXJjZS5taW1lVHlwZSwg
cmVzb3VyY2UudHlwZSwgcmVzcG9uc2UuaGVhZGVycywgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25z
ZS5zdGF0dXNUZXh0LCBlbGFwc2VkVGltZSwgcmVzcG9uc2VUaW1pbmcpOworCisgICAgICAgIHJl
c291cmNlLm1hcmtBc0ZpbmlzaGVkKGVsYXBzZWRUaW1lKTsKICAgICB9CiAKICAgICB3ZWJTb2Nr
ZXRGcmFtZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBl
ZTQwNTI5ZDg4MWYwZTYyMjNjZmQ0ZWEzYTgyZjIyMTY2ZGMxZDQ1Li4zNDM2M2FhYTk3MWNjNGIz
NDk0NDlhYzQ4NTZhNjk4MTQ2M2IwOWMyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDYt
MDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRzIHdoZW4gb3BlbmluZyBXZWIgSW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
ZXN0IHRoYXQgV2ViU29ja2V0cyBjcmVhdGVkIGJlZm9yZSB0aGUgaW5zcGVjdG9yIGxvYWRzIGFy
ZSBhbHNvIHRyYWNrZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5z
cGVjdG9yL2JlZm9yZS1sb2FkX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEpOgor
CiAyMDE3LTA1LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
Rmxha3kgVGVzdDogaHR0cC90ZXN0cy9taXNjL2FjaWQzLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1s
b2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODBh
M2MyY2EzOTYxNmNjMzk4NGEzZjEzODFmNTE2NGU0ODEzNGFmCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVm
b3JlLWxvYWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdHMgdGhhdCBXZWJTb2Nr
ZXRzIGNyZWF0ZWQgYmVmb3JlIHRoZSBpbnNwZWN0b3IgbG9hZHMgYXJlIGFsc28gdHJhY2tlZC4K
KworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFdlYlNvY2tldC5CZWZvcmVMb2FkCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogV2ViU29ja2V0LkJlZm9yZUxvYWQKK1BBU1M6IFdlYlNvY2tldCByZXNv
dXJjZSBleGlzdHMgZm9yIHVybCAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMv
aHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQiCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9i
ZWZvcmUtbG9hZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0ZDU3MzIyMmE2MDFkMzE0NWFhYzBhZjYyMmY0
MTNkOTc5YjUyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dl
YnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1sCkBAIC0wLDAgKzEs
MzkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li8uLi8uLi9pbnNwZWN0b3IvcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+Citjb25zdCB1cmwgPSAid3M6Ly8xMjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVz
dHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQiOworbGV0IHdlYlNvY2tldCA9IG5ldyBXZWJT
b2NrZXQodXJsKTsKK3dlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKCJvcGVuIiwgKGV2ZW50KSA9
PiB7CisgICAgLy8gT25seSBydW4gdGhlIHRlc3RzIG9uY2UgdGhlIHdlYnNvY2tldCBoYXMgY29u
bmVjdGVkLgorICAgIHJ1blRlc3QoKTsKK30pOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBs
ZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIldlYlNvY2tldC5CZWZv
cmVMb2FkIik7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJXZWJT
b2NrZXQuQmVmb3JlTG9hZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVGVzdCB0aGF0IHRoZSBl
eGlzdGluZyB3ZWJzb2NrZXQgaXMgc2VudCB0byB0aGUgZnJvbnRlbmQgd2hlbiBpdCBpcyBmaXJz
dCBvcGVuZWQuIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoIndlYlNvY2tldC5jbG9zZSgpIik7CisKKyAg
ICAgICAgICAgIGNvbnN0IHVybCA9ICJ3czovLzEyNy4wLjAuMTo4ODgwL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZCI7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHVybCkpIHsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnBhc3MoYFdlYlNvY2tldCByZXNvdXJjZSBleGlzdHMgZm9y
IHVybCAiJHt1cmx9ImApOworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIHJlamVjdCgiTWlzc2luZyBXZWJTb2NrZXQgcmVzb3Vy
Y2UiKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmlu
aXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7Ij4KKzxwPlRlc3RzIHRoYXQgV2ViU29ja2V0cyBjcmVhdGVkIGJlZm9y
ZSB0aGUgaW5zcGVjdG9yIGxvYWRzIGFyZSBhbHNvIHRyYWNrZWQuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMv
aHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWRfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWRfd3NoLnB5Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjBjZjFjYTA3NzdhZWE2MTUyNGY1MTQyNDEzNmEwYWE2ZWY1MmM2MDMKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2lu
c3BlY3Rvci9iZWZvcmUtbG9hZF93c2gucHkKQEAgLTAsMCArMSwxMSBAQAorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UocmVxdWVzdCk6CisgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCisKKworZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIEVjaG8gbWVzc2FnZSBiYWNrCisg
ICAgbWVzc2FnZSA9IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpCisgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgbWVzc2FnZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311782</attachid>
            <date>2017-06-01 17:01:43 -0700</date>
            <delta_ts>2017-06-01 19:06:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172312-20170601170142.patch</filename>
            <type>text/plain</type>
            <size>20391</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZTQxMzhjM2Q0YzlkMzJlODM4YzExMzgyZDMwNzNkODk4YmRjM2Y1Li4y
NGRkY2U3OTcwMGQ3YjQ2N2ZiNTdmY2Y3ZWMyN2E2ZjRkYWE2MzA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzkgQEAKKzIwMTctMDYtMDEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBzZWUgYWN0aXZlIFdlYiBTb2NrZXRz
IHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdHM6CisgICAgICAgICAtIGh0dHAvdGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKKworICAgICAgICAq
IE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6V2ViU29j
a2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6fldlYlNvY2tldCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0OjpjaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6
ZXZlbnRUYXJnZXRJbnRlcmZhY2UpOgorICAgICAgICBBZGQgYSBzdGF0aWMgc2V0IG9mIGFsbCBX
ZWJTb2NrZXQgb2JqZWN0cyBhbmQgcHJvdmlkZSBnZXR0ZXJzIHRvIGFjY2VzcyB3ZWIgc29ja2V0
IG1ldGFkYXRhLgorCisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsLmg6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbDo6aXNXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5oOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmlzV2Vi
U29ja2V0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjppZGVu
dGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6OmNsaWVudEhhbmRz
aGFrZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6c2VydmVy
SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
aGFuZHNoYWtlTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjppc1R5
cGUpOgorICAgICAgICBQcm92aWRlIGdldHRlcnMgdG8gYWNjZXNzIHdlYiBzb2NrZXQgbWV0YWRh
dGEuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAg
TG9vcHMgb3ZlciB0aGUgc3RhdGljIHNldCBvZiBhbGwgV2ViU29ja2V0IG9iamVjdHMgYW5kIHNl
bmRzIGV2ZW50cyBmb3IgZWFjaCB0byB0aGUgZnJvbnRlbmQuCisKIDIwMTctMDUtMzEgIEJyZW50
IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgaXRlcmF0b3Ig
aW52YWxpZGF0aW9uIGJ1ZyBpbiBXZWJDb3JlOjpkZWZhdWx0UG9ydEZvclByb3RvY29sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwppbmRleCAyYjU5ZDIwZDVkZTcxNGEzYmZhMWUxMDViYmJlNjlkOGI4
NjQzZjkyLi44OTUyZDgyNDg5NTEwYjNkMjljYmQ4NjgzN2Y4MWRjZjRhZjZkOTM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wNi0wMSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxk
IHNlZSBhY3RpdmUgV2ViIFNvY2tldHMgd2hlbiBvcGVuaW5nIFdlYiBJbnNwZWN0b3IKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjMxMgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5wcm90b3R5cGUud2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFn
ZXIucHJvdG90eXBlLmluaXRpYWxpemUpOiBSZW1vdmVkLgorICAgICAgICBSZXdvcmsgb3JkZXIg
b2YgYWdlbnQgZW5hYmxlIGNhbGxzIHRvIGVuc3VyZSB0aGF0IHRoZSBtYWluIGZyYW1lIGlzIGlu
aXRpYWxpemVkIGJlZm9yZSBhbnkKKyAgICAgICAgd2Vic29ja2V0IGV2ZW50cyBhcmUgZGlzcGF0
Y2hlZC4KKwogMjAxNy0wNS0zMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIERlYnVnIHZpZXcgdG8gU2V0dGluZ3MgdGFiIGZv
ciBkZWJ1ZyBzZXR0aW5ncyBhbmQgZXhwZXJpbWVudGFsIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5oCmluZGV4IDkzMjdlMmYwMjRkOWZhNmZmMTljMGZlN2FmZmI0YmQ3Y2U0MGI0
ODYuLmVkYzk2YjM3ZmIwZDJjNTRiMDFlNmYzZDVkYTFiN2Y0NDJkNWZmM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oCkBAIC01Myw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFdlYlNvY2tldENoYW5uZWxDbGllbnQmLCBTb2NrZXRQcm92aWRlciYpOwogICAgIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsKCkgeyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJT
b2NrZXRDaGFubmVsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogICAgIGVudW0gU2VuZFJl
c3VsdCB7CiAgICAgICAgIFNlbmRTdWNjZXNzLAogICAgICAgICBTZW5kRmFpbApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAppbmRleCAwOGUxMmEx
NjAxYzhhMjRlNmFiNmMyMjQ0NjI3ZDEwYWRjNGYyOTAyLi41ZWMxNGRmMzZkYmM3MmIzMzQwYzFh
YTdjMzZmODY4YWY5OTY1ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNv
Y2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPHJ1bnRpbWUv
QXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTUxLDEwICsxNTIsMjAgQEAgV2ViU29j
a2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICAsIG1f
ZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1bWVUaW1lcigqdGhpcywgJldl
YlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkKIHsKKworICAgIExvY2tIb2xkZXIgbG9jayhhbGxB
Y3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CisKKyAgICBhbGxBY3RpdmVXZWJTb2NrZXRzKGxvY2sp
LmFkZCh0aGlzKTsKIH0KIAogV2ViU29ja2V0Ojp+V2ViU29ja2V0KCkKIHsKKyAgICB7CisgICAg
ICAgIExvY2tIb2xkZXIgbG9jayhhbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKSk7CisKKyAgICAg
ICAgYWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKS5yZW1vdmUodGhpcyk7CisgICAgfQorCiAgICAg
aWYgKG1fY2hhbm5lbCkKICAgICAgICAgbV9jaGFubmVsLT5kaXNjb25uZWN0KCk7CiB9CkBAIC0x
ODQsNiArMTk1LDE4IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBXZWJTb2NrZXQ6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjCiAgICAgcmV0dXJuIGNyZWF0
ZShjb250ZXh0LCB1cmwsIFZlY3RvcjxTdHJpbmc+IHsgMSwgcHJvdG9jb2wgfSk7CiB9CiAKK0hh
c2hTZXQ8V2ViU29ja2V0Kj4mIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhjb25zdCBM
b2NrSG9sZGVyJikKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFzaFNldDxXZWJTb2Nr
ZXQqPj4gYWN0aXZlV2ViU29ja2V0czsKKyAgICByZXR1cm4gYWN0aXZlV2ViU29ja2V0czsKK30K
KworU3RhdGljTG9jayYgV2ViU29ja2V0OjphbGxBY3RpdmVXZWJTb2NrZXRzTXV0ZXgoKQorewor
ICAgIHN0YXRpYyBTdGF0aWNMb2NrIG11dGV4OworICAgIHJldHVybiBtdXRleDsKK30KKwogRXhj
ZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0IFN0cmluZyYgdXJsKQogewog
ICAgIHJldHVybiBjb25uZWN0KHVybCwgVmVjdG9yPFN0cmluZz4geyB9KTsKQEAgLTQwNyw2ICs0
MzAsMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViU29ja2V0OjpjbG9zZShzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkIHNob3J0PiBvcHRpb25hbENvZGUsIGMKICAgICByZXR1cm4geyB9OwogfQogCitj
b25zdCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IFdlYlNvY2tldDo6Y2hhbm5l
bCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hhbm5lbDsKK30KKwogY29uc3QgVVJMJiBXZWJT
b2NrZXQ6OnVybCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdXJsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oCmluZGV4IDdkNDNmMDQzNjBmYzNiOWFj
YzBiYmZiNWE1OTI0NWQ2OWI4MDlhYzAuLmM5MDE3ZmI3ZDdjMzg0NTI5MWNkODI2NTljZmE4NTc4
ZjEwZjUwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNjIsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzKTsK
ICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAorICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNvY2tl
dCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBzdGF0aWMg
U3RhdGljTG9jayYgYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCk7CisKICAgICBlbnVtIFN0YXRl
IHsKICAgICAgICAgQ09OTkVDVElORyA9IDAsCiAgICAgICAgIE9QRU4gPSAxLApAQCAtODAsNiAr
ODUsOCBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9zZShzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKKyAgICBj
b25zdCBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNoYW5uZWwoKSBjb25zdDsK
KwogICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0OwogICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CkBAIC05MCw2ICs5Nyw4
IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgYmluYXJ5VHlwZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldEJpbmFyeVR5cGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisKICAg
ICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAK
QEAgLTEwOCw3ICsxMTcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9i
amVjdE5hbWUoKSBjb25zdCBmaW5hbDsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50
VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZF
dmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQo
KSBmaW5hbCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MWQzY2NkZDcxNWRmODYzOTA0
OTVjYjNkZWRmMmE4MDdlNjEyZDIyLi43MTc2NDYzYzQwN2Q4NDAxYTUzMmViYmFiYmMwY2UxYWMx
ZTljMjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC04MzEsNiArODMxLDIxIEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZEZyYW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGUgb3BDb2RlLCBjb25zdCBj
aGFyKiBkYXRhCiAgICAgbV9oYW5kbGUtPnNlbmREYXRhKGZyYW1lRGF0YS5kYXRhKCksIGZyYW1l
RGF0YS5zaXplKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAorUmVzb3VyY2VS
ZXF1ZXN0IFdlYlNvY2tldENoYW5uZWw6OmNsaWVudEhhbmRzaGFrZVJlcXVlc3QoKSBjb25zdAor
eworICAgIHJldHVybiBtX2hhbmRzaGFrZS0+Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpOworfQor
Citjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBXZWJTb2NrZXRDaGFubmVsOjpzZXJ2ZXJIYW5kc2hh
a2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZHNoYWtlLT5zZXJ2ZXJIYW5k
c2hha2VSZXNwb25zZSgpOworfQorCitXZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGUgV2ViU29ja2V0
Q2hhbm5lbDo6aGFuZHNoYWtlTW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZHNoYWtl
LT5tb2RlKCk7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAgLy8gRU5B
QkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJz
b2NrZXRzL1dlYlNvY2tldENoYW5uZWwuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggMDM2NThjNjJmMWNjM2QxZWM4N2FmMmE4MGJl
MjhjNWQyOTRmOGE4ZS4uZGRjYTNjNzNhNDZlM2ZjZWQ4M2I5MGViMzI1YzhhMzY1MDcyMzc2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5oCkBAIC0zOCw5ICszOCwxMSBAQAogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0RGVmbGF0ZUZyYW1lci5oIgogI2luY2x1ZGUgIldlYlNvY2tldEZyYW1lLmgi
CisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9UeXBlQ2FzdHMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00OSwxMSArNTEsMTIgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQmxvYjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRmlsZVJlYWRl
ckxvYWRlcjsKK2NsYXNzIFJlc291cmNlUmVxdWVzdDsKK2NsYXNzIFJlc291cmNlUmVzcG9uc2U7
CiBjbGFzcyBTb2NrZXRQcm92aWRlcjsKIGNsYXNzIFNvY2tldFN0cmVhbUhhbmRsZTsKIGNsYXNz
IFNvY2tldFN0cmVhbUVycm9yOwogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbENsaWVudDsKLWNsYXNz
IFdlYlNvY2tldEhhbmRzaGFrZTsKIAogY2xhc3MgV2ViU29ja2V0Q2hhbm5lbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+LCBwdWJsaWMgU29ja2V0U3RyZWFtSGFuZGxlQ2xp
ZW50LCBwdWJsaWMgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwsIHB1YmxpYyBGaWxlUmVhZGVy
TG9hZGVyQ2xpZW50CiB7CkBAIC02Miw2ICs2NSw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PFdlYlNvY2tldENoYW5uZWw+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlNvY2tldENo
YW5uZWxDbGllbnQmIGNsaWVudCwgU29ja2V0UHJvdmlkZXImIHByb3ZpZGVyKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlNvY2tldENoYW5uZWwoZG9jdW1lbnQsIGNsaWVudCwgcHJvdmlkZXIp
KTsgfQogICAgIHZpcnR1YWwgfldlYlNvY2tldENoYW5uZWwoKTsKIAorICAgIGJvb2wgaXNXZWJT
b2NrZXRDaGFubmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQorCiAgICAgYm9vbCBz
ZW5kKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpOwogCiAgICAgLy8gVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWwgZnVuY3Rpb25zLgpAQCAtMTEyLDYgKzExNywxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRGYWlsKGlu
dCBlcnJvckNvZGUpIG92ZXJyaWRlOwogCisgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIFJlc291cmNlUmVxdWVzdCBjbGllbnRIYW5k
c2hha2VSZXF1ZXN0KCkgY29uc3Q7CisgICAgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgc2VydmVy
SGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKKyAgICBXZWJTb2NrZXRIYW5kc2hha2U6Ok1vZGUg
aGFuZHNoYWtlTW9kZSgpIGNvbnN0OworCiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJTb2NrZXRD
aGFubmVsPjo6cmVmOwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5lbD46OmRl
cmVmOwogCkBAIC0yMTksNCArMjI5LDggQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OldlYlNvY2tldENo
YW5uZWwpCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlRocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsJiB0aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCkgeyByZXR1cm4gdGhy
ZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaXNXZWJTb2NrZXRDaGFubmVsKCk7IH0KK1NQRUNJQUxJ
WkVfVFlQRV9UUkFJVFNfRU5EKCkKKwogI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAK
aW5kZXggOTkyNzFlY2NhM2E4MGI2ODQwMWU1ZWFjNjZiYTA4MzQ5Y2ZlNDJmMy4uYzdjYjg3YWM3
OTMyOTlkNzJlNWI3Zjc1YjNhODNiNTk3ODNkMTBkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTYwLDYgKzYwLDggQEAK
ICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2Fk
ZXJDbGllbnQuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNp
bmNsdWRlICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIK
ICNpbmNsdWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUg
PGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTY3LDYgKzY5LDcgQEAKICNpbmNs
dWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1Nj
cmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KQEAgLTY1NSw2ICs2NTgsMzEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVu
YWJsZSgpCiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuc2V0SW5zcGVjdG9yTmV0d29ya0FnZW50KHRoaXMpOworCisgICAgTG9ja0hvbGRlciBsb2Nr
KFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgZm9yIChXZWJT
b2NrZXQqIHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKSkg
eworICAgICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSkgfHwgIWlzPFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdl
dCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGRvd25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSk7CisgICAgICAgIGlmIChkb2N1bWVudC0+cGFnZSgpICE9ICZtX3BhZ2VBZ2VudC0+cGFnZSgp
KQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCogY2hh
bm5lbCA9IGRvd25jYXN0PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdl
dCgpKTsKKyAgICAgICAgaWYgKCFjaGFubmVsKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKTsKKyAgICAg
ICAgZGlkQ3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHdlYlNvY2tldC0+dXJsKCkpOworICAg
ICAgICB3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgY2hhbm5l
bC0+Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpKTsKKworICAgICAgICBpZiAoY2hhbm5lbC0+aGFu
ZHNoYWtlTW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQorICAgICAgICAg
ICAgZGlkUmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIGNoYW5u
ZWwtPnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkpOworCisgICAgICAgIGlmICh3ZWJTb2NrZXQt
PnJlYWR5U3RhdGUoKSA9PSBXZWJTb2NrZXQ6OkNMT1NFRCkKKyAgICAgICAgICAgIGRpZENsb3Nl
V2ViU29ja2V0KGlkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJl
c291cmNlTWFuYWdlci5qcwppbmRleCA3OGIzMDk1MTczMzVkNDY0NDc2NjNhZjVlNjBhYzYwMTlm
NzBmNWQ3Li5jNDljYTBiYmI3M2MwZjRjODNkMjBjYjhmMWU1ZjJmMmY2N2Y4ZmQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFt
ZVJlc291cmNlTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcwpAQCAtMjksMzYgKzI5LDI3
IEBAIFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlciA9IGNsYXNzIEZyYW1lUmVzb3Vy
Y2VNYW5hZ2VyIGV4dGVuZHMgV2ViSW5zcGVjCiAgICAgewogICAgICAgICBzdXBlcigpOwogCi0g
ICAgICAgIGlmICh3aW5kb3cuUGFnZUFnZW50KQotICAgICAgICAgICAgUGFnZUFnZW50LmVuYWJs
ZSgpOwotICAgICAgICBpZiAod2luZG93Lk5ldHdvcmtBZ2VudCkKLSAgICAgICAgICAgIE5ldHdv
cmtBZ2VudC5lbmFibGUoKTsKLQotICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uRXh0cmFEb21haW5zQWN0
aXZhdGVkLCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMpOwotCi0gICAgICAgIHRo
aXMuaW5pdGlhbGl6ZSgpOwotICAgIH0KLQotICAgIC8vIFB1YmxpYwotCi0gICAgaW5pdGlhbGl6
ZSgpCi0gICAgewotICAgICAgICB2YXIgb2xkTWFpbkZyYW1lID0gdGhpcy5fbWFpbkZyYW1lOwot
CiAgICAgICAgIHRoaXMuX2ZyYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRo
aXMuX21haW5GcmFtZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Jlc291cmNlUmVxdWVzdElkZW50
aWZpZXJNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9vcnBoYW5lZFJlc291cmNlcyA9IG5l
dyBNYXA7CiAgICAgICAgIHRoaXMuX3dlYlNvY2tldElkZW50aWZpZXJUb1VSTCA9IG5ldyBNYXA7
CiAKLSAgICAgICAgaWYgKHRoaXMuX21haW5GcmFtZSAhPT0gb2xkTWFpbkZyYW1lKQotICAgICAg
ICAgICAgdGhpcy5fbWFpbkZyYW1lRGlkQ2hhbmdlKG9sZE1haW5GcmFtZSk7Ci0KICAgICAgICAg
dGhpcy5fd2FpdGluZ0Zvck1haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQgPSB0cnVlOwotICAg
ICAgICBpZiAod2luZG93LlBhZ2VBZ2VudCkKKworICAgICAgICBpZiAod2luZG93LlBhZ2VBZ2Vu
dCkgeworICAgICAgICAgICAgUGFnZUFnZW50LmVuYWJsZSgpOwogICAgICAgICAgICAgUGFnZUFn
ZW50LmdldFJlc291cmNlVHJlZSh0aGlzLl9wcm9jZXNzTWFpbkZyYW1lUmVzb3VyY2VUcmVlUGF5
bG9hZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh3aW5kb3cuTmV0d29y
a0FnZW50KQorICAgICAgICAgICAgTmV0d29ya0FnZW50LmVuYWJsZSgpOworCisgICAgICAgIFdl
Ykluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5v
dGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRoaXMuX2V4dHJhRG9tYWluc0FjdGl2
YXRlZCwgdGhpcyk7CiAgICAgfQogCisgICAgLy8gUHVibGljCisKICAgICBnZXQgbWFpbkZyYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tYWluRnJhbWU7CkBAIC0yNDYsMTIgKzIz
NywxMyBAQCBXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJl
c291cmNlTWFuYWdlciBleHRlbmRzIFdlYkluc3BlYwogICAgICAgICByZXNvdXJjZS5yZWFkeVN0
YXRlID0gV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLlJlYWR5U3RhdGUuT3BlbjsKIAog
ICAgICAgICBsZXQgZWxhcHNlZFRpbWUgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNv
bXB1dGVFbGFwc2VkVGltZSh0aW1lc3RhbXApOwotICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5p
c2hlZChlbGFwc2VkVGltZSk7CiAKICAgICAgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMTY5
MTY2PiBXZWIgSW5zcGVjdG9yOiBXZWJTb2NrZXRzOiBJbXBsZW1lbnQgdGltaW5nIGluZm9ybWF0
aW9uCiAgICAgICAgIGxldCByZXNwb25zZVRpbWluZyA9IHJlc3BvbnNlLnRpbWluZyB8fCBudWxs
OwogCiAgICAgICAgIHJlc291cmNlLnVwZGF0ZUZvclJlc3BvbnNlKHJlc291cmNlLnVybCwgcmVz
b3VyY2UubWltZVR5cGUsIHJlc291cmNlLnR5cGUsIHJlc3BvbnNlLmhlYWRlcnMsIHJlc3BvbnNl
LnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgZWxhcHNlZFRpbWUsIHJlc3BvbnNlVGltaW5n
KTsKKworICAgICAgICByZXNvdXJjZS5tYXJrQXNGaW5pc2hlZChlbGFwc2VkVGltZSk7CiAgICAg
fQogCiAgICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVz
cG9uc2UpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggZWU0MDUyOWQ4ODFmMGU2MjIzY2ZkNGVhM2E4MmYyMjE2NmRjMWQ0NS4u
MzQzNjNhYWE5NzFjYzRiMzQ5NDQ5YWM0ODU2YTY5ODE0NjNiMDljMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDE3LTA2LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQgc2VlIGFjdGl2ZSBXZWIgU29ja2V0cyB3aGVu
IG9wZW5pbmcgV2ViIEluc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcyMzEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGVzdCB0aGF0IFdlYlNvY2tldHMgY3JlYXRlZCBiZWZvcmUgdGhlIGlu
c3BlY3RvciBsb2FkcyBhcmUgYWxzbyB0cmFja2VkLgorCisgICAgICAgICogaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rv
ci9iZWZvcmUtbG9hZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZF93c2gucHk6IEFkZGVkLgorICAgICAg
ICAod2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UpOgorICAgICAgICAod2ViX3NvY2tldF90
cmFuc2Zlcl9kYXRhKToKKwogMjAxNy0wNS0zMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEZsYWt5IFRlc3Q6IGh0dHAvdGVzdHMvbWlzYy9hY2lkMy5odG1sCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2lu
c3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmU4NDBiOGI4ZTRiODZlZTY5ZGFmOGMzZTdiNWE2MDkyN2UzNzNiNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitU
ZXN0cyB0aGF0IFdlYlNvY2tldHMgY3JlYXRlZCBiZWZvcmUgdGhlIGluc3BlY3RvciBsb2FkcyBh
cmUgYWxzbyB0cmFja2VkLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogV2ViU29ja2V0LkJl
Zm9yZUxvYWQKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBXZWJTb2NrZXQuQmVmb3JlTG9hZAorUEFT
UzogUmVzb3VyY2UgaXMgYSBXZWJTb2NrZXQKK1BBU1M6IFJlc291cmNlIGhhcyBleHBlY3RlZCBV
UkwgIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2Jl
Zm9yZS1sb2FkIgorUEFTUzogUmVzb3VyY2UgaGFzIHJlcXVlc3QgaGVhZGVycworUEFTUzogUmVz
b3VyY2UgaGFzIHJlc3BvbnNlIGhlYWRlcnMKK1Jlc291cmNlIGhhcyByZWFkeVN0YXRlICJvcGVu
IgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9o
eWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hY2E4MDJiYzlkOThjNGMzMDkyZTc4OTgwY2MwYWM5NmI5YTFkNDcwCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0
b3IvYmVmb3JlLWxvYWQuaHRtbApAQCAtMCwwICsxLDY2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vLi4vaW5zcGVjdG9yL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorY29uc3QgdXJsID0gIndz
Oi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1s
b2FkIjsKK2xldCB3ZWJTb2NrZXQgPSBuZXcgV2ViU29ja2V0KHVybCk7Cit3ZWJTb2NrZXQuYWRk
RXZlbnRMaXN0ZW5lcigib3BlbiIsIChldmVudCkgPT4geworICAgIC8vIE9ubHkgcnVuIHRoZSB0
ZXN0cyBvbmNlIHRoZSB3ZWJzb2NrZXQgaGFzIGNvbm5lY3RlZC4KKyAgICBydW5UZXN0KCk7Cit9
KTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJXZWJTb2NrZXQuQmVmb3JlTG9hZCIpOworCisgICAgZnVuY3Rpb24g
bG9nUmVhZHlTdGF0ZShyZWFkeVN0YXRlKSB7CisgICAgICAgIGxldCByZWFkeVN0YXRlU3RyaW5n
ID0gIiI7CisKKyAgICAgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7CisgICAgICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLlJlYWR5U3RhdGUuQ2xvc2VkOgorICAgICAgICAg
ICAgcmVhZHlTdGF0ZVN0cmluZyA9ICJjbG9zZWQiOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2UuUmVhZHlTdGF0ZS5Db25u
ZWN0aW5nOgorICAgICAgICAgICAgcmVhZHlTdGF0ZVN0cmluZyA9ICJjb25uZWN0aW5nIjsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLldlYlNvY2tldFJl
c291cmNlLlJlYWR5U3RhdGUuT3BlbjoKKyAgICAgICAgICAgIHJlYWR5U3RhdGVTdHJpbmcgPSAi
b3BlbiI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICB9CisKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coYFJlc291cmNlIGhhcyByZWFkeVN0YXRlICIke3JlYWR5U3RhdGVTdHJpbmd9
ImApOworICAgIH0KKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIldl
YlNvY2tldC5CZWZvcmVMb2FkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUZXN0IHRoYXQgdGhl
IGV4aXN0aW5nIHdlYnNvY2tldCBpcyBzZW50IHRvIHRoZSBmcm9udGVuZCB3aGVuIGl0IGlzIGZp
cnN0IG9wZW5lZC4iLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAg
ICAgY29uc3QgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5Ymkv
aW5zcGVjdG9yL2JlZm9yZS1sb2FkIjsKKyAgICAgICAgICAgIGxldCB3ZWJTb2NrZXRSZXNvdXJj
ZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVSTCh1cmwp
OworICAgICAgICAgICAgaWYgKCF3ZWJTb2NrZXRSZXNvdXJjZSkgeworICAgICAgICAgICAgICAg
IHJlamVjdCgiTWlzc2luZyBXZWJTb2NrZXQgcmVzb3VyY2UiKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VGhhdCh3ZWJTb2NrZXRSZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5XZWJTb2NrZXRS
ZXNvdXJjZSwgIlJlc291cmNlIGlzIGEgV2ViU29ja2V0Iik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHdlYlNvY2tldFJlc291cmNlLnVybCwgdXJsLCBgUmVzb3VyY2Ug
aGFzIGV4cGVjdGVkIFVSTCAiJHt1cmx9ImApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RUaGF0KCFpc0VtcHR5T2JqZWN0KHdlYlNvY2tldFJlc291cmNlLnJlcXVlc3RIZWFkZXJz
KSwgIlJlc291cmNlIGhhcyByZXF1ZXN0IGhlYWRlcnMiKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0VGhhdCghaXNFbXB0eU9iamVjdCh3ZWJTb2NrZXRSZXNvdXJjZS5yZXNwb25z
ZUhlYWRlcnMpLCAiUmVzb3VyY2UgaGFzIHJlc3BvbnNlIGhlYWRlcnMiKTsKKyAgICAgICAgICAg
IGxvZ1JlYWR5U3RhdGUod2ViU29ja2V0UmVzb3VyY2UucmVhZHlTdGF0ZSk7CisKKyAgICAgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUucnVuVGVzdENh
c2VzQW5kRmluaXNoKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ij4KKzxwPlRlc3RzIHRoYXQgV2ViU29ja2V0cyBjcmVh
dGVkIGJlZm9yZSB0aGUgaW5zcGVjdG9yIGxvYWRzIGFyZSBhbHNvIHRyYWNrZWQuPC9wPgorPC9i
b2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWRfd3NoLnB5IGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWRfd3No
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjBjZjFjYTA3NzdhZWE2MTUyNGY1MTQyNDEzNmEwYWE2ZWY1MmM2MDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0
cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZF93c2gucHkKQEAgLTAsMCArMSwxMSBAQAorZnJv
bSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKKworCitkZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcyAjIEFsd2F5cyBhY2NlcHQuCisKKwor
ZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICAjIEVjaG8gbWVzc2Fn
ZSBiYWNrCisgICAgbWVzc2FnZSA9IG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpCisg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgbWVzc2FnZSkK
</data>
<flag name="review"
          id="332739"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311794</attachid>
            <date>2017-06-01 19:06:46 -0700</date>
            <delta_ts>2017-06-01 19:44:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>172312.diff</filename>
            <type>text/plain</type>
            <size>20980</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZTQwNTI5ZDg4MS4uOTBjOGM1ZWEzZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxNy0wNi0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogU2hvdWxkIHNlZSBhY3RpdmUgV2ViIFNvY2tldHMgd2hlbiBvcGVuaW5n
IFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjMxMgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKwor
ICAgICAgICBUZXN0IHRoYXQgV2ViU29ja2V0cyBjcmVhdGVkIGJlZm9yZSB0aGUgaW5zcGVjdG9y
IGxvYWRzIGFyZSBhbHNvIHRyYWNrZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9y
ZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEpOgorCiAyMDE3LTA1LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRmxha3kgVGVzdDogaHR0cC90ZXN0cy9taXNjL2FjaWQzLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9y
L2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmRhNDI5NDVhZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhh
dCBXZWJTb2NrZXRzIGNyZWF0ZWQgYmVmb3JlIHRoZSBpbnNwZWN0b3IgbG9hZHMgYXJlIGFsc28g
dHJhY2tlZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFdlYlNvY2tldC5CZWZvcmVMb2Fk
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogV2ViU29ja2V0LkJlZm9yZUxvYWQKK1BBU1M6IFNob3Vs
ZCBoYXZlIDEgV2ViU29ja2V0UmVzb3VyY2UKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBhIFdl
YlNvY2tldC4KK1BBU1M6IFJlc291cmNlIFVSTCBzaG91bGQgYmUgIndzOi8vMTI3LjAuMC4xOjg4
ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkIi4KK1BBU1M6IFJl
c291cmNlIHNob3VsZCBoYXZlIHJlcXVlc3QgaGVhZGVycy4KK1BBU1M6IFJlc291cmNlIHNob3Vs
ZCBoYXZlIHJlc3BvbnNlIGhlYWRlcnMuCitSZXNvdXJjZSByZWFkeVN0YXRlIHNob3VsZCBiZSBT
eW1ib2wob3BlbikuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OTkzNTIyMDYxYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2luc3BlY3Rv
ci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvYWQoKQoreworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgY29u
c3QgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVj
dG9yL2JlZm9yZS1sb2FkIjsKKyAgICBsZXQgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwp
OworICAgIHdlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKCJvcGVuIiwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgIC8vIE9ubHkgcnVuIHRoZSB0ZXN0cyBvbmNlIHRoZSB3ZWJzb2NrZXQgaGFzIGNvbm5l
Y3RlZC4KKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIldlYlNv
Y2tldC5CZWZvcmVMb2FkIik7CisKKyAgICBmdW5jdGlvbiBsb2dSZWFkeVN0YXRlKHJlYWR5U3Rh
dGUpIHsKKyAgICAgICAgbGV0IHJlYWR5U3RhdGVTdHJpbmcgPSAiIjsKKworICAgICAgICBzd2l0
Y2ggKHJlYWR5U3RhdGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVz
b3VyY2UuUmVhZHlTdGF0ZS5DbG9zZWQ6CisgICAgICAgICAgICByZWFkeVN0YXRlU3RyaW5nID0g
ImNsb3NlZCI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5XZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlLkNvbm5lY3Rpbmc6CisgICAgICAgICAgICBy
ZWFkeVN0YXRlU3RyaW5nID0gImNvbm5lY3RpbmciOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2UuUmVhZHlTdGF0ZS5PcGVu
OgorICAgICAgICAgICAgcmVhZHlTdGF0ZVN0cmluZyA9ICJvcGVuIjsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgUmVzb3VyY2Ug
aGFzIHJlYWR5U3RhdGUgIiR7cmVhZHlTdGF0ZVN0cmluZ30iYCk7CisgICAgfQorCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiV2ViU29ja2V0LkJlZm9yZUxvYWQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCB0aGUgZXhpc3Rpbmcgd2Vic29ja2V0IGlz
IHNlbnQgdG8gdGhlIGZyb250ZW5kIHdoZW4gaXQgaXMgZmlyc3Qgb3BlbmVkLiIsCisgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBjb25zdCB1cmwgPSAid3M6Ly8x
MjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQi
OworICAgICAgICAgICAgbGV0IHdlYlNvY2tldFJlc291cmNlcyA9IFdlYkluc3BlY3Rvci5mcmFt
ZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlwZShXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbCh3ZWJTb2NrZXRSZXNvdXJjZXMuaXRlbXMuc2l6ZSwgMSwgIlNob3Vs
ZCBoYXZlIDEgV2ViU29ja2V0UmVzb3VyY2UiKTsKKworICAgICAgICAgICAgbGV0IHdlYlNvY2tl
dFJlc291cmNlID0gd2ViU29ja2V0UmVzb3VyY2VzLnRvQXJyYXkoKVswXTsKKyAgICAgICAgICAg
IGlmICghd2ViU29ja2V0UmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Np
bmcgV2ViU29ja2V0IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHdlYlNvY2tl
dFJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLCAiUmVz
b3VyY2Ugc2hvdWxkIGJlIGEgV2ViU29ja2V0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbCh3ZWJTb2NrZXRSZXNvdXJjZS51cmwsIHVybCwgYFJlc291cmNlIFVSTCBz
aG91bGQgYmUgIiR7dXJsfSIuYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoIWlzRW1wdHlPYmplY3Qod2ViU29ja2V0UmVzb3VyY2UucmVxdWVzdEhlYWRlcnMpLCAiUmVz
b3VyY2Ugc2hvdWxkIGhhdmUgcmVxdWVzdCBoZWFkZXJzLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KCFpc0VtcHR5T2JqZWN0KHdlYlNvY2tldFJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyksICJSZXNvdXJjZSBzaG91bGQgaGF2ZSByZXNwb25zZSBoZWFkZXJzLiIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFJlc291cmNlIHJlYWR5U3RhdGUgc2hvdWxk
IGJlICR7U3RyaW5nKHdlYlNvY2tldFJlc291cmNlLnJlYWR5U3RhdGUpfS5gKTsKKworICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJs
b2FkKCkiPgorPHA+VGVzdHMgdGhhdCBXZWJTb2NrZXRzIGNyZWF0ZWQgYmVmb3JlIHRoZSBpbnNw
ZWN0b3IgbG9hZHMgYXJlIGFsc28gdHJhY2tlZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZF93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZF93c2gucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBjZjFjYTA3NzdhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVm
b3JlLWxvYWRfd3NoLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBtc2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgorICAgIHBhc3MgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CisgICAgIyBFY2hvIG1lc3NhZ2UgYmFjaworICAgIG1lc3NhZ2Ug
PSBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KQorICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MTM4YzNkNGMuLjM5ZWE0N2Ri
NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTctMDYtMDEgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBz
ZWUgYWN0aXZlIFdlYiBTb2NrZXRzIHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpX
ZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpldmVudFRhcmdldEludGVyZmFjZSk6CisgICAgICAgIEFkZCBhIHN0YXRpYyBzZXQgb2Yg
YWxsIFdlYlNvY2tldCBvYmplY3RzIGFuZCBwcm92aWRlIGdldHRlcnMgdG8gYWNjZXNzIHdlYiBz
b2NrZXQgbWV0YWRhdGEuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjppc1dlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
aXNXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y2xpZW50
SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpz
ZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpoYW5kc2hha2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmlzVHlwZSk6CisgICAgICAgIFByb3ZpZGUgZ2V0dGVycyB0byBhY2Nlc3Mgd2ViIHNvY2tldCBt
ZXRhZGF0YS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUpOgorICAg
ICAgICBMb29wcyBvdmVyIHRoZSBzdGF0aWMgc2V0IG9mIGFsbCBXZWJTb2NrZXQgb2JqZWN0cyBh
bmQgc2VuZHMgZXZlbnRzIGZvciBlYWNoIHRvIHRoZSBmcm9udGVuZC4KKwogMjAxNy0wNS0zMSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBpdGVy
YXRvciBpbnZhbGlkYXRpb24gYnVnIGluIFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOTMyN2UyZjAyNGQuLmVkYzk2YjM3ZmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiwgU29ja2V0UHJvdmlk
ZXImKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgfQogCisgICAgdmlydHVh
bCBib29sIGlzV2ViU29ja2V0Q2hhbm5lbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAg
ICBlbnVtIFNlbmRSZXN1bHQgewogICAgICAgICBTZW5kU3VjY2VzcywKICAgICAgICAgU2VuZEZh
aWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
aW5kZXggMDhlMTJhMTYwMWMuLjUyNjQwZDE1ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTUxLDEwICsxNTIs
MTkgQEAgV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKICAgICAsIG1fZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1bWVUaW1l
cigqdGhpcywgJldlYlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkKIHsKKyAgICBMb2NrSG9sZGVy
IGxvY2soYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgYWxsQWN0aXZlV2ViU29j
a2V0cyhsb2NrKS5hZGQodGhpcyk7CiB9CiAKIFdlYlNvY2tldDo6fldlYlNvY2tldCgpCiB7Cisg
ICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkp
OworCisgICAgICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykucmVtb3ZlKHRoaXMpOworICAg
IH0KKwogICAgIGlmIChtX2NoYW5uZWwpCiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgp
OwogfQpAQCAtMTg0LDYgKzE5NCwxOCBAQCBFeGNlcHRpb25PcjxSZWY8V2ViU29ja2V0Pj4gV2Vi
U29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgIHJl
dHVybiBjcmVhdGUoY29udGV4dCwgdXJsLCBWZWN0b3I8U3RyaW5nPiB7IDEsIHByb3RvY29sIH0p
OwogfQogCitIYXNoU2V0PFdlYlNvY2tldCo+JiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tl
dHMoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8V2ViU29ja2V0Kj4+IGFjdGl2ZVdlYlNvY2tldHM7CisgICAgcmV0dXJuIGFjdGl2ZVdlYlNv
Y2tldHM7Cit9CisKK1N0YXRpY0xvY2smIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011
dGV4KCkKK3sKKyAgICBzdGF0aWMgU3RhdGljTG9jayBtdXRleDsKKyAgICByZXR1cm4gbXV0ZXg7
Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcm
IHVybCkKIHsKICAgICByZXR1cm4gY29ubmVjdCh1cmwsIFZlY3RvcjxTdHJpbmc+IHsgfSk7CkBA
IC00MDcsNiArNDI5LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y2xvc2Uoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gb3B0aW9uYWxDb2RlLCBjCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2NrZXQ6OmNo
YW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2NoYW5uZWw7Cit9CisKIGNvbnN0IFVSTCYg
V2ViU29ja2V0Ojp1cmwoKSBjb25zdAogewogICAgIHJldHVybiBtX3VybDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA3ZDQzZjA0MzYwZi4u
NmQxZTVhNjZkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNjIsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
KTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAorICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNv
Y2tldCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCk7CisKICAgICBlbnVtIFN0
YXRlIHsKICAgICAgICAgQ09OTkVDVElORyA9IDAsCiAgICAgICAgIE9QRU4gPSAxLApAQCAtODAs
NiArODUsOCBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9zZShzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKKyAg
ICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNoYW5uZWwoKSBjb25zdDsKKwog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CkBAIC05MCw2ICs5Nyw4IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgYmluYXJ5VHlwZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEJpbmFyeVR5cGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisKICAgICB1
c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKQEAg
LTEwOCw3ICsxMTcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MWQzY2NkZDcxNS4uNzE3NjQ2M2M0
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTgzMSw2ICs4MzEsMjEgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEKICAgICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRh
LnNpemUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCitSZXNvdXJjZVJlcXVl
c3QgV2ViU29ja2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KCk7Cit9CisKK2Nv
bnN0IFJlc291cmNlUmVzcG9uc2UmIFdlYlNvY2tldENoYW5uZWw6OnNlcnZlckhhbmRzaGFrZVJl
c3BvbnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPnNlcnZlckhhbmRzaGFr
ZVJlc3BvbnNlKCk7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRDaGFu
bmVsOjpoYW5kc2hha2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPm1v
ZGUoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAwMzY1OGM2MmYxYy4uZGRjYTNjNzNhNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDksMTEgKzUxLDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZpbGVSZWFkZXJMb2Fk
ZXI7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvcjsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7Ci1jbGFzcyBXZWJT
b2NrZXRIYW5kc2hha2U7CiAKIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCwg
cHVibGljIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLCBwdWJsaWMgRmlsZVJlYWRlckxvYWRl
ckNsaWVudAogewpAQCAtNjIsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJT
b2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50JiBjbGllbnQsIFNvY2tldFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQsIHByb3ZpZGVyKSk7IH0K
ICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKKyAgICBib29sIGlzV2ViU29ja2V0
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIGJvb2wgc2VuZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsIGZ1bmN0aW9ucy4KQEAgLTExMiw2ICsxMTcsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChpbnQgZXJy
b3JDb2RlKSBvdmVycmlkZTsKIAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtl
UmVxdWVzdCgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRz
aGFrZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlIGhhbmRz
aGFrZU1vZGUoKSBjb25zdDsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5l
bD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsK
IApAQCAtMjE5LDQgKzIyOSw4IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCYgdGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpIHsgcmV0dXJuIHRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmlzV2ViU29ja2V0Q2hhbm5lbCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IDk5MjcxZWNjYTNhLi5jN2NiODdhYzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTYwLDYgKzYwLDggQEAKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNsdWRl
ICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNs
dWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTY3LDYgKzY5LDcgQEAKICNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+
CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTY1NSw2ICs2NTgsMzEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSgp
CiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
SW5zcGVjdG9yTmV0d29ya0FnZW50KHRoaXMpOworCisgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNv
Y2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgZm9yIChXZWJTb2NrZXQq
IHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgeworICAg
ICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgfHwgIWlzPFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdldCgpKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgICAgIGlmIChkb2N1bWVudC0+cGFnZSgpICE9ICZtX3BhZ2VBZ2VudC0+cGFnZSgpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCogY2hhbm5lbCA9
IGRvd25jYXN0PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdldCgpKTsK
KyAgICAgICAgaWYgKCFjaGFubmVsKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKTsKKyAgICAgICAgZGlk
Q3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHdlYlNvY2tldC0+dXJsKCkpOworICAgICAgICB3
aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgY2hhbm5lbC0+Y2xp
ZW50SGFuZHNoYWtlUmVxdWVzdCgpKTsKKworICAgICAgICBpZiAoY2hhbm5lbC0+aGFuZHNoYWtl
TW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQorICAgICAgICAgICAgZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIGNoYW5uZWwtPnNl
cnZlckhhbmRzaGFrZVJlc3BvbnNlKCkpOworCisgICAgICAgIGlmICh3ZWJTb2NrZXQtPnJlYWR5
U3RhdGUoKSA9PSBXZWJTb2NrZXQ6OkNMT1NFRCkKKyAgICAgICAgICAgIGRpZENsb3NlV2ViU29j
a2V0KGlkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMmI1OWQy
MGQ1ZGUuLjM4ZDVlNDI1ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxNy0wNi0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxkIHNlZSBhY3RpdmUgV2ViIFNvY2tldHMgd2hlbiBv
cGVuaW5nIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjMxMgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJv
dG90eXBlLndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTogUmVt
b3ZlZC4KKyAgICAgICAgUmV3b3JrIG9yZGVyIG9mIGFnZW50IGVuYWJsZSBjYWxscyB0byBlbnN1
cmUgdGhhdCB0aGUgbWFpbiBmcmFtZSBpcyBpbml0aWFsaXplZCBiZWZvcmUgYW55CisgICAgICAg
IHdlYnNvY2tldCBldmVudHMgYXJlIGRpc3BhdGNoZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5X
ZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlKToKKyAgICAgICAgQ2hhbmdlIHN5bWJvbCBzdHJp
bmdzIGluIGVudW0gZm9yIGJldHRlciBwcmludGluZyBpbiB0ZXN0cy4KKwogMjAxNy0wNS0zMSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIERlYnVnIHZpZXcgdG8gU2V0dGluZ3MgdGFiIGZvciBkZWJ1ZyBzZXR0aW5ncyBhbmQg
ZXhwZXJpbWVudGFsIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmpzCmluZGV4IDc4YjMwOTUxNzMzLi5jNDljYTBiYmI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJj
ZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKQEAgLTI5LDM2ICsyOSwyNyBAQCBXZWJJ
bnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdl
ciBleHRlbmRzIFdlYkluc3BlYwogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICBp
ZiAod2luZG93LlBhZ2VBZ2VudCkKLSAgICAgICAgICAgIFBhZ2VBZ2VudC5lbmFibGUoKTsKLSAg
ICAgICAgaWYgKHdpbmRvdy5OZXR3b3JrQWdlbnQpCi0gICAgICAgICAgICBOZXR3b3JrQWdlbnQu
ZW5hYmxlKCk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLkV4dHJhRG9tYWluc0FjdGl2YXRlZCwg
dGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzKTsKLQotICAgICAgICB0aGlzLmluaXRp
YWxpemUoKTsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGluaXRpYWxpemUoKQotICAg
IHsKLSAgICAgICAgdmFyIG9sZE1haW5GcmFtZSA9IHRoaXMuX21haW5GcmFtZTsKLQogICAgICAg
ICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9tYWlu
RnJhbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFw
ID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMgPSBuZXcgTWFwOwog
ICAgICAgICB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwgPSBuZXcgTWFwOwogCi0gICAg
ICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKLSAgICAgICAgICAgIHRo
aXMuX21haW5GcmFtZURpZENoYW5nZShvbGRNYWluRnJhbWUpOwotCiAgICAgICAgIHRoaXMuX3dh
aXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkID0gdHJ1ZTsKLSAgICAgICAgaWYg
KHdpbmRvdy5QYWdlQWdlbnQpCisKKyAgICAgICAgaWYgKHdpbmRvdy5QYWdlQWdlbnQpIHsKKyAg
ICAgICAgICAgIFBhZ2VBZ2VudC5lbmFibGUoKTsKICAgICAgICAgICAgIFBhZ2VBZ2VudC5nZXRS
ZXNvdXJjZVRyZWUodGhpcy5fcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQuYmlu
ZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93Lk5ldHdvcmtBZ2VudCkK
KyAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5lbmFibGUoKTsKKworICAgICAgICBXZWJJbnNwZWN0
b3Iubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRp
b24uRXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRo
aXMpOwogICAgIH0KIAorICAgIC8vIFB1YmxpYworCiAgICAgZ2V0IG1haW5GcmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lOwpAQCAtMjQ2LDEyICsyMzcsMTMgQEAg
V2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1h
bmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdl
Ykluc3BlY3Rvci5XZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlLk9wZW47CiAKICAgICAgICAg
bGV0IGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxh
cHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxh
cHNlZFRpbWUpOwogCiAgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE2OTE2Nj4gV2Vi
IEluc3BlY3RvcjogV2ViU29ja2V0czogSW1wbGVtZW50IHRpbWluZyBpbmZvcm1hdGlvbgogICAg
ICAgICBsZXQgcmVzcG9uc2VUaW1pbmcgPSByZXNwb25zZS50aW1pbmcgfHwgbnVsbDsKIAogICAg
ICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNvdXJjZS51cmwsIHJlc291cmNlLm1p
bWVUeXBlLCByZXNvdXJjZS50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMs
IHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZVRpbWluZyk7CisKKyAg
ICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOwogICAgIH0KIAogICAg
IHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dl
YlNvY2tldFJlc291cmNlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1dlYlNvY2tldFJlc291cmNlLmpzCmluZGV4IGE5MWQ1NWE3NmYwLi41NmI1ZTk0ZWQ4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1dlYlNvY2tldFJlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qcwpAQCAtOTUsOSArOTUsOSBAQCBXZWJJ
bnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQgPSB7CiB9OwogCiBXZWJJbnNwZWN0b3Iu
V2ViU29ja2V0UmVzb3VyY2UuUmVhZHlTdGF0ZSA9IHsKLSAgICBDbG9zZWQ6IFN5bWJvbCgid2Vi
LXNvY2tldC1yZWFkeS1zdGF0ZS1jbG9zZWQiKSwKLSAgICBDb25uZWN0aW5nOiBTeW1ib2woIndl
Yi1zb2NrZXQtcmVhZHktc3RhdGUtY29ubmVjdGluZyIpLAotICAgIE9wZW46IFN5bWJvbCgid2Vi
LXNvY2tldC1yZWFkeS1zdGF0ZS1vcGVuIiksCisgICAgQ2xvc2VkOiBTeW1ib2woImNsb3NlZCIp
LAorICAgIENvbm5lY3Rpbmc6IFN5bWJvbCgiY29ubmVjdGluZyIpLAorICAgIE9wZW46IFN5bWJv
bCgib3BlbiIpLAogfTsKIAogV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLk9wQ29kZXMg
PSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311828</attachid>
            <date>2017-06-02 08:48:08 -0700</date>
            <delta_ts>2017-06-02 10:54:51 -0700</delta_ts>
            <desc>Patch [After Rollout]</desc>
            <filename>172312.diff</filename>
            <type>text/plain</type>
            <size>20980</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlZTQwNTI5ZDg4MS4uOTBjOGM1ZWEzZDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAxNy0wNi0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogU2hvdWxkIHNlZSBhY3RpdmUgV2ViIFNvY2tldHMgd2hlbiBvcGVuaW5n
IFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3MjMxMgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFyby4KKwor
ICAgICAgICBUZXN0IHRoYXQgV2ViU29ja2V0cyBjcmVhdGVkIGJlZm9yZSB0aGUgaW5zcGVjdG9y
IGxvYWRzIGFyZSBhbHNvIHRyYWNrZWQuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9y
ZS1sb2FkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkX3dzaC5weTogQWRkZWQuCisgICAgICAgICh3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6CisgICAgICAgICh3ZWJfc29ja2V0X3RyYW5zZmVy
X2RhdGEpOgorCiAyMDE3LTA1LTMxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRmxha3kgVGVzdDogaHR0cC90ZXN0cy9taXNjL2FjaWQzLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9y
L2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmRhNDI5NDVhZDkKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdHMgdGhh
dCBXZWJTb2NrZXRzIGNyZWF0ZWQgYmVmb3JlIHRoZSBpbnNwZWN0b3IgbG9hZHMgYXJlIGFsc28g
dHJhY2tlZC4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IFdlYlNvY2tldC5CZWZvcmVMb2Fk
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogV2ViU29ja2V0LkJlZm9yZUxvYWQKK1BBU1M6IFNob3Vs
ZCBoYXZlIDEgV2ViU29ja2V0UmVzb3VyY2UKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBhIFdl
YlNvY2tldC4KK1BBU1M6IFJlc291cmNlIFVSTCBzaG91bGQgYmUgIndzOi8vMTI3LjAuMC4xOjg4
ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkIi4KK1BBU1M6IFJl
c291cmNlIHNob3VsZCBoYXZlIHJlcXVlc3QgaGVhZGVycy4KK1BBU1M6IFJlc291cmNlIHNob3Vs
ZCBoYXZlIHJlc3BvbnNlIGhlYWRlcnMuCitSZXNvdXJjZSByZWFkeVN0YXRlIHNob3VsZCBiZSBT
eW1ib2wob3BlbikuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2h5YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZC5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43OTkzNTIyMDYxYQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd2Vic29ja2V0L3Rlc3RzL2h5
YmkvaW5zcGVjdG9yL2JlZm9yZS1sb2FkLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2luc3BlY3Rv
ci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvYWQoKQoreworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgY29u
c3QgdXJsID0gIndzOi8vMTI3LjAuMC4xOjg4ODAvd2Vic29ja2V0L3Rlc3RzL2h5YmkvaW5zcGVj
dG9yL2JlZm9yZS1sb2FkIjsKKyAgICBsZXQgd2ViU29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwp
OworICAgIHdlYlNvY2tldC5hZGRFdmVudExpc3RlbmVyKCJvcGVuIiwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgIC8vIE9ubHkgcnVuIHRoZSB0ZXN0cyBvbmNlIHRoZSB3ZWJzb2NrZXQgaGFzIGNvbm5l
Y3RlZC4KKyAgICAgICAgcnVuVGVzdCgpOworICAgIH0pOworfQorCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIldlYlNv
Y2tldC5CZWZvcmVMb2FkIik7CisKKyAgICBmdW5jdGlvbiBsb2dSZWFkeVN0YXRlKHJlYWR5U3Rh
dGUpIHsKKyAgICAgICAgbGV0IHJlYWR5U3RhdGVTdHJpbmcgPSAiIjsKKworICAgICAgICBzd2l0
Y2ggKHJlYWR5U3RhdGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVz
b3VyY2UuUmVhZHlTdGF0ZS5DbG9zZWQ6CisgICAgICAgICAgICByZWFkeVN0YXRlU3RyaW5nID0g
ImNsb3NlZCI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5XZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlLkNvbm5lY3Rpbmc6CisgICAgICAgICAgICBy
ZWFkeVN0YXRlU3RyaW5nID0gImNvbm5lY3RpbmciOworICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2UuUmVhZHlTdGF0ZS5PcGVu
OgorICAgICAgICAgICAgcmVhZHlTdGF0ZVN0cmluZyA9ICJvcGVuIjsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIH0KKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgUmVzb3VyY2Ug
aGFzIHJlYWR5U3RhdGUgIiR7cmVhZHlTdGF0ZVN0cmluZ30iYCk7CisgICAgfQorCisgICAgc3Vp
dGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiV2ViU29ja2V0LkJlZm9yZUxvYWQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRlc3QgdGhhdCB0aGUgZXhpc3Rpbmcgd2Vic29ja2V0IGlz
IHNlbnQgdG8gdGhlIGZyb250ZW5kIHdoZW4gaXQgaXMgZmlyc3Qgb3BlbmVkLiIsCisgICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBjb25zdCB1cmwgPSAid3M6Ly8x
MjcuMC4wLjE6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQi
OworICAgICAgICAgICAgbGV0IHdlYlNvY2tldFJlc291cmNlcyA9IFdlYkluc3BlY3Rvci5mcmFt
ZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUucmVzb3VyY2VDb2xsZWN0aW9uRm9yVHlwZShXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbCh3ZWJTb2NrZXRSZXNvdXJjZXMuaXRlbXMuc2l6ZSwgMSwgIlNob3Vs
ZCBoYXZlIDEgV2ViU29ja2V0UmVzb3VyY2UiKTsKKworICAgICAgICAgICAgbGV0IHdlYlNvY2tl
dFJlc291cmNlID0gd2ViU29ja2V0UmVzb3VyY2VzLnRvQXJyYXkoKVswXTsKKyAgICAgICAgICAg
IGlmICghd2ViU29ja2V0UmVzb3VyY2UpIHsKKyAgICAgICAgICAgICAgICByZWplY3QoIk1pc3Np
bmcgV2ViU29ja2V0IHJlc291cmNlLiIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KHdlYlNvY2tl
dFJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLCAiUmVz
b3VyY2Ugc2hvdWxkIGJlIGEgV2ViU29ja2V0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbCh3ZWJTb2NrZXRSZXNvdXJjZS51cmwsIHVybCwgYFJlc291cmNlIFVSTCBz
aG91bGQgYmUgIiR7dXJsfSIuYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRo
YXQoIWlzRW1wdHlPYmplY3Qod2ViU29ja2V0UmVzb3VyY2UucmVxdWVzdEhlYWRlcnMpLCAiUmVz
b3VyY2Ugc2hvdWxkIGhhdmUgcmVxdWVzdCBoZWFkZXJzLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RUaGF0KCFpc0VtcHR5T2JqZWN0KHdlYlNvY2tldFJlc291cmNlLnJlc3Bv
bnNlSGVhZGVycyksICJSZXNvdXJjZSBzaG91bGQgaGF2ZSByZXNwb25zZSBoZWFkZXJzLiIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYFJlc291cmNlIHJlYWR5U3RhdGUgc2hvdWxk
IGJlICR7U3RyaW5nKHdlYlNvY2tldFJlc291cmNlLnJlYWR5U3RhdGUpfS5gKTsKKworICAgICAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJs
b2FkKCkiPgorPHA+VGVzdHMgdGhhdCBXZWJTb2NrZXRzIGNyZWF0ZWQgYmVmb3JlIHRoZSBpbnNw
ZWN0b3IgbG9hZHMgYXJlIGFsc28gdHJhY2tlZC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tldC90ZXN0cy9oeWJpL2luc3Bl
Y3Rvci9iZWZvcmUtbG9hZF93c2gucHkgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL2luc3BlY3Rvci9iZWZvcmUtbG9hZF93c2gucHkKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBjZjFjYTA3NzdhCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVm
b3JlLWxvYWRfd3NoLnB5CkBAIC0wLDAgKzEsMTEgQEAKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGlt
cG9ydCBtc2d1dGlsCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgorICAgIHBhc3MgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEocmVxdWVzdCk6CisgICAgIyBFY2hvIG1lc3NhZ2UgYmFjaworICAgIG1lc3NhZ2Ug
PSBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KQorICAgIG1zZ3V0aWwuc2VuZF9tZXNz
YWdlKHJlcXVlc3QsIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmU0MTM4YzNkNGMuLjM5ZWE0N2Ri
NDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTctMDYtMDEgIERldmluIFJvdXNz
byAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNob3VsZCBz
ZWUgYWN0aXZlIFdlYiBTb2NrZXRzIHdoZW4gb3BlbmluZyBXZWIgSW5zcGVjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIzMTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgVGVzdDogaHR0cC90ZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaHliaS9pbnNwZWN0b3IvYmVmb3JlLWxvYWQuaHRtbAorCisgICAg
ICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5oOgorICAgICAgICAqIE1vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0OjpX
ZWJTb2NrZXQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Ojp+V2ViU29ja2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tldHNNdXRleCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OmNoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0OjpldmVudFRhcmdldEludGVyZmFjZSk6CisgICAgICAgIEFkZCBhIHN0YXRpYyBzZXQgb2Yg
YWxsIFdlYlNvY2tldCBvYmplY3RzIGFuZCBwcm92aWRlIGdldHRlcnMgdG8gYWNjZXNzIHdlYiBz
b2NrZXQgbWV0YWRhdGEuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsOjppc1dlYlNvY2tldENoYW5uZWwpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29j
a2V0cy9XZWJTb2NrZXRDaGFubmVsLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6
aXNXZWJTb2NrZXRDaGFubmVsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6Y2xpZW50
SGFuZHNoYWtlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVsOjpz
ZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRDaGFu
bmVsOjpoYW5kc2hha2VNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OmlzVHlwZSk6CisgICAgICAgIFByb3ZpZGUgZ2V0dGVycyB0byBhY2Nlc3Mgd2ViIHNvY2tldCBt
ZXRhZGF0YS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjplbmFibGUpOgorICAg
ICAgICBMb29wcyBvdmVyIHRoZSBzdGF0aWMgc2V0IG9mIGFsbCBXZWJTb2NrZXQgb2JqZWN0cyBh
bmQgc2VuZHMgZXZlbnRzIGZvciBlYWNoIHRvIHRoZSBmcm9udGVuZC4KKwogMjAxNy0wNS0zMSAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBdm9pZCBpdGVy
YXRvciBpbnZhbGlkYXRpb24gYnVnIGluIFdlYkNvcmU6OmRlZmF1bHRQb3J0Rm9yUHJvdG9jb2wK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9UaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1Ro
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgKaW5kZXggOTMyN2UyZjAyNGQuLmVkYzk2YjM3ZmIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvVGhyZWFkYWJs
ZVdlYlNvY2tldENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaApAQCAtNTMsNiArNTMsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlZjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbD4gY3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJTb2NrZXRDaGFubmVsQ2xpZW50JiwgU29ja2V0UHJvdmlk
ZXImKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbCgpIHsgfQogCisgICAgdmlydHVh
bCBib29sIGlzV2ViU29ja2V0Q2hhbm5lbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICAg
ICBlbnVtIFNlbmRSZXN1bHQgewogICAgICAgICBTZW5kU3VjY2VzcywKICAgICAgICAgU2VuZEZh
aWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
aW5kZXggMDhlMTJhMTYwMWMuLjUyNjQwZDE1ZGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1
ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVy
Vmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL05ldmVyRGVz
dHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMTUxLDEwICsxNTIs
MTkgQEAgV2ViU29ja2V0OjpXZWJTb2NrZXQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKICAgICAsIG1fZXh0ZW5zaW9ucyhlbXB0eVN0cmluZygpKQogICAgICwgbV9yZXN1bWVUaW1l
cigqdGhpcywgJldlYlNvY2tldDo6cmVzdW1lVGltZXJGaXJlZCkKIHsKKyAgICBMb2NrSG9sZGVy
IGxvY2soYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgYWxsQWN0aXZlV2ViU29j
a2V0cyhsb2NrKS5hZGQodGhpcyk7CiB9CiAKIFdlYlNvY2tldDo6fldlYlNvY2tldCgpCiB7Cisg
ICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2soYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkp
OworCisgICAgICAgIGFsbEFjdGl2ZVdlYlNvY2tldHMobG9jaykucmVtb3ZlKHRoaXMpOworICAg
IH0KKwogICAgIGlmIChtX2NoYW5uZWwpCiAgICAgICAgIG1fY2hhbm5lbC0+ZGlzY29ubmVjdCgp
OwogfQpAQCAtMTg0LDYgKzE5NCwxOCBAQCBFeGNlcHRpb25PcjxSZWY8V2ViU29ja2V0Pj4gV2Vi
U29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgYwogICAgIHJl
dHVybiBjcmVhdGUoY29udGV4dCwgdXJsLCBWZWN0b3I8U3RyaW5nPiB7IDEsIHByb3RvY29sIH0p
OwogfQogCitIYXNoU2V0PFdlYlNvY2tldCo+JiBXZWJTb2NrZXQ6OmFsbEFjdGl2ZVdlYlNvY2tl
dHMoY29uc3QgTG9ja0hvbGRlciYpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hT
ZXQ8V2ViU29ja2V0Kj4+IGFjdGl2ZVdlYlNvY2tldHM7CisgICAgcmV0dXJuIGFjdGl2ZVdlYlNv
Y2tldHM7Cit9CisKK1N0YXRpY0xvY2smIFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011
dGV4KCkKK3sKKyAgICBzdGF0aWMgU3RhdGljTG9jayBtdXRleDsKKyAgICByZXR1cm4gbXV0ZXg7
Cit9CisKIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y29ubmVjdChjb25zdCBTdHJpbmcm
IHVybCkKIHsKICAgICByZXR1cm4gY29ubmVjdCh1cmwsIFZlY3RvcjxTdHJpbmc+IHsgfSk7CkBA
IC00MDcsNiArNDI5LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYlNvY2tldDo6Y2xvc2Uoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZCBzaG9ydD4gb3B0aW9uYWxDb2RlLCBjCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAorUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsPiBXZWJTb2NrZXQ6OmNo
YW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2NoYW5uZWw7Cit9CisKIGNvbnN0IFVSTCYg
V2ViU29ja2V0Ojp1cmwoKSBjb25zdAogewogICAgIHJldHVybiBtX3VybDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuaAppbmRleCA3ZDQzZjA0MzYwZi4u
NmQxZTVhNjZkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0LmgKQEAgLTM5LDYgKzM5LDggQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJX
ZWJTb2NrZXRDaGFubmVsQ2xpZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEFycmF5QnVmZmVyOwpAQCAtNjIsNiArNjQsOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxXZWJTb2NrZXQ+PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
KTsKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXQoKTsKIAorICAgIHN0YXRpYyBIYXNoU2V0PFdlYlNv
Y2tldCo+JiBhbGxBY3RpdmVXZWJTb2NrZXRzKGNvbnN0IExvY2tIb2xkZXImKTsKKyAgICBzdGF0
aWMgU3RhdGljTG9jayYgYWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCk7CisKICAgICBlbnVtIFN0
YXRlIHsKICAgICAgICAgQ09OTkVDVElORyA9IDAsCiAgICAgICAgIE9QRU4gPSAxLApAQCAtODAs
NiArODUsOCBAQCBwdWJsaWM6CiAKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbG9zZShzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkIHNob3J0PiBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbik7CiAKKyAg
ICBSZWZQdHI8VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw+IGNoYW5uZWwoKSBjb25zdDsKKwog
ICAgIGNvbnN0IFVSTCYgdXJsKCkgY29uc3Q7CiAgICAgU3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogICAgIHVuc2lnbmVkIGJ1ZmZlcmVkQW1vdW50KCkgY29uc3Q7CkBAIC05MCw2ICs5Nyw4IEBA
IHB1YmxpYzoKICAgICBTdHJpbmcgYmluYXJ5VHlwZSgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldEJpbmFyeVR5cGUoY29uc3QgU3RyaW5nJik7CiAKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgZmluYWw7CisKICAgICB1
c2luZyBSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKQEAg
LTEwOCw3ICsxMTcsNiBAQCBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBmaW5hbDsKIAogICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFy
Z2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWw7Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVu
dFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7IH0KICAgICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBm
aW5hbCB7IGRlcmVmKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA2MWQzY2NkZDcxNS4uNzE3NjQ2M2M0
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKQEAgLTgzMSw2ICs4MzEsMjEgQEAgdm9pZCBXZWJTb2NrZXRDaGFu
bmVsOjpzZW5kRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZSBvcENvZGUsIGNvbnN0IGNoYXIq
IGRhdGEKICAgICBtX2hhbmRsZS0+c2VuZERhdGEoZnJhbWVEYXRhLmRhdGEoKSwgZnJhbWVEYXRh
LnNpemUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCitSZXNvdXJjZVJlcXVl
c3QgV2ViU29ja2V0Q2hhbm5lbDo6Y2xpZW50SGFuZHNoYWtlUmVxdWVzdCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1faGFuZHNoYWtlLT5jbGllbnRIYW5kc2hha2VSZXF1ZXN0KCk7Cit9CisKK2Nv
bnN0IFJlc291cmNlUmVzcG9uc2UmIFdlYlNvY2tldENoYW5uZWw6OnNlcnZlckhhbmRzaGFrZVJl
c3BvbnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPnNlcnZlckhhbmRzaGFr
ZVJlc3BvbnNlKCk7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZTo6TW9kZSBXZWJTb2NrZXRDaGFu
bmVsOjpoYW5kc2hha2VNb2RlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oYW5kc2hha2UtPm1v
ZGUoKTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmICAvLyBFTkFCTEUo
V0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tl
dHMvV2ViU29ja2V0Q2hhbm5lbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWwuaAppbmRleCAwMzY1OGM2MmYxYy4uZGRjYTNjNzNhNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVs
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuaApAQCAtMzgsOSArMzgsMTEgQEAKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldl
YlNvY2tldERlZmxhdGVGcmFtZXIuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRGcmFtZS5oIgorI2lu
Y2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZS5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtNDksMTEgKzUxLDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEJsb2I7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEZpbGVSZWFkZXJMb2Fk
ZXI7CitjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CitjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogY2xh
c3MgU29ja2V0UHJvdmlkZXI7CiBjbGFzcyBTb2NrZXRTdHJlYW1IYW5kbGU7CiBjbGFzcyBTb2Nr
ZXRTdHJlYW1FcnJvcjsKIGNsYXNzIFdlYlNvY2tldENoYW5uZWxDbGllbnQ7Ci1jbGFzcyBXZWJT
b2NrZXRIYW5kc2hha2U7CiAKIGNsYXNzIFdlYlNvY2tldENoYW5uZWwgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJTb2NrZXRDaGFubmVsPiwgcHVibGljIFNvY2tldFN0cmVhbUhhbmRsZUNsaWVudCwg
cHVibGljIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLCBwdWJsaWMgRmlsZVJlYWRlckxvYWRl
ckNsaWVudAogewpAQCAtNjIsNiArNjUsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxXZWJT
b2NrZXRDaGFubmVsPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJTb2NrZXRDaGFubmVs
Q2xpZW50JiBjbGllbnQsIFNvY2tldFByb3ZpZGVyJiBwcm92aWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJTb2NrZXRDaGFubmVsKGRvY3VtZW50LCBjbGllbnQsIHByb3ZpZGVyKSk7IH0K
ICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRDaGFubmVsKCk7CiAKKyAgICBib29sIGlzV2ViU29ja2V0
Q2hhbm5lbCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KKwogICAgIGJvb2wgc2VuZChj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsKIAogICAgIC8vIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsIGZ1bmN0aW9ucy4KQEAgLTExMiw2ICsxMTcsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgZGlkRmluaXNoTG9hZGluZygpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkRmFpbChpbnQgZXJy
b3JDb2RlKSBvdmVycmlkZTsKIAorICAgIHVuc2lnbmVkIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50aWZpZXI7IH0KKyAgICBSZXNvdXJjZVJlcXVlc3QgY2xpZW50SGFuZHNoYWtl
UmVxdWVzdCgpIGNvbnN0OworICAgIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHNlcnZlckhhbmRz
aGFrZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgV2ViU29ja2V0SGFuZHNoYWtlOjpNb2RlIGhhbmRz
aGFrZU1vZGUoKSBjb25zdDsKKwogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViU29ja2V0Q2hhbm5l
bD46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlNvY2tldENoYW5uZWw+OjpkZXJlZjsK
IApAQCAtMjE5LDQgKzIyOSw4IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpXZWJTb2NrZXRDaGFubmVs
KQorICAgIHN0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbCYgdGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwpIHsgcmV0dXJuIHRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmlzV2ViU29ja2V0Q2hhbm5lbCgpOyB9CitTUEVDSUFMSVpFX1RZ
UEVfVFJBSVRTX0VORCgpCisKICNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IDk5MjcxZWNjYTNhLi5jN2NiODdhYzc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTYwLDYgKzYwLDggQEAKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXJDbGll
bnQuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXQuaCIKKyNpbmNsdWRl
ICJXZWJTb2NrZXRDaGFubmVsLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0RnJhbWUuaCIKICNpbmNs
dWRlIDxpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUgPGluc3Bl
Y3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KQEAgLTY3LDYgKzY5LDcgQEAKICNpbmNsdWRlIDxp
bnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFjay5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+
CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTY1NSw2ICs2NTgsMzEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmVuYWJsZSgp
CiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0
SW5zcGVjdG9yTmV0d29ya0FnZW50KHRoaXMpOworCisgICAgTG9ja0hvbGRlciBsb2NrKFdlYlNv
Y2tldDo6YWxsQWN0aXZlV2ViU29ja2V0c011dGV4KCkpOworCisgICAgZm9yIChXZWJTb2NrZXQq
IHdlYlNvY2tldCA6IFdlYlNvY2tldDo6YWxsQWN0aXZlV2ViU29ja2V0cyhsb2NrKSkgeworICAg
ICAgICBpZiAoIWlzPERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KSkgfHwgIWlzPFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdldCgpKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGRv
d25jYXN0PERvY3VtZW50Pih3ZWJTb2NrZXQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7Cisg
ICAgICAgIGlmIChkb2N1bWVudC0+cGFnZSgpICE9ICZtX3BhZ2VBZ2VudC0+cGFnZSgpKQorICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgV2ViU29ja2V0Q2hhbm5lbCogY2hhbm5lbCA9
IGRvd25jYXN0PFdlYlNvY2tldENoYW5uZWw+KHdlYlNvY2tldC0+Y2hhbm5lbCgpLmdldCgpKTsK
KyAgICAgICAgaWYgKCFjaGFubmVsKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllciA9IGNoYW5uZWwtPmlkZW50aWZpZXIoKTsKKyAgICAgICAgZGlk
Q3JlYXRlV2ViU29ja2V0KGlkZW50aWZpZXIsIHdlYlNvY2tldC0+dXJsKCkpOworICAgICAgICB3
aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QoaWRlbnRpZmllciwgY2hhbm5lbC0+Y2xp
ZW50SGFuZHNoYWtlUmVxdWVzdCgpKTsKKworICAgICAgICBpZiAoY2hhbm5lbC0+aGFuZHNoYWtl
TW9kZSgpID09IFdlYlNvY2tldEhhbmRzaGFrZTo6Q29ubmVjdGVkKQorICAgICAgICAgICAgZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIGNoYW5uZWwtPnNl
cnZlckhhbmRzaGFrZVJlc3BvbnNlKCkpOworCisgICAgICAgIGlmICh3ZWJTb2NrZXQtPnJlYWR5
U3RhdGUoKSA9PSBXZWJTb2NrZXQ6OkNMT1NFRCkKKyAgICAgICAgICAgIGRpZENsb3NlV2ViU29j
a2V0KGlkZW50aWZpZXIpOworICAgIH0KIH0KIAogdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpc2FibGUoRXJyb3JTdHJpbmcmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggMmI1OWQy
MGQ1ZGUuLjM4ZDVlNDI1ZGIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAxNy0wNi0wMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViIEluc3BlY3RvcjogU2hvdWxkIHNlZSBhY3RpdmUgV2ViIFNvY2tldHMgd2hlbiBv
cGVuaW5nIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3MjMxMgorCisgICAgICAgIFJldmlld2VkIGJ5IEpvc2VwaCBQZWNvcmFy
by4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1h
bmFnZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIucHJv
dG90eXBlLndlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplKTogUmVt
b3ZlZC4KKyAgICAgICAgUmV3b3JrIG9yZGVyIG9mIGFnZW50IGVuYWJsZSBjYWxscyB0byBlbnN1
cmUgdGhhdCB0aGUgbWFpbiBmcmFtZSBpcyBpbml0aWFsaXplZCBiZWZvcmUgYW55CisgICAgICAg
IHdlYnNvY2tldCBldmVudHMgYXJlIGRpc3BhdGNoZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5X
ZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlKToKKyAgICAgICAgQ2hhbmdlIHN5bWJvbCBzdHJp
bmdzIGluIGVudW0gZm9yIGJldHRlciBwcmludGluZyBpbiB0ZXN0cy4KKwogMjAxNy0wNS0zMSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogQWRkIERlYnVnIHZpZXcgdG8gU2V0dGluZ3MgdGFiIGZvciBkZWJ1ZyBzZXR0aW5ncyBhbmQg
ZXhwZXJpbWVudGFsIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9GcmFtZVJlc291cmNlTWFuYWdlci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0ZyYW1lUmVzb3VyY2VN
YW5hZ2VyLmpzCmluZGV4IDc4YjMwOTUxNzMzLi5jNDljYTBiYmI3MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRnJhbWVSZXNvdXJj
ZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvRnJhbWVSZXNvdXJjZU1hbmFnZXIuanMKQEAgLTI5LDM2ICsyOSwyNyBAQCBXZWJJ
bnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIgPSBjbGFzcyBGcmFtZVJlc291cmNlTWFuYWdl
ciBleHRlbmRzIFdlYkluc3BlYwogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICBp
ZiAod2luZG93LlBhZ2VBZ2VudCkKLSAgICAgICAgICAgIFBhZ2VBZ2VudC5lbmFibGUoKTsKLSAg
ICAgICAgaWYgKHdpbmRvdy5OZXR3b3JrQWdlbnQpCi0gICAgICAgICAgICBOZXR3b3JrQWdlbnQu
ZW5hYmxlKCk7Ci0KLSAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLkV4dHJhRG9tYWluc0FjdGl2YXRlZCwg
dGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzKTsKLQotICAgICAgICB0aGlzLmluaXRp
YWxpemUoKTsKLSAgICB9Ci0KLSAgICAvLyBQdWJsaWMKLQotICAgIGluaXRpYWxpemUoKQotICAg
IHsKLSAgICAgICAgdmFyIG9sZE1haW5GcmFtZSA9IHRoaXMuX21haW5GcmFtZTsKLQogICAgICAg
ICB0aGlzLl9mcmFtZUlkZW50aWZpZXJNYXAgPSBuZXcgTWFwOwogICAgICAgICB0aGlzLl9tYWlu
RnJhbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9yZXNvdXJjZVJlcXVlc3RJZGVudGlmaWVyTWFw
ID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5fb3JwaGFuZWRSZXNvdXJjZXMgPSBuZXcgTWFwOwog
ICAgICAgICB0aGlzLl93ZWJTb2NrZXRJZGVudGlmaWVyVG9VUkwgPSBuZXcgTWFwOwogCi0gICAg
ICAgIGlmICh0aGlzLl9tYWluRnJhbWUgIT09IG9sZE1haW5GcmFtZSkKLSAgICAgICAgICAgIHRo
aXMuX21haW5GcmFtZURpZENoYW5nZShvbGRNYWluRnJhbWUpOwotCiAgICAgICAgIHRoaXMuX3dh
aXRpbmdGb3JNYWluRnJhbWVSZXNvdXJjZVRyZWVQYXlsb2FkID0gdHJ1ZTsKLSAgICAgICAgaWYg
KHdpbmRvdy5QYWdlQWdlbnQpCisKKyAgICAgICAgaWYgKHdpbmRvdy5QYWdlQWdlbnQpIHsKKyAg
ICAgICAgICAgIFBhZ2VBZ2VudC5lbmFibGUoKTsKICAgICAgICAgICAgIFBhZ2VBZ2VudC5nZXRS
ZXNvdXJjZVRyZWUodGhpcy5fcHJvY2Vzc01haW5GcmFtZVJlc291cmNlVHJlZVBheWxvYWQuYmlu
ZCh0aGlzKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAod2luZG93Lk5ldHdvcmtBZ2VudCkK
KyAgICAgICAgICAgIE5ldHdvcmtBZ2VudC5lbmFibGUoKTsKKworICAgICAgICBXZWJJbnNwZWN0
b3Iubm90aWZpY2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRp
b24uRXh0cmFEb21haW5zQWN0aXZhdGVkLCB0aGlzLl9leHRyYURvbWFpbnNBY3RpdmF0ZWQsIHRo
aXMpOwogICAgIH0KIAorICAgIC8vIFB1YmxpYworCiAgICAgZ2V0IG1haW5GcmFtZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fbWFpbkZyYW1lOwpAQCAtMjQ2LDEyICsyMzcsMTMgQEAg
V2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyID0gY2xhc3MgRnJhbWVSZXNvdXJjZU1h
bmFnZXIgZXh0ZW5kcyBXZWJJbnNwZWMKICAgICAgICAgcmVzb3VyY2UucmVhZHlTdGF0ZSA9IFdl
Ykluc3BlY3Rvci5XZWJTb2NrZXRSZXNvdXJjZS5SZWFkeVN0YXRlLk9wZW47CiAKICAgICAgICAg
bGV0IGVsYXBzZWRUaW1lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5jb21wdXRlRWxh
cHNlZFRpbWUodGltZXN0YW1wKTsKLSAgICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxh
cHNlZFRpbWUpOwogCiAgICAgICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzE2OTE2Nj4gV2Vi
IEluc3BlY3RvcjogV2ViU29ja2V0czogSW1wbGVtZW50IHRpbWluZyBpbmZvcm1hdGlvbgogICAg
ICAgICBsZXQgcmVzcG9uc2VUaW1pbmcgPSByZXNwb25zZS50aW1pbmcgfHwgbnVsbDsKIAogICAg
ICAgICByZXNvdXJjZS51cGRhdGVGb3JSZXNwb25zZShyZXNvdXJjZS51cmwsIHJlc291cmNlLm1p
bWVUeXBlLCByZXNvdXJjZS50eXBlLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5zdGF0dXMs
IHJlc3BvbnNlLnN0YXR1c1RleHQsIGVsYXBzZWRUaW1lLCByZXNwb25zZVRpbWluZyk7CisKKyAg
ICAgICAgcmVzb3VyY2UubWFya0FzRmluaXNoZWQoZWxhcHNlZFRpbWUpOwogICAgIH0KIAogICAg
IHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1dl
YlNvY2tldFJlc291cmNlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1dlYlNvY2tldFJlc291cmNlLmpzCmluZGV4IGE5MWQ1NWE3NmYwLi41NmI1ZTk0ZWQ4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1dlYlNvY2tldFJlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9XZWJTb2NrZXRSZXNvdXJjZS5qcwpAQCAtOTUsOSArOTUsOSBAQCBXZWJJ
bnNwZWN0b3IuV2ViU29ja2V0UmVzb3VyY2UuRXZlbnQgPSB7CiB9OwogCiBXZWJJbnNwZWN0b3Iu
V2ViU29ja2V0UmVzb3VyY2UuUmVhZHlTdGF0ZSA9IHsKLSAgICBDbG9zZWQ6IFN5bWJvbCgid2Vi
LXNvY2tldC1yZWFkeS1zdGF0ZS1jbG9zZWQiKSwKLSAgICBDb25uZWN0aW5nOiBTeW1ib2woIndl
Yi1zb2NrZXQtcmVhZHktc3RhdGUtY29ubmVjdGluZyIpLAotICAgIE9wZW46IFN5bWJvbCgid2Vi
LXNvY2tldC1yZWFkeS1zdGF0ZS1vcGVuIiksCisgICAgQ2xvc2VkOiBTeW1ib2woImNsb3NlZCIp
LAorICAgIENvbm5lY3Rpbmc6IFN5bWJvbCgiY29ubmVjdGluZyIpLAorICAgIE9wZW46IFN5bWJv
bCgib3BlbiIpLAogfTsKIAogV2ViSW5zcGVjdG9yLldlYlNvY2tldFJlc291cmNlLk9wQ29kZXMg
PSB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>