<?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>38728</bug_id>
          
          <creation_ts>2010-05-07 00:17:20 -0700</creation_ts>
          <short_desc>WebSocket: Add WebSocketHandshakeResponse</short_desc>
          <delta_ts>2010-06-23 00:38:27 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>35572</dependson>
          <blocked>38831</blocked>
    
    <blocked>40768</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>morrita</cc>
    
    <cc>ukai</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222213</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-07 00:17:20 -0700</bug_when>
    <thetext>In https://bugs.webkit.org/show_bug.cgi?id=34784, WebSocketHandshakeRequest class was added (to help passing handshake information to Web Inspector). We also want WebSocketHandshakeResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222214</commentid>
    <comment_count>1</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-07 00:22:23 -0700</bug_when>
    <thetext>I want to wait for the handshake change (bug 35572) to be committed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227169</commentid>
    <comment_count>2</comment_count>
      <attachid>56330</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-18 00:35:00 -0700</bug_when>
    <thetext>Created attachment 56330
Patch FYI (ukai&apos;s patch in bug 35572 is required)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227170</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-18 00:41:13 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=56330) [details]
&gt; Patch FYI (ukai&apos;s patch in bug 35572 is required)

Alexey and Ukai-san, could you take a look at this patch?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227701</commentid>
    <comment_count>4</comment_count>
      <attachid>56330</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-18 23:28:29 -0700</bug_when>
    <thetext>Comment on attachment 56330
Patch FYI (ukai&apos;s patch in bug 35572 is required)


&gt; @@ -313,21 +334,24 @@ void WebSocketHandshake::clearScriptExecutionContext()
&gt;  int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
&gt;  {
&gt;      m_mode = Incomplete;
&gt; +    int statusCode;
&gt; +    String statusText;
&gt;      size_t lineLength;
&gt; -    const String&amp; code = extractResponseCode(header, len, lineLength);
&gt; -    if (code.isNull()) {
&gt; +    if (!parseResponseLine(header, len, statusCode, statusText, lineLength)) {
&gt;          // Just hasn&apos;t been received yet.
&gt;          return -1;
&gt;      }
&gt; -    if (code.isEmpty()) {
&gt; +    if (!statusCode) {
&gt;          m_mode = Failed;
&gt;          m_context-&gt;addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, &quot;No response code found: &quot; + trimConsoleMessage(header, lineLength), 0, clientOrigin());
&gt;          return len;
&gt;      }
&gt; -    LOG(Network, &quot;response code: %s&quot;, code.utf8().data());
&gt; -    if (code != &quot;101&quot;) {
&gt; +    LOG(Network, &quot;response code: %d&quot;, statusCode);
&gt; +    m_response.setStatusCode(statusCode);
&gt; +    m_response.setStatusText(statusText);

Don&apos;t we want to know whole status line?  (or is status text only ok?)

&gt; +WebSocketHandshakeResponse WebSocketHandshake::serverHandshakeResponse() const

Do we copy WebSocketHandshakeResponse?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227708</commentid>
    <comment_count>5</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-18 23:46:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; -    LOG(Network, &quot;response code: %s&quot;, code.utf8().data());
&gt; &gt; -    if (code != &quot;101&quot;) {
&gt; &gt; +    LOG(Network, &quot;response code: %d&quot;, statusCode);
&gt; &gt; +    m_response.setStatusCode(statusCode);
&gt; &gt; +    m_response.setStatusText(statusText);
&gt; 
&gt; Don&apos;t we want to know whole status line?  (or is status text only ok?)
&gt; 

Current Web Inspector does not display HTTP-version part of the response, so I don&apos;t think we need it for now. We can easily add it when it becomes necessary.


&gt; &gt; +WebSocketHandshakeResponse WebSocketHandshake::serverHandshakeResponse() const
&gt; 
&gt; Do we copy WebSocketHandshakeResponse?

Oops, we can return const reference here. I will fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>228759</commentid>
    <comment_count>6</comment_count>
      <attachid>56674</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-20 23:01:45 -0700</bug_when>
    <thetext>Created attachment 56674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229608</commentid>
    <comment_count>7</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-23 22:52:02 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; -    LOG(Network, &quot;response code: %s&quot;, code.utf8().data());
&gt; &gt; &gt; -    if (code != &quot;101&quot;) {
&gt; &gt; &gt; +    LOG(Network, &quot;response code: %d&quot;, statusCode);
&gt; &gt; &gt; +    m_response.setStatusCode(statusCode);
&gt; &gt; &gt; +    m_response.setStatusText(statusText);
&gt; &gt; 
&gt; &gt; Don&apos;t we want to know whole status line?  (or is status text only ok?)
&gt; &gt; 
&gt; 
&gt; Current Web Inspector does not display HTTP-version part of the response, so I don&apos;t think we need it for now. We can easily add it when it becomes necessary.

So, do we need status text?  It&apos;s now only for informational and not important for websocket handshake.
I&apos;m also not sure statusCode = 0 is good to indicate bad status code...
 
&gt; @@ -345,6 +369,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
&gt;          m_mode = Failed;
&gt;          return len;
&gt;      }
&gt; +    m_response.setHeaderFields(headers);

It might be better to use m_response&apos;s HTTPHeaderMap for readHTTPHeaders, rather than coping HTTPHeaderMap to WebSocketHandshakeResponse.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229716</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-24 06:15:36 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; -    LOG(Network, &quot;response code: %s&quot;, code.utf8().data());
&gt; &gt; &gt; &gt; -    if (code != &quot;101&quot;) {
&gt; &gt; &gt; &gt; +    LOG(Network, &quot;response code: %d&quot;, statusCode);
&gt; &gt; &gt; &gt; +    m_response.setStatusCode(statusCode);
&gt; &gt; &gt; &gt; +    m_response.setStatusText(statusText);
&gt; &gt; &gt; 
&gt; &gt; &gt; Don&apos;t we want to know whole status line?  (or is status text only ok?)
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Current Web Inspector does not display HTTP-version part of the response, so I don&apos;t think we need it for now. We can easily add it when it becomes necessary.
&gt; 
&gt; So, do we need status text?  It&apos;s now only for informational and not important for websocket handshake.

I thought that Web Inspector sends both status code and status text, but it turned out I was wrong. Web Inspector does not use the status text; the front-end looks up the predefined set of status messages.

So basically I&apos;m open to your suggestion. But I still think it&apos;s nice to obtain the reason phrase and show it to users, because the reason phrase cannot be uniquely determined from the status code in some cases (for example, &quot;101 Switching Protocols&quot; from HTTP/1.1 vs &quot;101 WebSocket Protocol Handshake&quot; from WebSocket protocol spec). I&apos;ll open a new bug for Web Inspector.

&gt; I&apos;m also not sure statusCode = 0 is good to indicate bad status code...

Do you like -1? Or to rewrite the function in some other way? I don&apos;t have a strong opinion, and I can update it as you like. I chose 0 just because 0 is not a valid HTTP status code.

&gt; 
&gt; &gt; @@ -345,6 +369,7 @@ int WebSocketHandshake::readServerHandshake(const char* header, size_t len)
&gt; &gt;          m_mode = Failed;
&gt; &gt;          return len;
&gt; &gt;      }
&gt; &gt; +    m_response.setHeaderFields(headers);
&gt; 
&gt; It might be better to use m_response&apos;s HTTPHeaderMap for readHTTPHeaders, rather than coping HTTPHeaderMap to WebSocketHandshakeResponse.

Sure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231220</commentid>
    <comment_count>9</comment_count>
      <attachid>57221</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-27 04:35:24 -0700</bug_when>
    <thetext>Created attachment 57221
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231224</commentid>
    <comment_count>10</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-27 04:41:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=57221) [details]
&gt; Patch

In regard to HTTP status messages, I did not change the code (still collecting HTTP status message) because Web Inspector now respects an HTTP status message that a server returns (see bug 39595).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231228</commentid>
    <comment_count>11</comment_count>
      <attachid>57223</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-27 04:47:05 -0700</bug_when>
    <thetext>Created attachment 57223
Patch (conflict resolved for bots&apos; sake)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232285</commentid>
    <comment_count>12</comment_count>
      <attachid>57439</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-31 02:01:36 -0700</bug_when>
    <thetext>Created attachment 57439
Patch (Add ChallengeResponse)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232585</commentid>
    <comment_count>13</comment_count>
      <attachid>57439</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-31 19:11:23 -0700</bug_when>
    <thetext>Comment on attachment 57439
Patch (Add ChallengeResponse)


&gt; diff --git a/WebCore/websockets/WebSocketHandshakeResponse.h b/WebCore/websockets/WebSocketHandshakeResponse.h

&gt; +   String statusText() const;

return const reference?

&gt; +    ChallengeResponse challengeResponse() const;

return const reference instead of copy of ChallengeResponse?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232596</commentid>
    <comment_count>14</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-31 20:15:49 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 57439 [details])
&gt; 
&gt; &gt; diff --git a/WebCore/websockets/WebSocketHandshakeResponse.h b/WebCore/websockets/WebSocketHandshakeResponse.h
&gt; 
&gt; &gt; +   String statusText() const;
&gt; 
&gt; return const reference?

Sure.

&gt; 
&gt; &gt; +    ChallengeResponse challengeResponse() const;
&gt; 
&gt; return const reference instead of copy of ChallengeResponse?

Sure. (Copying 16 bytes sounds cheap to me, though...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232601</commentid>
    <comment_count>15</comment_count>
      <attachid>57514</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-05-31 20:58:34 -0700</bug_when>
    <thetext>Created attachment 57514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>232655</commentid>
    <comment_count>16</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-06-01 02:10:44 -0700</bug_when>
    <thetext>Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233627</commentid>
    <comment_count>17</comment_count>
      <attachid>57514</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-06-02 23:16:30 -0700</bug_when>
    <thetext>Comment on attachment 57514
Patch

Putting r- to ask if we really don&apos;t need a new test.

WebCore/websockets/WebSocketHandshake.cpp:84
 +      if (statusCodeString.length() != 3) // Status code must consist of three digits.
I&apos;m not sure, but the code around here looks redundant to me. Cannot we just rely on the result of WTFString::toInt ? Specifically

bool ok = false;
statusCode = statusCodeString.toInt(&amp;ok);
if (!ok || statusCode &lt; 100 || statusCode &gt;= 600) {
    statusCode = 0;
    return true;
}

wont&apos; work?


WebCore/websockets/WebSocketHandshakeResponse.h:63
 +      void setChallengeResponse(const unsigned char challengeResponse[16]);
I&apos;d take signed char here so we don&apos;t need reinterpret_cast, but it&apos;s OK as is.

WebCore/websockets/WebSocketHandshake.cpp:80
 +      if (!space1 || !space2 || *(p - 1) != &apos;\r&apos;) // The line must end with &quot;\r\n&quot;.
So, now we are rejecting responses like &quot;HTTP/1.0 101 WebSocket Protocol Handshake\n&quot; and before this change we don&apos;t reject this? If so, I think it would be better to test this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234793</commentid>
    <comment_count>18</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-07 04:48:14 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 57514 [details])
&gt; Putting r- to ask if we really don&apos;t need a new test.
&gt; 
&gt; WebCore/websockets/WebSocketHandshake.cpp:84
&gt;  +      if (statusCodeString.length() != 3) // Status code must consist of three digits.
&gt; I&apos;m not sure, but the code around here looks redundant to me. Cannot we just rely on the result of WTFString::toInt ? Specifically
&gt;

Maybe. What I did was a faithful trace of the step 29 to 31 in http://html5.org/complete/network.html#opening-handshake-0.

We need to reject cases like &quot;0101&quot;, so I think we need to check the string length at least.

&gt; bool ok = false;
&gt; statusCode = statusCodeString.toInt(&amp;ok);
&gt; if (!ok || statusCode &lt; 100 || statusCode &gt;= 600) {
&gt;     statusCode = 0;
&gt;     return true;
&gt; }
&gt; 
&gt; wont&apos; work?

Oops. Will fix.

&gt; 
&gt; 
&gt; WebCore/websockets/WebSocketHandshakeResponse.h:63
&gt;  +      void setChallengeResponse(const unsigned char challengeResponse[16]);
&gt; I&apos;d take signed char here so we don&apos;t need reinterpret_cast, but it&apos;s OK as is.
&gt; 
&gt; WebCore/websockets/WebSocketHandshake.cpp:80
&gt;  +      if (!space1 || !space2 || *(p - 1) != &apos;\r&apos;) // The line must end with &quot;\r\n&quot;.
&gt; So, now we are rejecting responses like &quot;HTTP/1.0 101 WebSocket Protocol Handshake\n&quot; and before this change we don&apos;t reject this? If so, I think it would be better to test this change.

Not sure. I&apos;ll check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235185</commentid>
    <comment_count>19</comment_count>
      <attachid>58124</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-08 02:00:55 -0700</bug_when>
    <thetext>Created attachment 58124
Patch (Add a test)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235186</commentid>
    <comment_count>20</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-08 02:01:35 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; bool ok = false;
&gt; &gt; statusCode = statusCodeString.toInt(&amp;ok);
&gt; &gt; if (!ok || statusCode &lt; 100 || statusCode &gt;= 600) {
&gt; &gt;     statusCode = 0;
&gt; &gt;     return true;
&gt; &gt; }
&gt; &gt; 
&gt; &gt; wont&apos; work?
&gt; 
&gt; Oops. Will fix.
&gt; 

Turned out that this code snippet is different from my original patch (&quot;!ok&quot; does not appear). I think my patch has no problem.

&gt; &gt; 
&gt; &gt; 
&gt; &gt; WebCore/websockets/WebSocketHandshakeResponse.h:63
&gt; &gt;  +      void setChallengeResponse(const unsigned char challengeResponse[16]);
&gt; &gt; I&apos;d take signed char here so we don&apos;t need reinterpret_cast, but it&apos;s OK as is.
&gt; &gt; 
&gt; &gt; WebCore/websockets/WebSocketHandshake.cpp:80
&gt; &gt;  +      if (!space1 || !space2 || *(p - 1) != &apos;\r&apos;) // The line must end with &quot;\r\n&quot;.
&gt; &gt; So, now we are rejecting responses like &quot;HTTP/1.0 101 WebSocket Protocol Handshake\n&quot; and before this change we don&apos;t reject this? If so, I think it would be better to test this change.
&gt; 
&gt; Not sure. I&apos;ll check.

I added a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235187</commentid>
    <comment_count>21</comment_count>
      <attachid>58124</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-08 02:08:33 -0700</bug_when>
    <thetext>Comment on attachment 58124
Patch (Add a test)

&gt; -    if (code.isEmpty()) {
&gt; +    if (!statusCode) {
&gt;          m_mode = Failed;
&gt; -        m_context-&gt;addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, &quot;No response code found: &quot; + trimConsoleMessage(header, lineLength), 0, clientOrigin());
&gt; +        m_context-&gt;addMessage(JSMessageSource, LogMessageType, ErrorMessageLevel, &quot;Invalid response line: &quot; + escapeControlCharacters(trimConsoleMessage(header, lineLength + 1)), 0, clientOrigin());
&gt;          return len;
&gt;      }

Let me clarify this code: I added a code that escapes control characters so that they does not appear in console.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236275</commentid>
    <comment_count>22</comment_count>
      <attachid>58353</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-10 03:25:11 -0700</bug_when>
    <thetext>Created attachment 58353
Patch (Fix case of header names)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236281</commentid>
    <comment_count>23</comment_count>
      <attachid>58353</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-10 03:31:37 -0700</bug_when>
    <thetext>Comment on attachment 58353
Patch (Fix case of header names)

I updated the patch to preserve the case of header names (not to make header names lower-case). The following is the difference since the last patch.

&gt; @@ -495,26 +551,27 @@ const char* WebSocketHandshake::readHTTPHeaders(const char* start, const char* e
&gt;              return 0;
&gt;          }
&gt;          LOG(Network, &quot;name=%s value=%s&quot;, nameStr.string().utf8().data(), valueStr.utf8().data());
&gt; -        headers-&gt;add(nameStr, valueStr);
&gt; +        m_response.addHeaderField(nameStr, valueStr);
&gt;      }
&gt;      ASSERT_NOT_REACHED();
&gt;      return 0;
&gt;  }
&gt;  
&gt; -bool WebSocketHandshake::processHeaders(const HTTPHeaderMap&amp; headers)
&gt; +bool WebSocketHandshake::processHeaders()
&gt;  {
&gt; +    const HTTPHeaderMap&amp; headers = m_response.headerFields();
&gt;      for (HTTPHeaderMap::const_iterator it = headers.begin(); it != headers.end(); ++it) {
&gt;          switch (m_mode) {
&gt;          case Normal:
&gt; -            if (it-&gt;first == &quot;sec-websocket-origin&quot;)
&gt; +            if (equalIgnoringCase(it-&gt;first, &quot;sec-websocket-origin&quot;))
&gt;                  m_wsOrigin = it-&gt;second;
&gt; -            else if (it-&gt;first == &quot;sec-websocket-location&quot;)
&gt; +            else if (equalIgnoringCase(it-&gt;first, &quot;sec-websocket-location&quot;))
&gt;                  m_wsLocation = it-&gt;second;
&gt; -            else if (it-&gt;first == &quot;sec-websocket-protocol&quot;)
&gt; +            else if (equalIgnoringCase(it-&gt;first, &quot;sec-websocket-protocol&quot;))
&gt;                  m_wsProtocol = it-&gt;second;
&gt; -            else if (it-&gt;first == &quot;set-cookie&quot;)
&gt; +            else if (equalIgnoringCase(it-&gt;first, &quot;set-cookie&quot;))
&gt;                  m_setCookie = it-&gt;second;
&gt; -            else if (it-&gt;first == &quot;set-cookie2&quot;)
&gt; +            else if (equalIgnoringCase(it-&gt;first, &quot;set-cookie2&quot;))
&gt;                  m_setCookie2 = it-&gt;second;
&gt;              continue;
&gt;          case Incomplete:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236288</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-10 03:38:39 -0700</bug_when>
    <thetext>Attachment 58353 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3260028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236683</commentid>
    <comment_count>25</comment_count>
      <attachid>58445</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-10 22:19:20 -0700</bug_when>
    <thetext>Created attachment 58445
Patch (Fix pbxproj file)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237729</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-13 23:35:45 -0700</bug_when>
    <thetext>Attachment 58445 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3317104</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239455</commentid>
    <comment_count>27</comment_count>
      <attachid>58445</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-17 10:31:46 -0700</bug_when>
    <thetext>Comment on attachment 58445
Patch (Fix pbxproj file)

+// Return true if we have received enough data to parse a line.

There is a readServerHandshake() function in the same file that returns the same information differently (it returns handshake length, and -1 if it can&apos;t be determined yet). That&apos;s highly confusing.

+static bool parseResponseLine(const char* header, int len, int&amp; statusCode, String&amp; statusText, size_t&amp; lineLength)

FWIW, &quot;statusText&quot; is called &quot;reason phrase&quot; in RFC 2616.

&lt;...&gt;
+    if (statusCode &lt; 100 || statusCode &gt;= 600) {
+        statusCode = 0;
+        return true;
+    }

This function doesn&apos;t validate other parts of the string but from its signature, it looks as if it did. I&apos;d probably call it &quot;extractStatusCodeAndText&quot; to avoid confusion - or make it check that the response line starts with HTTP-Version and other requirements.

In particular, it seems out of place to check numeric value of statusCode in parsing function.

+// Format a console message so that control characters look pretty.
+static String escapeControlCharacters(const String&amp; string)

Formatting for console is definitely not something that belongs to this file. If we want control characters to look pretty, then we probably always want them to, and this code should be in addConsoleMessage() implementation file.

+        if (string[i] &lt; 0x20 || string[i] == 0x7F)

This is not how a control character is defined. We have an isPrintableChar() function in wtf/Unicode.h - one should be sure to iterate by 32-bit code points to use it.

+#include &lt;cstring&gt;

We usually include string.h. I&apos;m not actually sure if this include is needed, or config.h takes care of that.

&gt;      const char* headerFields = strnstr(header, &quot;\r\n&quot;, len); // skip status line

We already know the length of status line from parseResponseLine(), why search for CRLF again?

This patch generally looks good, but I think that there were enough comments for another review round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239892</commentid>
    <comment_count>28</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-18 06:15:51 -0700</bug_when>
    <thetext>Thank you for your review.

(In reply to comment #27)
&gt; +static bool parseResponseLine(const char* header, int len, int&amp; statusCode, String&amp; statusText, size_t&amp; lineLength)
&gt; 
&gt; FWIW, &quot;statusText&quot; is called &quot;reason phrase&quot; in RFC 2616.

Actually I considered that, but I decided to go with &quot;statusText&quot; because there was existing code using that name (WebCore/platform/network/ResourceResponseBase.h). I guess &quot;statusText&quot; is not confusing and is acceptable.

I want to fix other issues mentioned in comment #27.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239895</commentid>
    <comment_count>29</comment_count>
      <attachid>59102</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-18 06:25:53 -0700</bug_when>
    <thetext>Created attachment 59102
Patch (Address ap&apos;s comments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239920</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-18 08:02:21 -0700</bug_when>
    <thetext>Attachment 59102 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3340381</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>239989</commentid>
    <comment_count>31</comment_count>
      <attachid>59102</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-18 09:50:42 -0700</bug_when>
    <thetext>Comment on attachment 59102
Patch (Address ap&apos;s comments)

&gt;          s += &quot;...&quot;;

You didn&apos;t change this code, but ellipsis should use its own Unicode character, not three dots. And, &quot;trimConsoleMessage()&quot; might also be out of place in this file, I&apos;m not sure.

+int WebSocketHandshake::readStatusLine(const char* header, size_t len, int&amp; statusCode, String&amp; statusText)

We prefer to not abbreviate &quot;length&quot;. Also, a more descriptive name could be used here (maybe headerLength).

+    m_response.setChallengeResponse(reinterpret_cast&lt;const unsigned char*&gt;(p));

Doesn&apos;t static_cast work here?

+    const HTTPHeaderMap&amp; headers = m_response.headerFields();
     for (HTTPHeaderMap::const_iterator it = headers.begin(); it != headers.end(); ++it) {

I missed this yesterday: it seems that we don&apos;t need to iterate any more, do we? There is no order in HTTPHeaderMap. But it&apos;s not new with your patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241185</commentid>
    <comment_count>32</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-22 01:41:30 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; +    m_response.setChallengeResponse(reinterpret_cast&lt;const unsigned char*&gt;(p));
&gt; 
&gt; Doesn&apos;t static_cast work here?

No, because unsigned char* and char* is incompatible. But the following works:
  static_cast&lt;const unsigned char*&gt;(static_cast&lt;const void*&gt;(p))

Perhaps this is better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241187</commentid>
    <comment_count>33</comment_count>
      <attachid>59354</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-22 01:43:32 -0700</bug_when>
    <thetext>Created attachment 59354
Patch (Address comment #31)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241191</commentid>
    <comment_count>34</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-06-22 01:47:18 -0700</bug_when>
    <thetext>I fixed the issues suggested in comment #31. Could you please review this patch again? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241193</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-22 01:55:53 -0700</bug_when>
    <thetext>Attachment 59354 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3292608</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241268</commentid>
    <comment_count>36</comment_count>
      <attachid>59354</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-22 08:41:11 -0700</bug_when>
    <thetext>Comment on attachment 59354
Patch (Address comment #31)

+        s.append(static_cast&lt;UChar&gt;(0x2026)); // U+2026 Horizontal ellipsis.

This should use a character constant from CharacterNames.h. We already have one for ellipsis.

r=me with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241723</commentid>
    <comment_count>37</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-06-23 00:38:27 -0700</bug_when>
    <thetext>Committed r61671: &lt;http://trac.webkit.org/changeset/61671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56330</attachid>
            <date>2010-05-18 00:35:00 -0700</date>
            <delta_ts>2010-05-20 23:01:40 -0700</delta_ts>
            <desc>Patch FYI (ukai&apos;s patch in bug 35572 is required)</desc>
            <filename>bug-38728-20100518163458.patch</filename>
            <type>text/plain</type>
            <size>20747</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWUxZTExY2ZlNzI1MjgwNTA4NGNlOTFiMDBhMGU2YjJhODNlYmU1My4uNWU3NDA0MmI0NmYzYTU4
M2Q5YTc1YmE4NzI4MjI5NDIzMjkxNmMyOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNS0xNyAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBk
aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVz
cG9uc2UuCisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGUgZXhpc3RpbmcgdGVzdHMgd2lsbCBz
dWZmaWNlICh3ZWJzb2NrZXQvKikuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0
dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMgY29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hl
Y2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2VzLgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJh
dGVDaGFsbGVuZ2VSZXNwb25zZUV4cGVjdGVkKTogRml4IGEgY29tcGlsZSBlcnJvciBkdWUgdG8g
TUQ1CisgICAgICAgIGludGVyZmFjZSBjaGFuZ2UuIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29ya2Fy
b3VuZCBhbmQgd2lsbCBub3QgYmUgbmVjZXNzYXJ5CisgICAgICAgIGF0IHRoZSB0aW1lIG9mIGNv
bW1pdHRpbmcuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2
ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2
ZXJIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVzQ29kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzQ29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0
U3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZTo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOjpzZXRIZWFkZXJGaWVsZHMpOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaDogQWRkZWQuCisKIDIwMTAtMDUtMTQgIEZ1bWl0b3NoaSBVa2Fp
ICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IDVlMGExMjYzYTIxNzU3ZjE1NzE3YTgxYWFkNjI3NmQ0YzVkZjYz
YTUuLjUzNmQ3NThiOTlmZTk1MmQzNTM1MzMxMGQ1ODc4ZGNhMjdjMzZhZWIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
MzY2MSw3ICszNjYxLDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKKwlX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKKwlXZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaAogCiBpZiBFTkFCTEVf
V09SS0VSUwogd2ViY29yZV9zb3VyY2VzICs9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTFkN2VkYWI1YTUzMDc0NTY3ZjUw
MWMxNjI2ZjczMzY2MjkyZmJiNi4uNmE1MmRhNWY4YTNhY2QyODVlYzYxNWJhYTQ1MGQwNmUwNWUx
YjhkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTM3MzUsNiArMzczNSw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UuY3BwJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvQWJz
dHJhY3RXb3JrZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJD
b3JlL1dlYkNvcmUucHJvCmluZGV4IDkzMzA4MWFjMjY5YjYxODlmY2NjZDJhZGU0MmMyNWFkYmJm
ZjcwYmIuLjI3Njc2NTkxNzRiNzdhNjJjYzU4NmUzZTliNmJmM2I0ODljNTM4NDIgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjgy
OCw2ICsyODI4LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmggXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0
cmVhbUhhbmRsZVByaXZhdGUuaAogCiAgICAgU09VUkNFUyArPSBcCkBAIC0yODM1LDYgKzI4MzYs
NyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5j
cHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQ5MzAyYTk5YmU1NDgw
ZWE2MDM0OTg0YTQwOTVhY2QwNTQ1MTllZTAuLjQ5ZWNmODIyMTEyMzhlMjgxZjhhN2MxMDViODM4
ZjI0ODgyOGM2M2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDQ5
ODksNiArNDQ5ODksMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAi
DQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3
ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdvcmtlclRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYg
LS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVkYmU5OTVkZGVjMDEw
MGVjODliNmQwM2QyOTQzZWI5NWZlM2NhMzcuLjhlYzRkNDVjY2JhMDNlNGQ1NGE4YTNiMjQ4M2Mz
Mzk2ZjUyNjA2NTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xMzE5LDYgKzEzMTksOCBAQAogCQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9N
TWVzc2FnZUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJ
bnRlcm5hbC5oICovOyB9OwogCQk3NjM3QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHAgKi87IH07CiAJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oICovOyB9OworCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmNwcCAqLzsgfTsKKwkJNzY3Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3NjdGOTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UuaCAqLzsgfTsKIAkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRh
YmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NjkzQkFEMzEwNkMyRENB
MDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0
ZXIuY3BwICovOyB9OwogCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFE
MDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi87IH07CkBAIC02OTMwLDYgKzY5
MzIsOCBAQAogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVu
dEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MzdDNTQwMTEyRTdC
NzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5
OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMg
LyogSGFsdGFibGVQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFs
dGFibGVQbHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBQ0YxMDZD
MkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQbHVnaW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTE2MTUsNiArMTE2MTksOCBAQAogCQk1MThBMzRCRDEwMjZDODMxMDAx
QjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmggKi8sCisJCQkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLywKIAkJCQk1MTEyMjQ3MTEwQ0ZCOEM2MDA4MDk5RDcg
LyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMTIyNDczMTBDRkI4
RDgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJCTUxMTIy
NDc1MTBDRkI4RTgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdy
YXBwZXIuaCAqLywKQEAgLTE5MjUxLDYgKzE5MjU3LDcgQEAKIAkJCQlDNTZDOTFBMTExOUQ5MTgx
MDBERTRDRDkgLyogSlNJREJFcnJvckV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTZDOTFB
MzExOUQ5MTgxMDBERTRDRDkgLyogSlNJREJFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU2
QzkxQTcxMTlEOTE4NzAwREU0Q0Q5IC8qIEpTSURCU3VjY2Vzc0V2ZW50LmggaW4gSGVhZGVycyAq
LywKKwkJCQk3NjdGOTlDMDExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjE1MzEsNiArMjE1MzgsNyBAQAogCQkJCUM1NkM5
MUEwMTE5RDkxODEwMERFNENEOSAvKiBKU0lEQkVycm9yRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQzU2QzkxQTIxMTlEOTE4MTAwREU0Q0Q5IC8qIEpTSURCRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQzU2QzkxQTYxMTlEOTE4NzAwREU0Q0Q5IC8qIEpTSURCU3VjY2Vzc0V2ZW50
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggMWU3NTViMmQ1M2YyMjJiNzg4OTg4NmI4
NGE0ZTQzYjIwYzJlYzQ2MS4uMGNjZDRjNGE5ODZkOTNmOGMzOTFjZDdmZGZjNWMxYjUwMTdkZDZh
YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
KysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTU2LDcg
KzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciByYW5kb21D
aGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7
fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhl
YWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQorLy8gUmV0dXJuIHRydWUgaWYgd2Ug
aGF2ZSByZWNlaXZlZCBlbm91Z2ggZGF0YSB0byBwYXJzZSBhIGxpbmUuCisvLyBJZiB3ZSBmYWls
IHRvIHBhcnNlIHN0YXR1cyBjb2RlIG9yIHN0YXR1cyB0ZXh0LCBzdGF0dXNDb2RlIHdpbGwgYmUg
c2V0IHRvIHplcm8gYW5kIHN0YXR1c1RleHQgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorc3RhdGlj
IGJvb2wgcGFyc2VSZXNwb25zZUxpbmUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBpbnQm
IHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCwgc2l6ZV90JiBsaW5lTGVuZ3RoKQogewog
ICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CiAgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsK
QEAgLTcyLDEwICs3NCwyOSBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29u
c3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBzaXplX3QmIGxpbmVMZW5ndAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCi0gICAgICAgIHJldHVybiAi
IjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0Lgor
CisgICAgc3RhdHVzQ29kZSA9IDA7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNwYWNlMiB8fCAqKHAg
LSAxKSAhPSAnXHInKSAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEgKyAxLCBz
cGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAh
PSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAg
aWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3RhdHVzQ29kZVN0cmluZ1tpXSA+ICc5
JykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBvayA9IGZhbHNlOworICAg
IHN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlU3RyaW5nLnRvSW50KCZvayk7CisgICAgQVNTRVJUKG9r
KTsKKyAgICBpZiAoc3RhdHVzQ29kZSA8IDEwMCB8fCBzdGF0dXNDb2RlID49IDYwMCkgeworICAg
ICAgICBzdGF0dXNDb2RlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
c3RhdHVzVGV4dCA9IFN0cmluZyhzcGFjZTIgKyAxLCBwIC0gc3BhY2UyIC0gMik7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwmIHVy
bCkKQEAgLTE1OCw4ICsxNzksOCBAQCBzdGF0aWMgdm9pZCBnZW5lcmF0ZUNoYWxsZW5nZVJlc3Bv
bnNlRXhwZWN0ZWQodWludDMyX3QgbnVtYmVyMSwgdWludDMyX3QgbnVtYmVyMgogICAgIG1lbWNw
eSgmY2hhbGxlbmdlWzhdLCBrZXkzLCA4KTsKICAgICBNRDUgbWQ1OwogICAgIG1kNS5hZGRCeXRl
cyhjaGFsbGVuZ2UsIHNpemVvZihjaGFsbGVuZ2UpKTsKLSAgICAvLyBGSVhNRTogbWQ1LmNoZWNr
c3VtKCkgc2hvdWxkIHRha2UgYSByZWZlcmVuY2UgdG8gb3V0cHV0IGluc3RlYWQgb2YgcmV0dXJu
aW5nIHRoZSByZXN1bHQgYnkgdmFsdWUuCi0gICAgVmVjdG9yPHVpbnQ4X3QsIDE2PiBkaWdlc3Qg
PSBtZDUuY2hlY2tzdW0oKTsKKyAgICBWZWN0b3I8dWludDhfdCwgMTY+IGRpZ2VzdDsKKyAgICBt
ZDUuY2hlY2tzdW0oZGlnZXN0KTsKICAgICBtZW1jcHkoY2hhbGxlbmdlUmVzcG9uc2VFeHBlY3Rl
ZCwgZGlnZXN0LmRhdGEoKSwgMTYpOwogfQogCkBAIC0zMTMsMjEgKzMzNCwyNCBAQCB2b2lkIFdl
YlNvY2tldEhhbmRzaGFrZTo6Y2xlYXJTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKIGludCBXZWJT
b2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBz
aXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7CisgICAgaW50IHN0YXR1c0Nv
ZGU7CisgICAgU3RyaW5nIHN0YXR1c1RleHQ7CiAgICAgc2l6ZV90IGxpbmVMZW5ndGg7Ci0gICAg
Y29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3BvbnNlQ29kZShoZWFkZXIsIGxlbiwgbGlu
ZUxlbmd0aCk7Ci0gICAgaWYgKGNvZGUuaXNOdWxsKCkpIHsKKyAgICBpZiAoIXBhcnNlUmVzcG9u
c2VMaW5lKGhlYWRlciwgbGVuLCBzdGF0dXNDb2RlLCBzdGF0dXNUZXh0LCBsaW5lTGVuZ3RoKSkg
ewogICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIHlldC4KICAgICAgICAgcmV0
dXJuIC0xOwogICAgIH0KLSAgICBpZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIXN0YXR1
c0NvZGUpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICBtX2NvbnRleHQtPmFk
ZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJObyByZXNwb25zZSBjb2RlIGZvdW5kOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRl
ciwgbGluZUxlbmd0aCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0dXJuIGxlbjsK
ICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgp
LmRhdGEoKSk7Ci0gICAgaWYgKGNvZGUgIT0gIjEwMSIpIHsKKyAgICBMT0coTmV0d29yaywgInJl
c3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSk7CisgICAgbV9yZXNwb25zZS5zZXRTdGF0dXND
b2RlKHN0YXR1c0NvZGUpOworICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzVGV4dChzdGF0dXNUZXh0
KTsKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAxMDEpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OwotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiAr
IGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdl
KEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBTdHJp
bmc6OmZvcm1hdCgiVW5leHBlY3RlZCByZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1c0NvZGUpLCAw
LCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQogICAgIG1fbW9k
ZSA9IE5vcm1hbDsKQEAgLTM0Niw2ICszNzAsNyBAQCBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpy
ZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKICAgICAg
ICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KKyAgICBtX3Jl
c3BvbnNlLnNldEhlYWRlckZpZWxkcyhoZWFkZXJzKTsKICAgICBpZiAoIXByb2Nlc3NIZWFkZXJz
KGhlYWRlcnMpIHx8ICFjaGVja1Jlc3BvbnNlSGVhZGVycygpKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrLCAiaGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsK
QEAgLTQxOSw2ICs0NDQsMTEgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNl
dENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKQogICAgIG1fc2V0Q29va2llMiA9IHNl
dENvb2tpZTI7CiB9CiAKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIFdlYlNvY2tldEhhbmRz
aGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3Jl
c3BvbnNlOworfQorCiBLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZvckF1dGhlbnRp
Y2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiB7CiAgICAgS1VSTCB1cmwgPSBtX3VybC5jb3B5KCk7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggM2UwYzY2YTZhNDhj
NjhjNjc5ZDE3NDU0MGU0Y2VmYjg3YjExZTY0Ny4uYjgyMTM2MmJkZDdjZTlkMzM0NDY5NGIyY2M3
ZDc4MGYzM2UwYjcwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5oCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKKyNpbmNsdWRl
ICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC04Niw2ICs4Nyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29va2llMihjb25zdCBTdHJpbmcmIHNldENvb2tp
ZTIpOwogCisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIHNlcnZlckhhbmRzaGFr
ZVJlc3BvbnNlKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBLVVJMIGh0dHBVUkxG
b3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKIApAQCAtMTExLDYgKzExNCw4IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5MjsK
ICAgICAgICAgdW5zaWduZWQgY2hhciBtX2tleTNbOF07CiAgICAgICAgIHVuc2lnbmVkIGNoYXIg
bV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlWzE2XTsKKworICAgICAgICBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJiMDgyMzc5ZTk3ZjYzOGY4MDQwZTQ0Y2NiYmJjY2U3Mzk0ODZjYTkK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlKCkKK3sKK30KKworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSgpCit7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6
c3RhdHVzQ29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzQ29kZTsKK30KKwordm9p
ZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29k
ZSkKK3sKKyAgICBBU1NFUlQoc3RhdHVzQ29kZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDYwMCk7
CisgICAgbV9zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0
dXNUZXh0OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNU
ZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCkKK3sKKyAgICBtX3N0YXR1c1RleHQgPSBzdGF0
dXNUZXh0OworfQorCitjb25zdCBIVFRQSGVhZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6aGVhZGVyRmllbGRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oZWFkZXJGaWVsZHM7
Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldEhlYWRlckZpZWxkcyhj
b25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMpCit7CisgICAgbV9oZWFkZXJGaWVsZHMg
PSBoZWFkZXJGaWVsZHM7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTYzZWY5ODI4YTZhZmY0NDVjMTFiOTRhZDIw
ZmJhNzk0NmYzOGJmNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZV9oCisjZGVmaW5lIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
X2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAu
aCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIHsKK3B1YmxpYzoKKyAgICBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZSgpOworICAgIH5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgp
OworCisgICAgaW50IHN0YXR1c0NvZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YXR1c0NvZGUo
aW50IHN0YXR1c0NvZGUpOworICAgIFN0cmluZyBzdGF0dXNUZXh0KCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVyRmllbGRzKCkgY29uc3Q7CisgICAgdm9pZCBzZXRIZWFkZXJGaWVs
ZHMoY29uc3QgSFRUUEhlYWRlck1hcCYpOworCitwcml2YXRlOgorICAgIGludCBtX3N0YXR1c0Nv
ZGU7CisgICAgU3RyaW5nIG1fc3RhdHVzVGV4dDsKKyAgICBIVFRQSGVhZGVyTWFwIG1faGVhZGVy
RmllbGRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56674</attachid>
            <date>2010-05-20 23:01:45 -0700</date>
            <delta_ts>2010-05-27 04:35:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38728-20100521150143.patch</filename>
            <type>text/plain</type>
            <size>20150</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzRmYzYyMDg3ZTJmNmU1MDE1MjJiNTI0ZGYxZjVmZjhhYzE2NTk5Yi4uMDEzZTgwOWFkYzdmODBi
ZDk5YmFiMjVkNDFjM2EzNGI3M2NmYzE4YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0wNS0yMCAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBk
aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVz
cG9uc2UuCisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGUgZXhpc3RpbmcgdGVzdHMgd2lsbCBz
dWZmaWNlICh3ZWJzb2NrZXQvKikuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0
dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMgY29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hl
Y2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjp+V2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2U6OnN0YXR1c0NvZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2U6OnNldFN0YXR1c0NvZGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6OnN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0SGVhZGVyRmllbGRzKToKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg6IEFkZGVkLgorCiAyMDEw
LTA1LTIwICBKb24gSG9uZXljdXR0ICA8amhvbmV5Y3V0dEBhcHBsZS5jb20+CiAKICAgICAgICAg
UkVHUkVTU0lPTihyNTM2MzcpOiBEaXZYIHBsdWctaW4gZmFpbHMgdG8gc3RhcnQgdW50aWwgd2lu
ZG93IGlzIHJlc2l6ZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDYxYjczNGFmYWVjYWNiNWU3ZGEyNTFmMDMwNmZiNDk3
NjgyMGM2NzIuLjJiNDgyNDUwMmQ4YzA3ZjYwZjZiODI1MDRmOGZhMjFkZThkM2Y3OTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQpAQCAtMzY2OSw3ICszNjY5LDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5oIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5o
IFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwK
KwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaAogCiBpZiBF
TkFCTEVfV09SS0VSUwogd2ViY29yZV9zb3VyY2VzICs9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMWMyNGIxOTIyYWYxMDFi
YWVmZmI3NDY4OWI0MDhkYzc0NDIwMjNiZS4uY2YyNjJjNTI3NjJkY2Q0Y2YxMDY1MmYwMTE1ZDM1
ODBhZTRkNmVmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTM3NDQsNiArMzc0NCw4IEBACiAgICAgICAgICAgICAnd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2Vy
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dvcmtl
cnMvQWJzdHJhY3RXb3JrZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8g
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGNjMmY4ZmFiZTc3NzkxMzY5MzlkNmY3MTRjNTMy
OTUyNzdhY2Y0NjEuLmFhZDczMjUzODJkMmQzMmY0YTkxZmE5ZWJjMzkzZjEzYzBhODU3MWEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpA
QCAtMjgzMiw2ICsyODMyLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRT
PTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmggXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Nv
Y2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaAogCiAgICAgU09VUkNFUyArPSBcCkBAIC0yODM5LDYg
KzI4NDAsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAg
ICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIFwKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmNwcCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9y
QmFzZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJh
c2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGY2YjQ4MDFj
NzIzMmYxMGJiZjBlZDRjYjZlZTNlOTBmYzY3MzAxZmQuLjNiYzM2MGMyZWU4NmZjZmM1OTRhMjEx
MmE0OWJmYjFkYTU2ODNkNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpA
QCAtNDUwNTcsNiArNDUwNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdv
cmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4N
CmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDc3MDE1NTdi
NTA3YzgyNGUwZWY4ODQyMjE5ZmJjZWRhZWE3ZmZhOWYuLjZhMGFhNjBlODRkMzY3NWZiMDI5MTNh
ZTU5NmMyMzAwMzQ1OGY4MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMzI1LDYgKzEzMjUsOCBAQAogCQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMg
LyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdl
RXZlbnRJbnRlcm5hbC5oICovOyB9OwogCQk3NjM3QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5jcHAgKi87IH07CiAJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5oICovOyB9OworCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsgfTsKKwkJNzY3Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsgfTsKIAkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8q
IEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NjkzQkFEMzEw
NkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXIuY3BwICovOyB9OwogCQk3NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2lu
SGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi87IH07CkBAIC02OTQ2
LDYgKzY5NDgsOCBAQAogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2
ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3Nh
Z2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MzdDNTQw
MTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZD
REMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFDRTEwNkMyRENBMDA3
QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGFsdGFibGVQbHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JB
Q0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTE2MzQsNiArMTE2MzgsOCBAQAogCQk1MThBMzRCRDEwMjZD
ODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmggKi8sCisJCQkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLywKIAkJCQk1MTEyMjQ3MTEwQ0ZCOEM2MDA4
MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMTIyNDcz
MTBDRkI4RDgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJ
CTUxMTIyNDc1MTBDRkI4RTgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENs
aWVudFdyYXBwZXIuaCAqLywKQEAgLTE5Mjg2LDYgKzE5MjkyLDcgQEAKIAkJCQk1OUE4NUVBNDEx
OUQ2OEVDMDBERUYxRUYgLyogRGV2aWNlT3JpZW50YXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTlBODYwMDgxMTlEQUZBMTAwREVGMUVGIC8qIEpTRGV2aWNlT3JpZW50YXRpb25FdmVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkUzRkFBMDkxMUEzNkJGMTAwNTc2NjI0IC8qIENyb3Nz
VGhyZWFkVGFzay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzY3Rjk5QzAxMUExMTk1NjAwODBDNTFE
IC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxNTcx
LDYgKzIxNTc4LDcgQEAKIAkJCQk1MTMyN0Q2MTExQTMzQTJCMDA0RjlENjUgLyogU2lua0RvY3Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5QTg1RUEyMTE5RDY4RDkwMERFRjFFRiAvKiBE
ZXZpY2VPcmllbnRhdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTU5QTg2MDA2MTE5
REFGN0YwMERFRjFFRiAvKiBKU0RldmljZU9yaWVudGF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNzY3Rjk5QkUxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFu
ZHNoYWtlLmNwcAppbmRleCBlYTRmNWU1NjU3YzUzYzI1MzJlNmQ5MGFlYzQxMGUwZDc5OTc2YmUz
Li45N2YzMDY5ZGM1OGY3NzViYmQ2YTc1MTM1YzI0ZDVkMmU3MzY3ZDY3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAorKysgYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcApAQCAtNTYsNyArNTYsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBjaGFyIHJhbmRvbUNoYXJhY3RlckluU2VjV2Vi
U29ja2V0S2V5W10gPSAiIVwiIyQlJicoKSorLC0uLzo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWltcXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX4iOwogCi1zdGF0aWMg
U3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBz
aXplX3QmIGxpbmVMZW5ndGgpCisvLyBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHJlY2VpdmVkIGVu
b3VnaCBkYXRhIHRvIHBhcnNlIGEgbGluZS4KKy8vIElmIHdlIGZhaWwgdG8gcGFyc2Ugc3RhdHVz
IGNvZGUgb3Igc3RhdHVzIHRleHQsIHN0YXR1c0NvZGUgd2lsbCBiZSBzZXQgdG8gemVybyBhbmQg
c3RhdHVzVGV4dCB3aWxsIHJlbWFpbiB1bmNoYW5nZWQuCitzdGF0aWMgYm9vbCBwYXJzZVJlc3Bv
bnNlTGluZShjb25zdCBjaGFyKiBoZWFkZXIsIGludCBsZW4sIGludCYgc3RhdHVzQ29kZSwgU3Ry
aW5nJiBzdGF0dXNUZXh0LCBzaXplX3QmIGxpbmVMZW5ndGgpCiB7CiAgICAgY29uc3QgY2hhciog
c3BhY2UxID0gMDsKICAgICBjb25zdCBjaGFyKiBzcGFjZTIgPSAwOwpAQCAtNzIsMTAgKzc0LDI5
IEBAIHN0YXRpYyBTdHJpbmcgZXh0cmFjdFJlc3BvbnNlQ29kZShjb25zdCBjaGFyKiBoZWFkZXIs
IGludCBsZW4sIHNpemVfdCYgbGluZUxlbmd0CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgaWYgKHAgLSBoZWFkZXIgPT0gbGVuKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAg
aWYgKCFzcGFjZTEgfHwgIXNwYWNlMikKLSAgICAgICAgcmV0dXJuICIiOwotICAgIHJldHVybiBT
dHJpbmcoc3BhY2UxICsgMSwgc3BhY2UyIC0gc3BhY2UxIC0gMSk7CisgICAgICAgIHJldHVybiBm
YWxzZTsgLy8gV2UgaGF2ZSBub3QgcmVjZWl2ZWQgJ1xuJyB5ZXQuCisKKyAgICBzdGF0dXNDb2Rl
ID0gMDsKKyAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2UyIHx8ICoocCAtIDEpICE9ICdccicpIC8v
IFRoZSBsaW5lIG11c3QgZW5kIHdpdGggIlxyXG4iLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIFN0cmluZyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAt
IDEpOworICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0aCgpICE9IDMpIC8vIFN0YXR1cyBj
b2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgICAgICBpZiAoc3RhdHVzQ29kZVN0
cmluZ1tpXSA8ICcwJyB8fCBzdGF0dXNDb2RlU3RyaW5nW2ldID4gJzknKQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgc3RhdHVzQ29kZSA9IHN0
YXR1c0NvZGVTdHJpbmcudG9JbnQoJm9rKTsKKyAgICBBU1NFUlQob2spOworICAgIGlmIChzdGF0
dXNDb2RlIDwgMTAwIHx8IHN0YXR1c0NvZGUgPj0gNjAwKSB7CisgICAgICAgIHN0YXR1c0NvZGUg
PSAwOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzdGF0dXNUZXh0ID0gU3Ry
aW5nKHNwYWNlMiArIDEsIHAgLSBzcGFjZTIgLSAyKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAog
c3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29uc3QgS1VSTCYgdXJsKQpAQCAtMzEyLDIxICsz
MzMsMjQgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNsZWFyU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpCiBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0
IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKIHsKICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwor
ICAgIGludCBzdGF0dXNDb2RlOworICAgIFN0cmluZyBzdGF0dXNUZXh0OwogICAgIHNpemVfdCBs
aW5lTGVuZ3RoOwotICAgIGNvbnN0IFN0cmluZyYgY29kZSA9IGV4dHJhY3RSZXNwb25zZUNvZGUo
aGVhZGVyLCBsZW4sIGxpbmVMZW5ndGgpOwotICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7CisgICAg
aWYgKCFwYXJzZVJlc3BvbnNlTGluZShoZWFkZXIsIGxlbiwgc3RhdHVzQ29kZSwgc3RhdHVzVGV4
dCwgbGluZUxlbmd0aCkpIHsKICAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCB5
ZXQuCiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgaWYgKGNvZGUuaXNFbXB0eSgpKSB7
CisgICAgaWYgKCFzdGF0dXNDb2RlKSB7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2UgY29kZSBmb3VuZDogIiArIHRyaW1Db25z
b2xlTWVzc2FnZShoZWFkZXIsIGxpbmVMZW5ndGgpLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAg
ICAgIHJldHVybiBsZW47CiAgICAgfQotICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTog
JXMiLCBjb2RlLnV0ZjgoKS5kYXRhKCkpOwotICAgIGlmIChjb2RlICE9ICIxMDEiKSB7CisgICAg
TE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1c0NvZGUpOworICAgIG1fcmVz
cG9uc2Uuc2V0U3RhdHVzQ29kZShzdGF0dXNDb2RlKTsKKyAgICBtX3Jlc3BvbnNlLnNldFN0YXR1
c1RleHQoc3RhdHVzVGV4dCk7CisgICAgaWYgKHN0YXR1c0NvZGUgIT0gMTAxKSB7CiAgICAgICAg
IG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiVW5leHBlY3RlZCBy
ZXNwb25zZSBjb2RlOiIgKyBjb2RlLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29u
dGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgU3RyaW5nOjpmb3JtYXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZTogJWQi
LCBzdGF0dXNDb2RlKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICByZXR1cm4gbGVuOwog
ICAgIH0KICAgICBtX21vZGUgPSBOb3JtYWw7CkBAIC0zNDUsNiArMzY5LDcgQEAgaW50IFdlYlNv
Y2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNp
emVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIGxlbjsK
ICAgICB9CisgICAgbV9yZXNwb25zZS5zZXRIZWFkZXJGaWVsZHMoaGVhZGVycyk7CiAgICAgaWYg
KCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgewog
ICAgICAgICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwogICAgICAgICBt
X21vZGUgPSBGYWlsZWQ7CkBAIC00MTgsNiArNDQzLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNo
YWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBt
X3NldENvb2tpZTIgPSBzZXRDb29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNo
YWtlOjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBL
VVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaAppbmRleCAzZTBjNjZhNmE0OGM2OGM2NzlkMTc0NTQwZTRjZWZiODdiMTFlNjQ3Li44MjE4
NTIwZWMzMjljMWM2OWQxYzk0ZjhjYjY1NWI0ZDUyYjRjYTc5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiS1VSTC5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNo
YWtlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTg2
LDYgKzg3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBjb25zdCBTdHJpbmcmIHNl
cnZlclNldENvb2tpZTIoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUy
KGNvbnN0IFN0cmluZyYgc2V0Q29va2llMik7CiAKKyAgICAgICAgY29uc3QgV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3Q7CisKICAgICBw
cml2YXRlOgogICAgICAgICBLVVJMIGh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMo
KSBjb25zdDsKIApAQCAtMTExLDYgKzExNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2tl
eTNbOF07CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNl
WzE2XTsKKworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jlc3BvbnNlOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJiMDgyMzc5ZTk3
ZjYzOGY4MDQwZTQ0Y2NiYmJjY2U3Mzk0ODZjYTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5j
bHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKCkKK3sKK30KKworV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpCit7Cit9CisKK2lu
dCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVzQ29kZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fc3RhdHVzQ29kZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZTo6c2V0U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBBU1NFUlQoc3RhdHVzQ29k
ZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDYwMCk7CisgICAgbV9zdGF0dXNDb2RlID0gc3RhdHVz
Q29kZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNUZXh0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0dXNUZXh0OworfQorCit2b2lkIFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4
dCkKK3sKKyAgICBtX3N0YXR1c1RleHQgPSBzdGF0dXNUZXh0OworfQorCitjb25zdCBIVFRQSGVh
ZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6aGVhZGVyRmllbGRzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9oZWFkZXJGaWVsZHM7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2U6OnNldEhlYWRlckZpZWxkcyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJG
aWVsZHMpCit7CisgICAgbV9oZWFkZXJGaWVsZHMgPSBoZWFkZXJGaWVsZHM7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTYzZWY5ODI4YTZhZmY0NDVjMTFiOTRhZDIwZmJhNzk0NmYzOGJmNwotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZV9oCisjZGVm
aW5lIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworICAg
IH5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworCisgICAgaW50IHN0YXR1c0NvZGUoKSBj
b25zdDsKKyAgICB2b2lkIHNldFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpOworICAgIFN0cmlu
ZyBzdGF0dXNUZXh0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmlu
ZyYgc3RhdHVzVGV4dCk7CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVyRmllbGRzKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRIZWFkZXJGaWVsZHMoY29uc3QgSFRUUEhlYWRlck1hcCYpOwor
Citwcml2YXRlOgorICAgIGludCBtX3N0YXR1c0NvZGU7CisgICAgU3RyaW5nIG1fc3RhdHVzVGV4
dDsKKyAgICBIVFRQSGVhZGVyTWFwIG1faGVhZGVyRmllbGRzOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5kaWYgLy8g
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57221</attachid>
            <date>2010-05-27 04:35:24 -0700</date>
            <delta_ts>2010-05-27 04:46:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38728-20100527203522.patch</filename>
            <type>text/plain</type>
            <size>22639</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTIzMTM2YWQ3NzA0YTQ5MmQxYzMyZmM5OTMyMzBjZjgzNzRmZGIwMy4uMjVmODdmM2ZkYTg3OWE4
Yjc5YTE4NjdkNGM0N2RhYTkwYjYxMjFlOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNS0yNyAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBk
aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVz
cG9uc2UuCisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGUgZXhpc3RpbmcgdGVzdHMgd2lsbCBz
dWZmaWNlICh3ZWJzb2NrZXQvKikuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0
dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMgY29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hl
Y2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6c3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTo6c2V0U3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZTo6c3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMpOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDogQWRkZWQu
CisKIDIwMTAtMDUtMjYgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDFiYjY3MWNkYmViMDJl
NjY2MDRhZmU3ZWM5Y2YzYmYwYjhlMWRlNjguLjJkOTFkMWY5NGNhZjU1YjFhMTFhNGQyM2E0NTE4
YWZlNjZmN2IzNjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzY5Myw3ICszNjkzLDkgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAJV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKIAlXZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAotCVdlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UuaAogCiBpZiBFTkFCTEVfV09SS0VSUwogd2ViY29yZV9zb3VyY2VzICs9IFwKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5k
ZXggY2NkZTFmYmRmZjdjNjMwNzUxYzc5ZmYxM2U5NmQ1MDMxODQ4YjVlYS4uZDJlY2M0YzFhYzhi
ZmQ5OWMyYTQzOTA5YjNiODA5NmMxNjM1MWRkYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3NTksNiArMzc1OSw4IEBACiAg
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgnLAorICAgICAgICAgICAg
J3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwJywKKyAgICAgICAgICAg
ICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgnLAogICAgICAgICAgICAg
J3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwJywKICAgICAg
ICAgICAgICd3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmgnLAog
ICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwJywKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDYyNzg1ZjQ4ODMy
MjVhZmQyYWYwZmUyODYzMTUwZjkwNWZlNWZiNWQuLjA4NDYzNmM1MGExMjI4MzljMzYxOGFjNTU3
YjRjZjRiYTk0YTY2OTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnBybwpAQCAtMjg0NSw2ICsyODQ1LDcgQEAgY29udGFpbnMoREVGSU5FUywg
RU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFu
bmVsQ2xpZW50LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAorICAgICAg
ICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggXAogICAgICAgICBwbGF0
Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaAogCiAgICAgU09VUkNF
UyArPSBcCkBAIC0yODUyLDYgKzI4NTMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
X1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIFwK
ICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCisgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9U
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Nv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDM4N2RiZDJjYWU2MDExZGU3OWNjZWE4MzcyNjRhNjY0MzQ5YjM1ZGEuLjNmNThi
ZTlkMGVjMDdjMWIyNmQ1NjFhODg1Mjc4MzZlZmExNzczNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNDU0MTcsNiArNDU0MTcsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlx3ZWJzb2NrZXRzXFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDhiODg5YjkxYTA5NGY2MGRhMWE0YThkMTE0MjMzYjVhYzVlMTMxM2UuLjFkM2Rl
MTQxN2JkZmRlNjhiYWE5MzE0M2QwODgyMDFkY2JiMTk4OGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzI5LDYgKzEzMjksOCBAQAogCQk3NTc5M0VE
NTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQyMEQwQ0U4NUIwMDdG
QzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovOyB9OwogCQk3NjM3QzU0MTExMkU3
Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MDExMkU3Qjc0MDAzRDZD
REMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi87IH07CiAJCTc2MzdDNTQzMTEy
RTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3QjdFMDAzRDZD
REMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovOyB9OworCQk3NjdGOTlCRTExQTEx
OTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkQxMUExMTk0QTAwODBD
NTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsgfTsKKwkJNzY3Rjk5QzAx
MUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRjExQTExOTU2MDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsgfTsKIAkJNzY5M0JBRDIx
MDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFs
dGFibGVQbHVnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNGMTA2QzJE
Q0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwogCQk3NjkzQkFENDEwNkMyRENB
MDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVy
LmggKi87IH07CkBAIC02OTY4LDYgKzY5NzAsOCBAQAogCQk3NTc5M0VEMjBEMENFODVCMDA3RkMw
QUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tl
dEhhbmRzaGFrZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3
QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAv
KiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSGFsdGFibGVQbHVnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5IYWx0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyog
UGx1Z2luSGFsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpbkhh
bHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2NzksNiArMTE2ODMsOCBA
QAogCQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0cyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzY3Rjk5QkYxMUExMTk1NjAwODBD
NTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi8sCisJCQkJNzY3Rjk5QkQxMUEx
MTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLywKIAkJCQk1
MTEyMjQ3MTEwQ0ZCOEM2MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
ICovLAogCQkJCTUxMTIyNDczMTBDRkI4RDgwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5oICovLAogCQkJCTUxMTIyNDc1MTBDRkI4RTgwMDgwOTlENyAvKiBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCAqLywKQEAgLTE5MzYzLDYgKzE5MzY5LDcg
QEAKIAkJCQlCNjY5M0VFQzExQUQ2M0U2MDAzRjI3NzAgLyogSURCT2JqZWN0U3RvcmUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUI2NjkzRUVFMTFBRDYzRTYwMDNGMjc3MCAvKiBJREJPYmplY3RTdG9y
ZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUI2NjkzRUYzMTFBRDY0ODYwMDNGMjc3MCAv
KiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzY3Rjk5QzAx
MUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVy
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTIxNjU3LDYgKzIxNjY0LDcgQEAKIAkJCQlCNjY5M0VFRDExQUQ2M0U2MDAzRjI3
NzAgLyogSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2Njkz
RUYyMTFBRDY0ODYwMDNGMjc3MCAvKiBKU0lEQk9iamVjdFN0b3JlUmVxdWVzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCNjI3RkIyRDExQUQ3NDM1MDBFOTdCNzIgLyogSURCRGF0YWJhc2VJbXBs
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZWE0ZjVlNTY1N2M1M2MyNTMyZTZkOTBh
ZWM0MTBlMGQ3OTk3NmJlMy4uOTBkOWFlY2MzMTA2OWYwMDU0MDU1M2ViMDY5YzEyNGU1Yjk4YzZj
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
KysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTU2LDcg
KzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciByYW5kb21D
aGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AQUJD
REVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7
fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhl
YWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQorLy8gUmV0dXJuIHRydWUgaWYgd2Ug
aGF2ZSByZWNlaXZlZCBlbm91Z2ggZGF0YSB0byBwYXJzZSBhIGxpbmUuCisvLyBJZiB3ZSBmYWls
IHRvIHBhcnNlIHN0YXR1cyBjb2RlIG9yIHN0YXR1cyB0ZXh0LCBzdGF0dXNDb2RlIHdpbGwgYmUg
c2V0IHRvIHplcm8gYW5kIHN0YXR1c1RleHQgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorc3RhdGlj
IGJvb2wgcGFyc2VSZXNwb25zZUxpbmUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBpbnQm
IHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCwgc2l6ZV90JiBsaW5lTGVuZ3RoKQogewog
ICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CiAgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsK
QEAgLTcyLDEwICs3NCwyOSBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29u
c3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBzaXplX3QmIGxpbmVMZW5ndAogICAgICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKLSAgICAgICAgcmV0dXJu
IFN0cmluZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCi0gICAgICAgIHJldHVybiAi
IjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0Lgor
CisgICAgc3RhdHVzQ29kZSA9IDA7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNwYWNlMiB8fCAqKHAg
LSAxKSAhPSAnXHInKSAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEgKyAxLCBz
cGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAh
PSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAg
aWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3RhdHVzQ29kZVN0cmluZ1tpXSA+ICc5
JykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBvayA9IGZhbHNlOworICAg
IHN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlU3RyaW5nLnRvSW50KCZvayk7CisgICAgQVNTRVJUKG9r
KTsKKyAgICBpZiAoc3RhdHVzQ29kZSA8IDEwMCB8fCBzdGF0dXNDb2RlID49IDYwMCkgeworICAg
ICAgICBzdGF0dXNDb2RlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAg
c3RhdHVzVGV4dCA9IFN0cmluZyhzcGFjZTIgKyAxLCBwIC0gc3BhY2UyIC0gMik7CisgICAgcmV0
dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwmIHVy
bCkKQEAgLTMxMiwyMSArMzMzLDI0IEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGVhclNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZl
ckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiB7CiAgICAgbV9tb2Rl
ID0gSW5jb21wbGV0ZTsKKyAgICBpbnQgc3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgc3RhdHVzVGV4
dDsKICAgICBzaXplX3QgbGluZUxlbmd0aDsKLSAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRy
YWN0UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVuLCBsaW5lTGVuZ3RoKTsKLSAgICBpZiAoY29kZS5p
c051bGwoKSkgeworICAgIGlmICghcGFyc2VSZXNwb25zZUxpbmUoaGVhZGVyLCBsZW4sIHN0YXR1
c0NvZGUsIHN0YXR1c1RleHQsIGxpbmVMZW5ndGgpKSB7CiAgICAgICAgIC8vIEp1c3QgaGFzbid0
IGJlZW4gcmVjZWl2ZWQgeWV0LgogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmIChj
b2RlLmlzRW1wdHkoKSkgeworICAgIGlmICghc3RhdHVzQ29kZSkgewogICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CiAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2Us
IExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vIHJlc3BvbnNlIGNvZGUgZm91
bmQ6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsaW5lTGVuZ3RoKSwgMCwgY2xpZW50
T3JpZ2luKCkpOwogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAgICBMT0coTmV0d29yaywg
InJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAoY29kZSAh
PSAiMTAxIikgeworICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJWQiLCBzdGF0dXND
b2RlKTsKKyAgICBtX3Jlc3BvbnNlLnNldFN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7CisgICAgbV9y
ZXNwb25zZS5zZXRTdGF0dXNUZXh0KHN0YXR1c1RleHQpOworICAgIGlmIChzdGF0dXNDb2RlICE9
IDEwMSkgewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRk
TWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZToiICsgY29kZSwgMCwgY2xpZW50T3JpZ2luKCkp
OworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIHJl
c3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAg
ICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwpAQCAtMzM1LDE3ICsz
NTksMTYgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25z
dCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7
CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwog
ICAgIGNvbnN0IGNoYXIqIGhlYWRlckZpZWxkcyA9IHN0cm5zdHIoaGVhZGVyLCAiXHJcbiIsIGxl
bik7IC8vIHNraXAgc3RhdHVzIGxpbmUKICAgICBBU1NFUlQoaGVhZGVyRmllbGRzKTsKICAgICBo
ZWFkZXJGaWVsZHMgKz0gMjsgLy8gc2tpcCAiXHJcbiIuCi0gICAgY29uc3QgY2hhciogcCA9IHJl
YWRIVFRQSGVhZGVycyhoZWFkZXJGaWVsZHMsIGhlYWRlciArIGxlbiwgJmhlYWRlcnMpOworICAg
IGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyRmllbGRzLCBoZWFkZXIgKyBs
ZW4pOwogICAgIGlmICghcCkgewogICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVy
cyBmYWlsZWQiKTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICByZXR1cm4gbGVu
OwogICAgIH0KLSAgICBpZiAoIXByb2Nlc3NIZWFkZXJzKGhlYWRlcnMpIHx8ICFjaGVja1Jlc3Bv
bnNlSGVhZGVycygpKSB7CisgICAgaWYgKCFwcm9jZXNzSGVhZGVycygpIHx8ICFjaGVja1Jlc3Bv
bnNlSGVhZGVycygpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiaGVhZGVyIHByb2Nlc3MgZmFp
bGVkIik7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIHAgLSBoZWFk
ZXI7CkBAIC00MTgsNiArNDQxLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2
ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3NldENvb2tpZTIg
PSBzZXRDb29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2Vi
U29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJM
Rm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9IG1f
dXJsLmNvcHkoKTsKQEAgLTQyNiw4ICs0NTQsMTAgQEAgS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6
Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAgIHJldHVybiB1
cmw7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJz
KGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRl
cnMpCitjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25z
dCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogeworICAgIG1fcmVzcG9uc2UuY2xlYXJI
ZWFkZXJGaWVsZHMoKTsKKwogICAgIFZlY3RvcjxjaGFyPiBuYW1lOwogICAgIFZlY3RvcjxjaGFy
PiB2YWx1ZTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVuZDsgcCsrKSB7
CkBAIC00OTUsMTQgKzUyNSwxNSBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQogICAgICAgICAg
ICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZh
bHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCku
ZGF0YSgpKTsKLSAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICAg
ICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCi1ib29sIFdlYlNv
Y2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVy
cykKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycygpCiB7CisgICAgY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCk7CiAg
ICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4o
KTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgewogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkg
ewogICAgICAgICBjYXNlIE5vcm1hbDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuaAppbmRleCAzZTBjNjZhNmE0OGM2OGM2NzlkMTc0NTQwZTRjZWZiODdiMTFlNjQ3Li5hMGMy
YWY3Zjk3NWFhMmE4MDYyZmRiZmRkNjIyMTA4MWIxOTgyMDA0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlICJLVVJM
LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIK
ICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0g
ICAgY2xhc3MgSFRUUEhlYWRlck1hcDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0
OwogCiAgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5vbmNvcHlhYmxlIHsK
QEAgLTg2LDEyICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFN0
cmluZyYgc2VydmVyU2V0Q29va2llMigpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFNlcnZlclNl
dENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKTsKIAorICAgICAgICBjb25zdCBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsK
KwogICAgIHByaXZhdGU6CiAgICAgICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5k
Q29va2llcygpIGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJzIGV4Y2VwdCBm
b3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCi0gICAgICAgIGNvbnN0IGNoYXIqIHJlYWRIVFRQ
SGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVyTWFw
KiBoZWFkZXJzKTsKLSAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBIVFRQSGVhZGVy
TWFwJiBoZWFkZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0
IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOworICAgICAgICBib29sIHByb2Nlc3NIZWFk
ZXJzKCk7CiAgICAgICAgIGJvb2wgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKIAogICAgICAgICBL
VVJMIG1fdXJsOwpAQCAtMTExLDYgKzExMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2tl
eTNbOF07CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNl
WzE2XTsKKworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jlc3BvbnNlOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYjk4YWJhNjll
OTkyNzIyYjJlYjE2NjUxZmYzZDg3NjViOGNhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5j
bHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlKCkKK3sKK30KKworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSgpCit7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6
c3RhdHVzQ29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzQ29kZTsKK30KKwordm9p
ZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29k
ZSkKK3sKKyAgICBBU1NFUlQoc3RhdHVzQ29kZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDYwMCk7
CisgICAgbV9zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0
dXNUZXh0OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNU
ZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCkKK3sKKyAgICBtX3N0YXR1c1RleHQgPSBzdGF0
dXNUZXh0OworfQorCitjb25zdCBIVFRQSGVhZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6aGVhZGVyRmllbGRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oZWFkZXJGaWVsZHM7
Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKGNv
bnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2hl
YWRlckZpZWxkcy5hZGQobmFtZSwgdmFsdWUpOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpjbGVhckhlYWRlckZpZWxkcygpCit7CisgICAgbV9oZWFkZXJGaWVsZHMuY2xl
YXIoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdF
Ql9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43YmJlM2I4MjNjMzg0ZTYxMmFhZTk2ZDI3OWY3Mjg0OGJiNWNj
MDc2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorCisjaWYg
RU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRv
bWljU3RyaW5nOworCitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSB7CitwdWJsaWM6
CisgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKyAgICB+V2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UoKTsKKworICAgIGludCBzdGF0dXNDb2RlKCkgY29uc3Q7CisgICAgdm9pZCBz
ZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKTsKKyAgICBTdHJpbmcgc3RhdHVzVGV4dCgpIGNv
bnN0OworICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpOwor
ICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcygpIGNvbnN0OworICAgIHZvaWQg
YWRkSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlKTsKKyAgICB2b2lkIGNsZWFySGVhZGVyRmllbGRzKCk7CisKK3ByaXZhdGU6CisgICAgaW50
IG1fc3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0OworICAgIEhUVFBIZWFkZXJN
YXAgbV9oZWFkZXJGaWVsZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57223</attachid>
            <date>2010-05-27 04:47:05 -0700</date>
            <delta_ts>2010-05-31 02:01:30 -0700</delta_ts>
            <desc>Patch (conflict resolved for bots&apos; sake)</desc>
            <filename>bug-38728-20100527204703.patch</filename>
            <type>text/plain</type>
            <size>22633</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWFmZjhhMWE1MDI4MzY2MzJlOTQwMjhlZjBkZDQ1MDlkYzkwYWNjNi4uODA3OWMzMmUyNTgwMzIz
YmFhMmYwMGI3MDk2MThiYzljNmE1ZDAxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0wNS0yNyAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBk
aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVz
cG9uc2UuCisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGUgZXhpc3RpbmcgdGVzdHMgd2lsbCBz
dWZmaWNlICh3ZWJzb2NrZXQvKikuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0
dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMgY29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hl
Y2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6c3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTo6c2V0U3RhdHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZTo6c3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMpOgor
ICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDogQWRkZWQu
CisKIDIwMTAtMDUtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA1YzAzZDVmZjk1MTZlZjFiMDY5
NjRhNDA0MzA3NjdhMmFmYjQ1ZTY3Li4yMDI3YTExZmEwMjU2YzYzMGRiZjk5ZjNhZjZmN2RhY2Jl
Yjc1ZDI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTM2OTcsNyArMzY5Nyw5IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogCVdlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKLQlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5oCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3QuaCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmgKIAogaWYgRU5BQkxFX1dPUktFUlMKIHdlYmNvcmVfc291cmNlcyArPSBcCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDll
YTY5NTI5YzBhMmI0OTI4N2ZlMTg5YTUwNzZjNjlkOWI2YWIyN2MuLmRlYWVjYWY0NGY5ZjVkMWU5
MjA0ZWI0YzFkNjU0Nzk5ZjFhNDdlYWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNzYxLDYgKzM3NjEsOCBAQAogICAgICAg
ICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgnLAogICAgICAgICAgICAgJ3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oJywKKyAgICAgICAgICAgICd3ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCcsCisgICAgICAgICAgICAnd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oJywKICAgICAgICAgICAgICd3ZWJz
b2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oJywKICAgICAg
ICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA1ZDVjOWNmMDU5YWUwNmU4
ZjhjYzJlZDEyNTI5MzQzZGE5ODg0NTRiLi45ZDFjODVhMDJkYjYyNzYwMzRkZjkxODYzMmQyYTEz
NmY4ODM5ZWY0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS5wcm8KQEAgLTI4NDYsNiArMjg0Niw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJM
RV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbENs
aWVudC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKKyAgICAgICAgd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIFwKICAgICAgICAgcGxhdGZvcm0v
bmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2YXRlLmgKIAogICAgIFNPVVJDRVMgKz0g
XApAQCAtMjg1Myw2ICsyODU0LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NL
RVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBcCiAgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBcCiAgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAorICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9Tb2Nr
ZXRTdHJlYW1FcnJvckJhc2UuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRT
dHJlYW1IYW5kbGVCYXNlLmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpp
bmRleCBlY2IyMzBhMDMyYjhjNzcwZjg2ZWY0NWM4NjBjODdmZDAyMzI2N2U1Li4xODhiMTZlMDJh
YzI3YTVjN2I5ZjBjYjVjNzNiZDYyZjY2MWZlYjc4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTQ1NDI1LDYgKzQ1NDI1LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
d2Vic29ja2V0c1xXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAiDQogCQkJCT4N
CiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjZWJhYzRhZDE5ODEzOGVjZGU2NzEzMDAxZTJlYmY0Y2E1MTMyNWU3Li5jNTI0MGIzYmJk
ODFlMGIyMjZiNjE3N2FhNGNkN2Y4NzllYTY5ZDNlIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMyOSw2ICsxMzI5LDggQEAKIAkJNzU3OTNFRDUwRDBD
RTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VEMjBEMENFODVCMDA3RkMwQUMg
LyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKIAkJNzYzN0M1NDExMTJFN0I3NDAw
M0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovOyB9OwogCQk3NjM3QzU0MzExMkU3QjdF
MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8q
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLzsgfTsKKwkJNzY3Rjk5QkUxMUExMTk0QTAw
ODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAv
KiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi87IH07CisJCTc2N0Y5OUMwMTFBMTE5
NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFE
IC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi87IH07CiAJCTc2OTNCQUQyMTA2QzJE
Q0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxl
UGx1Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNzY5M0JBRDMxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFDRjEwNkMyRENBMDA3
QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLzsgfTsKIAkJNzY5M0JBRDQxMDZDMkRDQTAwN0Iw
ODIzIC8qIFBsdWdpbkhhbHRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICov
OyB9OwpAQCAtNjk3MCw2ICs2OTcyLDggQEAKIAkJNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8q
IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYzN0M1NDIx
MTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3NjdGOTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JB
Q0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhhbHRhYmxlUGx1Z2luLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luSGFsdGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBRDAxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdp
bkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNjgzLDYgKzExNjg3LDggQEAKIAkJ
NTE4QTM0QkQxMDI2QzgzMTAwMUI2ODk2IC8qIHdlYnNvY2tldHMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAv
KiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovLAorCQkJCTc2N0Y5OUJEMTFBMTE5NEEw
MDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi8sCiAJCQkJNTExMjI0
NzExMENGQjhDNjAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywK
IAkJCQk1MTEyMjQ3MzEwQ0ZCOEQ4MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuaCAqLywKIAkJCQk1MTEyMjQ3NTEwQ0ZCOEU4MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWxDbGllbnRXcmFwcGVyLmggKi8sCkBAIC0xOTM3MCw2ICsxOTM3Niw3IEBACiAJ
CQkJQjY2OTNFRUUxMUFENjNFNjAwM0YyNzcwIC8qIElEQk9iamVjdFN0b3JlUmVxdWVzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjY2OTNFRjMxMUFENjQ4NjAwM0YyNzcwIC8qIEpTSURCT2JqZWN0
U3RvcmVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODNCM0FGMTExQURFRkY1MDA0NTg4
MDkgLyogSFRNTDVTY3JpcHRSdW5uZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTc2N0Y5OUMwMTFB
MTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yMTY2NSw2ICsyMTY3Miw3IEBACiAJCQkJQjY2OTNFRjIxMUFENjQ4NjAwM0YyNzcw
IC8qIEpTSURCT2JqZWN0U3RvcmVSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI2MjdG
QjJEMTFBRDc0MzUwMEU5N0I3MiAvKiBJREJEYXRhYmFzZUltcGwuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTgzQjNBRjAxMUFERUZGNTAwNDU4ODA5IC8qIEhUTUw1U2NyaXB0UnVubmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
d2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKaW5kZXggZWE0ZjVlNTY1N2M1M2MyNTMyZTZkOTBhZWM0MTBl
MGQ3OTk3NmJlMy4uOTBkOWFlY2MzMTA2OWYwMDU0MDU1M2ViMDY5YzEyNGU1Yjk4YzZjNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTU2LDcgKzU2LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciByYW5kb21DaGFyYWN0
ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AQUJDREVGR0hJ
SktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IjsK
IAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhlYWRlciwg
aW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQorLy8gUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSBy
ZWNlaXZlZCBlbm91Z2ggZGF0YSB0byBwYXJzZSBhIGxpbmUuCisvLyBJZiB3ZSBmYWlsIHRvIHBh
cnNlIHN0YXR1cyBjb2RlIG9yIHN0YXR1cyB0ZXh0LCBzdGF0dXNDb2RlIHdpbGwgYmUgc2V0IHRv
IHplcm8gYW5kIHN0YXR1c1RleHQgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorc3RhdGljIGJvb2wg
cGFyc2VSZXNwb25zZUxpbmUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBpbnQmIHN0YXR1
c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCwgc2l6ZV90JiBsaW5lTGVuZ3RoKQogewogICAgIGNv
bnN0IGNoYXIqIHNwYWNlMSA9IDA7CiAgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKQEAgLTcy
LDEwICs3NCwyOSBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hh
ciogaGVhZGVyLCBpbnQgbGVuLCBzaXplX3QmIGxpbmVMZW5ndAogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKLSAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCi0gICAgICAgIHJldHVybiAiIjsKLSAg
ICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworICAgICAg
ICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0LgorCisgICAg
c3RhdHVzQ29kZSA9IDA7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNwYWNlMiB8fCAqKHAgLSAxKSAh
PSAnXHInKSAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBTdHJpbmcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIg
LSBzcGFjZTEgLSAxKTsKKyAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAhPSAzKSAv
LyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgaWYgKHN0
YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3RhdHVzQ29kZVN0cmluZ1tpXSA+ICc5JykKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBvayA9IGZhbHNlOworICAgIHN0YXR1
c0NvZGUgPSBzdGF0dXNDb2RlU3RyaW5nLnRvSW50KCZvayk7CisgICAgQVNTRVJUKG9rKTsKKyAg
ICBpZiAoc3RhdHVzQ29kZSA8IDEwMCB8fCBzdGF0dXNDb2RlID49IDYwMCkgeworICAgICAgICBz
dGF0dXNDb2RlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdHVz
VGV4dCA9IFN0cmluZyhzcGFjZTIgKyAxLCBwIC0gc3BhY2UyIC0gMik7CisgICAgcmV0dXJuIHRy
dWU7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwmIHVybCkKQEAg
LTMxMiwyMSArMzMzLDI0IEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGVhclNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKQogaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRz
aGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiB7CiAgICAgbV9tb2RlID0gSW5j
b21wbGV0ZTsKKyAgICBpbnQgc3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgc3RhdHVzVGV4dDsKICAg
ICBzaXplX3QgbGluZUxlbmd0aDsKLSAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVz
cG9uc2VDb2RlKGhlYWRlciwgbGVuLCBsaW5lTGVuZ3RoKTsKLSAgICBpZiAoY29kZS5pc051bGwo
KSkgeworICAgIGlmICghcGFyc2VSZXNwb25zZUxpbmUoaGVhZGVyLCBsZW4sIHN0YXR1c0NvZGUs
IHN0YXR1c1RleHQsIGxpbmVMZW5ndGgpKSB7CiAgICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4g
cmVjZWl2ZWQgeWV0LgogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmIChjb2RlLmlz
RW1wdHkoKSkgeworICAgIGlmICghc3RhdHVzQ29kZSkgewogICAgICAgICBtX21vZGUgPSBGYWls
ZWQ7CiAgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vIHJlc3BvbnNlIGNvZGUgZm91bmQ6ICIg
KyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsaW5lTGVuZ3RoKSwgMCwgY2xpZW50T3JpZ2lu
KCkpOwogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAgICBMT0coTmV0d29yaywgInJlc3Bv
bnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAoY29kZSAhPSAiMTAx
IikgeworICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJWQiLCBzdGF0dXNDb2RlKTsK
KyAgICBtX3Jlc3BvbnNlLnNldFN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7CisgICAgbV9yZXNwb25z
ZS5zZXRTdGF0dXNUZXh0KHN0YXR1c1RleHQpOworICAgIGlmIChzdGF0dXNDb2RlICE9IDEwMSkg
ewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVu
ZXhwZWN0ZWQgcmVzcG9uc2UgY29kZToiICsgY29kZSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAg
ICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlw
ZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIHJlc3BvbnNl
IGNvZGU6ICVkIiwgc3RhdHVzQ29kZSksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0
dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwpAQCAtMzM1LDE3ICszNTksMTYg
QEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFy
KiBoZWFkZXIsIHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAg
ICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwogICAgIGNv
bnN0IGNoYXIqIGhlYWRlckZpZWxkcyA9IHN0cm5zdHIoaGVhZGVyLCAiXHJcbiIsIGxlbik7IC8v
IHNraXAgc3RhdHVzIGxpbmUKICAgICBBU1NFUlQoaGVhZGVyRmllbGRzKTsKICAgICBoZWFkZXJG
aWVsZHMgKz0gMjsgLy8gc2tpcCAiXHJcbiIuCi0gICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQ
SGVhZGVycyhoZWFkZXJGaWVsZHMsIGhlYWRlciArIGxlbiwgJmhlYWRlcnMpOworICAgIGNvbnN0
IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyRmllbGRzLCBoZWFkZXIgKyBsZW4pOwog
ICAgIGlmICghcCkgewogICAgICAgICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVycyBmYWls
ZWQiKTsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICByZXR1cm4gbGVuOwogICAg
IH0KLSAgICBpZiAoIXByb2Nlc3NIZWFkZXJzKGhlYWRlcnMpIHx8ICFjaGVja1Jlc3BvbnNlSGVh
ZGVycygpKSB7CisgICAgaWYgKCFwcm9jZXNzSGVhZGVycygpIHx8ICFjaGVja1Jlc3BvbnNlSGVh
ZGVycygpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrLCAiaGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7
CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIHAgLSBoZWFkZXI7CkBA
IC00MTgsNiArNDQxLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRD
b29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3NldENvb2tpZTIgPSBzZXRD
b29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2ViU29ja2V0
SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0
aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9IG1fdXJsLmNv
cHkoKTsKQEAgLTQyNiw4ICs0NTQsMTAgQEAgS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBV
UkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAgIHJldHVybiB1cmw7CiB9
CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0
IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpCitj
b25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogeworICAgIG1fcmVzcG9uc2UuY2xlYXJIZWFkZXJG
aWVsZHMoKTsKKwogICAgIFZlY3RvcjxjaGFyPiBuYW1lOwogICAgIFZlY3RvcjxjaGFyPiB2YWx1
ZTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVuZDsgcCsrKSB7CkBAIC00
OTUsMTQgKzUyNSwxNSBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQ
SGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQogICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVz
IiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgp
KTsKLSAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICAgICAgbV9y
ZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCi1ib29sIFdlYlNvY2tldEhh
bmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK2Jv
b2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycygpCiB7CisgICAgY29uc3QgSFRU
UEhlYWRlck1hcCYgaGVhZGVycyA9IG1fcmVzcG9uc2UuaGVhZGVyRmllbGRzKCk7CiAgICAgZm9y
IChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQg
IT0gaGVhZGVycy5lbmQoKTsgKytpdCkgewogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAg
ICAgICBjYXNlIE5vcm1hbDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApp
bmRleCAzZTBjNjZhNmE0OGM2OGM2NzlkMTc0NTQwZTRjZWZiODdiMTFlNjQ3Li5hMGMyYWY3Zjk3
NWFhMmE4MDYyZmRiZmRkNjIyMTA4MWIxOTgyMDA0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZS5oCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKICNpbmNs
dWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xh
c3MgSFRUUEhlYWRlck1hcDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAg
ICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAgLTg2
LDEyICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGNvbnN0IFN0cmluZyYg
c2VydmVyU2V0Q29va2llMigpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFNlcnZlclNldENvb2tp
ZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKTsKIAorICAgICAgICBjb25zdCBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2UoKSBjb25zdDsKKwogICAg
IHByaXZhdGU6CiAgICAgICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRpY2F0aW9uQW5kQ29va2ll
cygpIGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJzIGV4Y2VwdCBmb3IgdGhl
IHR3byBwcmVkZWZpbmVkIG9uZXMuCi0gICAgICAgIGNvbnN0IGNoYXIqIHJlYWRIVFRQSGVhZGVy
cyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFk
ZXJzKTsKLSAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBo
ZWFkZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIq
IHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOworICAgICAgICBib29sIHByb2Nlc3NIZWFkZXJzKCk7
CiAgICAgICAgIGJvb2wgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKIAogICAgICAgICBLVVJMIG1f
dXJsOwpAQCAtMTExLDYgKzExMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3Ry
aW5nIG1fc2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2tleTNbOF07
CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlWzE2XTsK
KworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmYjk4YWJhNjllOTkyNzIy
YjJlYjE2NjUxZmYzZDg3NjViOGNhZWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsODggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5o
IgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKCkK
K3sKK30KKworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZSgpCit7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVz
Q29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzQ29kZTsKK30KKwordm9pZCBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3sK
KyAgICBBU1NFUlQoc3RhdHVzQ29kZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDYwMCk7CisgICAg
bV9zdGF0dXNDb2RlID0gc3RhdHVzQ29kZTsKK30KKworU3RyaW5nIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpzdGF0dXNUZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGF0dXNUZXh0
OworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNUZXh0KGNv
bnN0IFN0cmluZyYgc3RhdHVzVGV4dCkKK3sKKyAgICBtX3N0YXR1c1RleHQgPSBzdGF0dXNUZXh0
OworfQorCitjb25zdCBIVFRQSGVhZGVyTWFwJiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6
aGVhZGVyRmllbGRzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9oZWFkZXJGaWVsZHM7Cit9CisK
K3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKGNvbnN0IEF0
b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBtX2hlYWRlckZp
ZWxkcy5hZGQobmFtZSwgdmFsdWUpOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOjpjbGVhckhlYWRlckZpZWxkcygpCit7CisgICAgbV9oZWFkZXJGaWVsZHMuY2xlYXIoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NL
RVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi43YmJlM2I4MjNjMzg0ZTYxMmFhZTk2ZDI3OWY3Mjg0OGJiNWNjMDc2Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3Ry
aW5nOworCitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSB7CitwdWJsaWM6CisgICAg
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKyAgICB+V2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UoKTsKKworICAgIGludCBzdGF0dXNDb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGF0
dXNDb2RlKGludCBzdGF0dXNDb2RlKTsKKyAgICBTdHJpbmcgc3RhdHVzVGV4dCgpIGNvbnN0Owor
ICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQpOworICAgIGNv
bnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxkcygpIGNvbnN0OworICAgIHZvaWQgYWRkSGVh
ZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsK
KyAgICB2b2lkIGNsZWFySGVhZGVyRmllbGRzKCk7CisKK3ByaXZhdGU6CisgICAgaW50IG1fc3Rh
dHVzQ29kZTsKKyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0OworICAgIEhUVFBIZWFkZXJNYXAgbV9o
ZWFkZXJGaWVsZHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNlbmRpZiAvLyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57439</attachid>
            <date>2010-05-31 02:01:36 -0700</date>
            <delta_ts>2010-05-31 20:58:26 -0700</delta_ts>
            <desc>Patch (Add ChallengeResponse)</desc>
            <filename>bug-38728-20100531180135.patch</filename>
            <type>text/plain</type>
            <size>24270</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NTU3YjY1N2NmMDJkYTc5MGQ0NTdkMTJlMmExMmI3NGQwNjVlYTFlNi4uMjNkNzNhZjAyMmQ3NDMz
OTdmYTViODg2ZTQ2YTgwYzUwMzg3ZWRiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wNS0zMSAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBk
aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVz
cG9uc2UuCisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGUgZXhpc3RpbmcgdGVzdHMgd2lsbCBz
dWZmaWNlICh3ZWJzb2NrZXQvKikuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0
dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMgY29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hl
Y2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFs
bGVuZ2VSZXNwb25zZTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6fldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXND
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRT
dGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
OjpzdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOjpzZXRTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjbGVhckhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2hhbGxlbmdlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldENoYWxsZW5nZVJl
c3BvbnNlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
Lmg6IEFkZGVkLgorCiAyMDEwLTA1LTMwICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggOWI5NTMzMDgyYzRi
OWJmNDZiMGY2NDY4OTAyY2UxZWExZGJjYTA3Ni4uNGVlZTQ4MDM4NDc4NGRhNDFmYTNiY2U1M2Nm
YWViODg4ZjQ3MDYzYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zNzA2LDcgKzM3MDYsOSBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKIAlX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZS5oCiAKIGlmIEVOQUJMRV9XT1JLRVJTCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpp
bmRleCA1YjRjNTU5MDU3YTJkYjdlYmViYTM4YzhhOWUzYzBkMTlkMWZjMzNjLi40OTY3ZDlhYjEx
ZmQ4YzVmZDYwZjA3NzExNjE5ODJhNmZiOTNjMzdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzc3MCw2ICszNzcwLDggQEAK
ICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oJywKICAgICAgICAg
ICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwJywKICAgICAgICAg
ICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCcsCisgICAgICAgICAg
ICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAnLAorICAgICAgICAg
ICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCcsCiAgICAgICAgICAg
ICAnd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAg
ICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCcs
CiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAnLApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZDNlYjExNWRi
NjRlZjc2MDZhZTA5Mjk0YzE2Njk1OTYyZmE3Y2I0ZC4uYmQzYjU3YjhlYzJlY2YxZDUwZWI2YmNl
NTNmZjFkNTQ2NDYzY2ExYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yODUzLDYgKzI4NTMsNyBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENo
YW5uZWxDbGllbnQuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgg
XAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBcCisgICAg
ICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBcCiAgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCiAKICAgICBTT1VS
Q0VTICs9IFwKQEAgLTI4NjAsNiArMjg2MSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9X
RUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAg
XAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKKyAgICAgICAgd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRz
L1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdv
cmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsv
U29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggZmNiYjdmNTQwZThmYThmMzQ4Zjk1ZWY4MTNjM2VjMGJkMjA4ZjgxYy4uZTBi
NWQxMDM5NjRkYTFiZWVjMjRhNDJhODBmODhjMGJhMWFiNzZjNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCkBAIC00NTUwOSw2ICs0NTUwOSwxNCBAQAogCQkJCT4NCiAJCQk8
L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHdlYnNvY2tldHNcV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggMTYxOTRlNzBlNDc2OWJlNzdiYjZhOWQ4ZmFkMzlhZjkzM2U4MjUzMC4uNzBh
NzY4YThhNmU2NGU4NTA1MTY4NjJmYzdiZjIyOTk0OTI2OGU2ZiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMzEsNiArMTMzMSw4IEBACiAJCTc1Nzkz
RUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDIwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07CiAJCTc2MzdDNTQxMTEy
RTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQwMTEyRTdCNzQwMDNE
NkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNzYzN0M1NDMx
MTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQyMTEyRTdCN0UwMDNE
NkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CisJCTc2N0Y5OUJFMTFB
MTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRDExQTExOTRBMDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9OworCQk3NjdGOTlD
MDExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2N0Y5OUJGMTFBMTE5NTYw
MDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovOyB9OwogCQk3NjkzQkFE
MjEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBI
YWx0YWJsZVBsdWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0YxMDZD
MkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi87IH07CiAJCTc2OTNCQUQ0MTA2QzJE
Q0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0
ZXIuaCAqLzsgfTsKQEAgLTY5ODIsNiArNjk4NCw4IEBACiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdG
QzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFr
ZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29j
a2V0SGFuZHNoYWtlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2
MzdDNTQyMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFE
IC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIYWx0YWJsZVBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkhhbHRlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2lu
SGFsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTcxMCw2ICsxMTcxNCw4
IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRzICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3NjdGOTlCRjExQTExOTU2MDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLywKKwkJCQk3NjdGOTlCRDEx
QTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovLAogCQkJ
CTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5j
cHAgKi8sCiAJCQkJNTExMjI0NzMxMENGQjhEODAwODA5OUQ3IC8qIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmggKi8sCiAJCQkJNTExMjI0NzUxMENGQjhFODAwODA5OUQ3IC8qIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oICovLApAQCAtMTk0MDgsNiArMTk0MTQs
NyBAQAogCQkJCUM1MURBOUE3MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleEltcGwuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUM1MURBOUE5MTFBRUYyQzEwMDk3OTlDNSAvKiBJREJJbmRleFJlcXVl
c3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkJDOUQxMTFBRUY4MzgwMDdDMkJGRSAvKiBKU0lE
QkluZGV4UmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzY3Rjk5QzAxMUExMTk1NjAwODBD
NTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIx
NzA3LDYgKzIxNzE0LDcgQEAKIAkJCQlDNTFEQTlBNjExQUVGMkMxMDA5Nzk5QzUgLyogSURCSW5k
ZXhJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUM1MURBOUE4MTFBRUYyQzEwMDk3OTlDNSAv
KiBJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzVCQkM5RDAxMUFFRjgz
ODAwN0MyQkZFIC8qIEpTSURCSW5kZXhSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc2
N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAK
aW5kZXggZWE0ZjVlNTY1N2M1M2MyNTMyZTZkOTBhZWM0MTBlMGQ3OTk3NmJlMy4uNGFhZWM4ZTYz
MzQ4MjRlYWIwYjVlODA0MDdhMTI0NzA3NDEzMDE2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTU2LDcgKzU2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3QgY2hhciByYW5kb21DaGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtd
ID0gIiFcIiMkJSYnKCkqKywtLi86Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxd
Xl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRy
YWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5l
TGVuZ3RoKQorLy8gUmV0dXJuIHRydWUgaWYgd2UgaGF2ZSByZWNlaXZlZCBlbm91Z2ggZGF0YSB0
byBwYXJzZSBhIGxpbmUuCisvLyBJZiB3ZSBmYWlsIHRvIHBhcnNlIHN0YXR1cyBjb2RlIG9yIHN0
YXR1cyB0ZXh0LCBzdGF0dXNDb2RlIHdpbGwgYmUgc2V0IHRvIHplcm8gYW5kIHN0YXR1c1RleHQg
d2lsbCByZW1haW4gdW5jaGFuZ2VkLgorc3RhdGljIGJvb2wgcGFyc2VSZXNwb25zZUxpbmUoY29u
c3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVz
VGV4dCwgc2l6ZV90JiBsaW5lTGVuZ3RoKQogewogICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7
CiAgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKQEAgLTcyLDEwICs3NCwyOSBAQCBzdGF0aWMg
U3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBz
aXplX3QmIGxpbmVMZW5ndAogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChwIC0g
aGVhZGVyID09IGxlbikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGlmICghc3BhY2Ux
IHx8ICFzcGFjZTIpCi0gICAgICAgIHJldHVybiAiIjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNl
MSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdl
IGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0LgorCisgICAgc3RhdHVzQ29kZSA9IDA7CisgICAg
aWYgKCFzcGFjZTEgfHwgIXNwYWNlMiB8fCAqKHAgLSAxKSAhPSAnXHInKSAvLyBUaGUgbGluZSBt
dXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcg
c3RhdHVzQ29kZVN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICBp
ZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgoKSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNv
bnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAn
MCcgfHwgc3RhdHVzQ29kZVN0cmluZ1tpXSA+ICc5JykKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgYm9vbCBvayA9IGZhbHNlOworICAgIHN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlU3Ry
aW5nLnRvSW50KCZvayk7CisgICAgQVNTRVJUKG9rKTsKKyAgICBpZiAoc3RhdHVzQ29kZSA8IDEw
MCB8fCBzdGF0dXNDb2RlID49IDYwMCkgeworICAgICAgICBzdGF0dXNDb2RlID0gMDsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdHVzVGV4dCA9IFN0cmluZyhzcGFjZTIg
KyAxLCBwIC0gc3BhY2UyIC0gMik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBTdHJp
bmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwmIHVybCkKQEAgLTMxMiwyMSArMzMzLDI0IEBAIHZv
aWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogaW50
IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFk
ZXIsIHNpemVfdCBsZW4pCiB7CiAgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKKyAgICBpbnQgc3Rh
dHVzQ29kZTsKKyAgICBTdHJpbmcgc3RhdHVzVGV4dDsKICAgICBzaXplX3QgbGluZUxlbmd0aDsK
LSAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVzcG9uc2VDb2RlKGhlYWRlciwgbGVu
LCBsaW5lTGVuZ3RoKTsKLSAgICBpZiAoY29kZS5pc051bGwoKSkgeworICAgIGlmICghcGFyc2VS
ZXNwb25zZUxpbmUoaGVhZGVyLCBsZW4sIHN0YXR1c0NvZGUsIHN0YXR1c1RleHQsIGxpbmVMZW5n
dGgpKSB7CiAgICAgICAgIC8vIEp1c3QgaGFzbid0IGJlZW4gcmVjZWl2ZWQgeWV0LgogICAgICAg
ICByZXR1cm4gLTE7CiAgICAgfQotICAgIGlmIChjb2RlLmlzRW1wdHkoKSkgeworICAgIGlmICgh
c3RhdHVzQ29kZSkgewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAgICAgICAgIG1fY29udGV4
dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgIk5vIHJlc3BvbnNlIGNvZGUgZm91bmQ6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2Uo
aGVhZGVyLCBsaW5lTGVuZ3RoKSwgMCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICByZXR1cm4g
bGVuOwogICAgIH0KLSAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51
dGY4KCkuZGF0YSgpKTsKLSAgICBpZiAoY29kZSAhPSAiMTAxIikgeworICAgIExPRyhOZXR3b3Jr
LCAicmVzcG9uc2UgY29kZTogJWQiLCBzdGF0dXNDb2RlKTsKKyAgICBtX3Jlc3BvbnNlLnNldFN0
YXR1c0NvZGUoc3RhdHVzQ29kZSk7CisgICAgbV9yZXNwb25zZS5zZXRTdGF0dXNUZXh0KHN0YXR1
c1RleHQpOworICAgIGlmIChzdGF0dXNDb2RlICE9IDEwMSkgewogICAgICAgICBtX21vZGUgPSBG
YWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExv
Z01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29k
ZToiICsgY29kZSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1l
c3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWws
IFN0cmluZzo6Zm9ybWF0KCJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29k
ZSksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAg
bV9tb2RlID0gTm9ybWFsOwpAQCAtMzM1LDE3ICszNTksMTYgQEAgaW50IFdlYlNvY2tldEhhbmRz
aGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4p
CiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9
Ci0gICAgSFRUUEhlYWRlck1hcCBoZWFkZXJzOwogICAgIGNvbnN0IGNoYXIqIGhlYWRlckZpZWxk
cyA9IHN0cm5zdHIoaGVhZGVyLCAiXHJcbiIsIGxlbik7IC8vIHNraXAgc3RhdHVzIGxpbmUKICAg
ICBBU1NFUlQoaGVhZGVyRmllbGRzKTsKICAgICBoZWFkZXJGaWVsZHMgKz0gMjsgLy8gc2tpcCAi
XHJcbiIuCi0gICAgY29uc3QgY2hhciogcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXJGaWVsZHMs
IGhlYWRlciArIGxlbiwgJmhlYWRlcnMpOworICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhl
YWRlcnMoaGVhZGVyRmllbGRzLCBoZWFkZXIgKyBsZW4pOwogICAgIGlmICghcCkgewogICAgICAg
ICBMT0coTmV0d29yaywgInJlYWRIVFRQSGVhZGVycyBmYWlsZWQiKTsKICAgICAgICAgbV9tb2Rl
ID0gRmFpbGVkOwogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAgICBpZiAoIXByb2Nlc3NI
ZWFkZXJzKGhlYWRlcnMpIHx8ICFjaGVja1Jlc3BvbnNlSGVhZGVycygpKSB7CisgICAgaWYgKCFw
cm9jZXNzSGVhZGVycygpIHx8ICFjaGVja1Jlc3BvbnNlSGVhZGVycygpKSB7CiAgICAgICAgIExP
RyhOZXR3b3JrLCAiaGVhZGVyIHByb2Nlc3MgZmFpbGVkIik7CiAgICAgICAgIG1fbW9kZSA9IEZh
aWxlZDsKICAgICAgICAgcmV0dXJuIHAgLSBoZWFkZXI7CkBAIC0zNTUsNiArMzc4LDcgQEAgaW50
IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBjaGFyKiBoZWFk
ZXIsIHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IEluY29tcGxldGU7CiAgICAgICAgIHJl
dHVybiAtMTsKICAgICB9CisgICAgbV9yZXNwb25zZS5zZXRDaGFsbGVuZ2VSZXNwb25zZShyZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihwKSk7CiAgICAgaWYgKG1lbWNtcChw
LCBtX2V4cGVjdGVkQ2hhbGxlbmdlUmVzcG9uc2UsIHNpemVvZihtX2V4cGVjdGVkQ2hhbGxlbmdl
UmVzcG9uc2UpKSkgewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAgICAgICAgIHJldHVybiAo
cCAtIGhlYWRlcikgKyBzaXplb2YobV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlKTsKQEAgLTQx
OCw2ICs0NDIsMTEgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OnNldFNlcnZlclNldENvb2tp
ZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKQogICAgIG1fc2V0Q29va2llMiA9IHNldENvb2tp
ZTI7CiB9CiAKK2NvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBXZWJTb2NrZXRIYW5k
c2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZXNwb25zZTsKK30KKwogS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50
aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogewogICAgIEtVUkwgdXJsID0gbV91cmwuY29weSgp
OwpAQCAtNDI2LDggKzQ1NSwxMCBAQCBLVVJMIFdlYlNvY2tldEhhbmRzaGFrZTo6aHR0cFVSTEZv
ckF1dGhlbnRpY2F0aW9uQW5kQ29va2llcygpIGNvbnN0CiAgICAgcmV0dXJuIHVybDsKIH0KIAot
Y29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycykKK2NvbnN0
IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0
YXJ0LCBjb25zdCBjaGFyKiBlbmQpCiB7CisgICAgbV9yZXNwb25zZS5jbGVhckhlYWRlckZpZWxk
cygpOworCiAgICAgVmVjdG9yPGNoYXI+IG5hbWU7CiAgICAgVmVjdG9yPGNoYXI+IHZhbHVlOwog
ICAgIGZvciAoY29uc3QgY2hhciogcCA9IHN0YXJ0OyBwIDwgZW5kOyBwKyspIHsKQEAgLTQ5NSwx
NCArNTI2LDE1IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFk
ZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlCiAgICAgICAgICAgICByZXR1cm4g
MDsKICAgICAgICAgfQogICAgICAgICBMT0coTmV0d29yaywgIm5hbWU9JXMgdmFsdWU9JXMiLCBu
YW1lU3RyLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHZhbHVlU3RyLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICBoZWFkZXJzLT5hZGQobmFtZVN0ciwgdmFsdWVTdHIpOworICAgICAgICBtX3Jlc3Bv
bnNlLmFkZEhlYWRlckZpZWxkKG5hbWVTdHIsIHZhbHVlU3RyKTsKICAgICB9CiAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWJvb2wgV2ViU29ja2V0SGFuZHNo
YWtlOjpwcm9jZXNzSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzKQorYm9vbCBX
ZWJTb2NrZXRIYW5kc2hha2U6OnByb2Nlc3NIZWFkZXJzKCkKIHsKKyAgICBjb25zdCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzID0gbV9yZXNwb25zZS5oZWFkZXJGaWVsZHMoKTsKICAgICBmb3IgKEhU
VFBIZWFkZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gaGVhZGVycy5iZWdpbigpOyBpdCAhPSBo
ZWFkZXJzLmVuZCgpOyArK2l0KSB7CiAgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7CiAgICAgICAg
IGNhc2UgTm9ybWFsOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4
IDNlMGM2NmE2YTQ4YzY4YzY3OWQxNzQ1NDBlNGNlZmI4N2IxMWU2NDcuLmEwYzJhZjdmOTc1YWEy
YTgwNjJmZGJmZGQ2MjIxMDgxYjE5ODIwMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmgKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBI
VFRQSGVhZGVyTWFwOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBj
bGFzcyBXZWJTb2NrZXRIYW5kc2hha2UgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtODYsMTIg
Kzg2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2
ZXJTZXRDb29raWUyKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29va2llMihj
b25zdCBTdHJpbmcmIHNldENvb2tpZTIpOwogCisgICAgICAgIGNvbnN0IFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0OworCiAgICAgcHJp
dmF0ZToKICAgICAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkg
Y29uc3Q7CiAKICAgICAgICAgLy8gUmVhZHMgYWxsIGhlYWRlcnMgZXhjZXB0IGZvciB0aGUgdHdv
IHByZWRlZmluZWQgb25lcy4KLSAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMp
OwotICAgICAgICBib29sIHByb2Nlc3NIZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMpOworICAgICAgICBjb25zdCBjaGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3Rh
cnQsIGNvbnN0IGNoYXIqIGVuZCk7CisgICAgICAgIGJvb2wgcHJvY2Vzc0hlYWRlcnMoKTsKICAg
ICAgICAgYm9vbCBjaGVja1Jlc3BvbnNlSGVhZGVycygpOwogCiAgICAgICAgIEtVUkwgbV91cmw7
CkBAIC0xMTEsNiArMTEzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBTdHJpbmcg
bV9zZWNXZWJTb2NrZXRLZXkyOwogICAgICAgICB1bnNpZ25lZCBjaGFyIG1fa2V5M1s4XTsKICAg
ICAgICAgdW5zaWduZWQgY2hhciBtX2V4cGVjdGVkQ2hhbGxlbmdlUmVzcG9uc2VbMTZdOworCisg
ICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIG1fcmVzcG9uc2U7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzBkYzA1ZGZkOGMzYmJjN2MyY2Fm
NWNiNzQwMzgyMmUyZmViZDVmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCIKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgor
I2luY2x1ZGUgPGNzdHJpbmc+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKwordXNpbmcg
bmFtZXNwYWNlIHN0ZDsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlKCkKK3sKKyAg
ICBtZW1zZXQodmFsdWUsIDAsIHNpemVvZih2YWx1ZSkpOworfQorCit2b2lkIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6c2V0KGNvbnN0IHVuc2lnbmVkIGNo
YXIgY2hhbGxlbmdlUmVzcG9uc2VbMTZdKQoreworICAgIG1lbWNweSh2YWx1ZSwgY2hhbGxlbmdl
UmVzcG9uc2UsIHNpemVvZih2YWx1ZSkpOworfQorCitXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKQoreworfQorCitXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6fldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKCkKK3sKK30KKworaW50IFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNDb2RlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zdGF0dXNDb2RlOworfQorCit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpz
ZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKQoreworICAgIEFTU0VSVChzdGF0dXNDb2RlID49
IDEwMCAmJiBzdGF0dXNDb2RlIDwgNjAwKTsKKyAgICBtX3N0YXR1c0NvZGUgPSBzdGF0dXNDb2Rl
OworfQorCitTdHJpbmcgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1c1RleHQoKSBj
b25zdAoreworICAgIHJldHVybiBtX3N0YXR1c1RleHQ7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KQor
eworICAgIG1fc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7Cit9CisKK2NvbnN0IEhUVFBIZWFkZXJN
YXAmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMoKSBjb25zdAorewor
ICAgIHJldHVybiBtX2hlYWRlckZpZWxkczsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTo6YWRkSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIG1faGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7Cit9
CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNsZWFySGVhZGVyRmllbGRzKCkK
K3sKKyAgICBtX2hlYWRlckZpZWxkcy5jbGVhcigpOworfQorCitXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNo
YWxsZW5nZVJlc3BvbnNlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jaGFsbGVuZ2VSZXNwb25z
ZTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0Q2hhbGxlbmdlUmVz
cG9uc2UoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pCit7CisgICAg
bV9jaGFsbGVuZ2VSZXNwb25zZS5zZXQoY2hhbGxlbmdlUmVzcG9uc2UpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ1Yzg5ZDk2MjZkZmM5OWRjZmRmZGY0YjI5NjUzZjM3ZDg4MTZmMzAKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaApAQCAt
MCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorI2RlZmlu
ZSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMp
CisKKyNpbmNsdWRlICJIVFRQSGVhZGVyTWFwLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdG9taWNTdHJpbmc7CisKK2NsYXNz
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZSgpOworICAgIH5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworCisg
ICAgaW50IHN0YXR1c0NvZGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YXR1c0NvZGUoaW50IHN0
YXR1c0NvZGUpOworICAgIFN0cmluZyBzdGF0dXNUZXh0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRT
dGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgc3RhdHVzVGV4dCk7CisgICAgY29uc3QgSFRUUEhlYWRl
ck1hcCYgaGVhZGVyRmllbGRzKCkgY29uc3Q7CisgICAgdm9pZCBhZGRIZWFkZXJGaWVsZChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgY2xl
YXJIZWFkZXJGaWVsZHMoKTsKKworICAgIHN0cnVjdCBDaGFsbGVuZ2VSZXNwb25zZSB7CisgICAg
ICAgIHVuc2lnbmVkIGNoYXIgdmFsdWVbMTZdOworCisgICAgICAgIENoYWxsZW5nZVJlc3BvbnNl
KCk7CisgICAgICAgIHZvaWQgc2V0KGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhbGxlbmdlUmVzcG9u
c2VbMTZdKTsKKyAgICB9OworICAgIENoYWxsZW5nZVJlc3BvbnNlIGNoYWxsZW5nZVJlc3BvbnNl
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGFsbGVuZ2VSZXNwb25zZShjb25zdCB1bnNpZ25lZCBj
aGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7CisKK3ByaXZhdGU6CisgICAgaW50IG1fc3RhdHVz
Q29kZTsKKyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0OworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFk
ZXJGaWVsZHM7CisgICAgQ2hhbGxlbmdlUmVzcG9uc2UgbV9jaGFsbGVuZ2VSZXNwb25zZTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2VuZGlmIC8vIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57514</attachid>
            <date>2010-05-31 20:58:34 -0700</date>
            <delta_ts>2010-06-08 02:00:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38728-20100601125832.patch</filename>
            <type>text/plain</type>
            <size>24317</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzYyOTBhM2ZmMDhiNTMyYjJkOWI5MjQxMmRjZWYzYTEzOTcxMTVhYy4uYjM3YWQxZjRiZmMwMGIy
ZTIxOWIxNDZjMzZmOTJiM2QxODkyMzc0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxMC0wNS0zMSAgWXV0
YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5m
b3JtYXRpb24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJ
biB0aGUgZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0
byB0aGUgV2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBk
aXNwbGF5IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVz
cG9uc2UuCisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBzaW5jZSB0aGUgZXhpc3RpbmcgdGVzdHMgd2lsbCBz
dWZmaWNlICh3ZWJzb2NrZXQvKikuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlUmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0
dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMgY29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hl
Y2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6CisgICAgICAgICogd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFs
bGVuZ2VSZXNwb25zZTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6fldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXND
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRT
dGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
OjpzdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOjpzZXRTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjbGVhckhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2hhbGxlbmdlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldENoYWxsZW5nZVJl
c3BvbnNlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
Lmg6IEFkZGVkLgorCiAyMDEwLTA1LTMxICBMZW8gWWFuZyAgPGxlby55YW5nQHRvcmNobW9iaWxl
LmNvbS5jbj4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4
IGZjNmI4MTg2MzgzMzAzM2Y3NDBjZmYwZmE5NTEzZTlhYTNlNmJhOTUuLjE3NGU1YzJlMzBhMzMy
YjkzMmFiOTMzZTk5ZDA0YjQ1MjA2OWQyZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZp
bGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzcwOCw3ICszNzA4LDkgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKIAlX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAotCVdlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgKKwlXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaAogCiBpZiBFTkFCTEVfV09SS0VSUwogd2ViY29yZV9z
b3VyY2VzICs9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYzY2YTMyYmU2ZGU2NzA0Y2YxNTk4YjRkODkxMDJlZmIzYjYxZmRk
Mi4uMzg5ZjMzZmM1MjQ3NzkxZDcxNDUwYjY4MWMzMWIyMTNkNDIwM2EzMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3NzIs
NiArMzc3Miw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
aCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNw
cCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmgn
LAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3Bw
JywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgn
LAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5u
ZWwuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwJywK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IDY2YjljMGFkMzcyNDZkMjAyZDAzODhlMDYxNjYzNWYyNDQ4N2M0Y2IuLjA5MTUzZGQ5NzYy
MzYzN2VkYTQwMGUzOWM1NjM4MDdkMmRmZjlmZDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29y
ZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjg1NCw2ICsyODU0LDcgQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsQ2xpZW50LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0LmggXAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgg
XAogICAgICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUu
aAogCiAgICAgU09VUkNFUyArPSBcCkBAIC0yODYxLDYgKzI4NjIsNyBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tl
dENoYW5uZWwuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3Bw
IFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCisg
ICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKICAgICAg
ICAgd2Vic29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAogICAgICAgICBw
bGF0Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAogICAgICAgICBwbGF0
Zm9ybS9uZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGY2ZjQ5NjZiYWQxNmU5MzU0YzUxNzE3NzY0MGRjMmNh
NWZkZjAwNDIuLjYxMzViZDI0MDFmOTJlMTVlNjUwODgzNzc5YjFjOTZlODc3YzlkNzcgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDU1MjEsNiArNDU1MjEsMTQgQEAK
IAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vi
c29ja2V0c1xXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDljODI1ZDQ1MzZiOGMwNThmMjc0ZDVhZDAxNzIzNzMx
OTcyNGZhNzQuLmNjMjkyOGNmYjJjZTJmYjBmYTRjOWZiMzU2OWM2Mjc5YjgxZWMwMDkgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzMzLDYgKzEzMzMs
OCBAQAogCQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1Nzkz
RUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovOyB9Owog
CQk3NjM3QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0
MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi87IH07
CiAJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0
MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovOyB9Owor
CQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5
QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsg
fTsKKwkJNzY3Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdG
OTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsg
fTsKIAkJNzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFDRTEwNkMyRENB
MDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2lu
SGFsdGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwogCQk3
NjkzQkFENDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMg
LyogUGx1Z2luSGFsdGVyLmggKi87IH07CkBAIC02OTg2LDYgKzY5ODgsOCBAQAogCQk3NTc5M0VE
MjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5k
c2hha2VSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5OUJEMTFB
MTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUx
RCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFsdGFibGVQbHVnaW4uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBs
dWdpbkhhbHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVn
aW5IYWx0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFEMDEwNkMy
RENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE3
MTYsNiArMTE3MjAsOCBAQAogCQk1MThBMzRCRDEwMjZDODMxMDAxQjY4OTYgLyogd2Vic29ja2V0
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNzY3Rjk5
QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi8sCisJ
CQkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
LmNwcCAqLywKIAkJCQk1MTEyMjQ3MTEwQ0ZCOEM2MDA4MDk5RDcgLyogVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMTIyNDczMTBDRkI4RDgwMDgwOTlENyAvKiBUaHJl
YWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJCTUxMTIyNDc1MTBDRkI4RTgwMDgwOTlE
NyAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIuaCAqLywKQEAgLTE5
NDE1LDYgKzE5NDIxLDcgQEAKIAkJCQlDNTFEQTlBOTExQUVGMkMxMDA5Nzk5QzUgLyogSURCSW5k
ZXhSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUJCQzlEMTExQUVGODM4MDA3QzJCRkUg
LyogSlNJREJJbmRleFJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGMzI4OUI2MTFBNDJB
QUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTc2N0Y5
OUMwMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0yMTcxNSw2ICsyMTcyMiw3IEBACiAJCQkJQzUxREE5QTgxMUFFRjJDMTAw
OTc5OUM1IC8qIElEQkluZGV4UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDNUJCQzlE
MDExQUVGODM4MDA3QzJCRkUgLyogSlNJREJJbmRleFJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNEYzMjg5QjUxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGVhNGY1ZTU2NTdjNTNjMjUzMmU2ZDkwYWVjNDEwZTBk
Nzk5NzZiZTMuLjRhYWVjOGU2MzM0ODI0ZWFiMGI1ZTgwNDA3YTEyNDcwNzQxMzAxNmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC01Niw3ICs1Niw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIgcmFuZG9tQ2hhcmFjdGVy
SW5TZWNXZWJTb2NrZXRLZXlbXSA9ICIhXCIjJCUmJygpKissLS4vOjs8PT4/QEFCQ0RFRkdISUpL
TE1OT1BRUlNUVVZXWFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiI7CiAK
LXN0YXRpYyBTdHJpbmcgZXh0cmFjdFJlc3BvbnNlQ29kZShjb25zdCBjaGFyKiBoZWFkZXIsIGlu
dCBsZW4sIHNpemVfdCYgbGluZUxlbmd0aCkKKy8vIFJldHVybiB0cnVlIGlmIHdlIGhhdmUgcmVj
ZWl2ZWQgZW5vdWdoIGRhdGEgdG8gcGFyc2UgYSBsaW5lLgorLy8gSWYgd2UgZmFpbCB0byBwYXJz
ZSBzdGF0dXMgY29kZSBvciBzdGF0dXMgdGV4dCwgc3RhdHVzQ29kZSB3aWxsIGJlIHNldCB0byB6
ZXJvIGFuZCBzdGF0dXNUZXh0IHdpbGwgcmVtYWluIHVuY2hhbmdlZC4KK3N0YXRpYyBib29sIHBh
cnNlUmVzcG9uc2VMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbiwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQsIHNpemVfdCYgbGluZUxlbmd0aCkKIHsKICAgICBjb25z
dCBjaGFyKiBzcGFjZTEgPSAwOwogICAgIGNvbnN0IGNoYXIqIHNwYWNlMiA9IDA7CkBAIC03Miwx
MCArNzQsMjkgQEAgc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIq
IGhlYWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3QKICAgICAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBpZiAocCAtIGhlYWRlciA9PSBsZW4pCi0gICAgICAgIHJldHVybiBTdHJpbmco
KTsKLSAgICBpZiAoIXNwYWNlMSB8fCAhc3BhY2UyKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAg
cmV0dXJuIFN0cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOyAvLyBXZSBoYXZlIG5vdCByZWNlaXZlZCAnXG4nIHlldC4KKworICAgIHN0
YXR1c0NvZGUgPSAwOworICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIgfHwgKihwIC0gMSkgIT0g
J1xyJykgLy8gVGhlIGxpbmUgbXVzdCBlbmQgd2l0aCAiXHJcbiIuCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgU3RyaW5nIHN0YXR1c0NvZGVTdHJpbmcoc3BhY2UxICsgMSwgc3BhY2UyIC0g
c3BhY2UxIC0gMSk7CisgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmcubGVuZ3RoKCkgIT0gMykgLy8g
U3RhdHVzIGNvZGUgbXVzdCBjb25zaXN0IG9mIHRocmVlIGRpZ2l0cy4KKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCisgICAgICAgIGlmIChzdGF0
dXNDb2RlU3RyaW5nW2ldIDwgJzAnIHx8IHN0YXR1c0NvZGVTdHJpbmdbaV0gPiAnOScpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGJvb2wgb2sgPSBmYWxzZTsKKyAgICBzdGF0dXND
b2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludCgmb2spOworICAgIEFTU0VSVChvayk7CisgICAg
aWYgKHN0YXR1c0NvZGUgPCAxMDAgfHwgc3RhdHVzQ29kZSA+PSA2MDApIHsKKyAgICAgICAgc3Rh
dHVzQ29kZSA9IDA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXR1c1Rl
eHQgPSBTdHJpbmcoc3BhY2UyICsgMSwgcCAtIHNwYWNlMiAtIDIpOworICAgIHJldHVybiB0cnVl
OwogfQogCiBzdGF0aWMgU3RyaW5nIHJlc291cmNlTmFtZShjb25zdCBLVVJMJiB1cmwpCkBAIC0z
MTIsMjEgKzMzMywyNCBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xlYXJTY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkKIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hh
a2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29t
cGxldGU7CisgICAgaW50IHN0YXR1c0NvZGU7CisgICAgU3RyaW5nIHN0YXR1c1RleHQ7CiAgICAg
c2l6ZV90IGxpbmVMZW5ndGg7Ci0gICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFjdFJlc3Bv
bnNlQ29kZShoZWFkZXIsIGxlbiwgbGluZUxlbmd0aCk7Ci0gICAgaWYgKGNvZGUuaXNOdWxsKCkp
IHsKKyAgICBpZiAoIXBhcnNlUmVzcG9uc2VMaW5lKGhlYWRlciwgbGVuLCBzdGF0dXNDb2RlLCBz
dGF0dXNUZXh0LCBsaW5lTGVuZ3RoKSkgewogICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJl
Y2VpdmVkIHlldC4KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoY29kZS5pc0Vt
cHR5KCkpIHsKKyAgICBpZiAoIXN0YXR1c0NvZGUpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OwogICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNwb25zZSBjb2RlIGZvdW5kOiAiICsg
dHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGluZUxlbmd0aCksIDAsIGNsaWVudE9yaWdpbigp
KTsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25z
ZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKGNvZGUgIT0gIjEwMSIp
IHsKKyAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSk7Cisg
ICAgbV9yZXNwb25zZS5zZXRTdGF0dXNDb2RlKHN0YXR1c0NvZGUpOworICAgIG1fcmVzcG9uc2Uu
c2V0U3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAxMDEpIHsK
ICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4
cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCByZXNwb25zZSBj
b2RlOiAlZCIsIHN0YXR1c0NvZGUpLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVy
biBsZW47CiAgICAgfQogICAgIG1fbW9kZSA9IE5vcm1hbDsKQEAgLTMzNSwxNyArMzU5LDE2IEBA
IGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciog
aGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAg
ICByZXR1cm4gLTE7CiAgICAgfQotICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKICAgICBjb25z
dCBjaGFyKiBoZWFkZXJGaWVsZHMgPSBzdHJuc3RyKGhlYWRlciwgIlxyXG4iLCBsZW4pOyAvLyBz
a2lwIHN0YXR1cyBsaW5lCiAgICAgQVNTRVJUKGhlYWRlckZpZWxkcyk7CiAgICAgaGVhZGVyRmll
bGRzICs9IDI7IC8vIHNraXAgIlxyXG4iLgotICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhl
YWRlcnMoaGVhZGVyRmllbGRzLCBoZWFkZXIgKyBsZW4sICZoZWFkZXJzKTsKKyAgICBjb25zdCBj
aGFyKiBwID0gcmVhZEhUVFBIZWFkZXJzKGhlYWRlckZpZWxkcywgaGVhZGVyICsgbGVuKTsKICAg
ICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhlYWRlcnMgZmFpbGVk
Iik7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9
Ci0gICAgaWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRl
cnMoKSkgeworICAgIGlmICghcHJvY2Vzc0hlYWRlcnMoKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRl
cnMoKSkgewogICAgICAgICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOwpAQCAt
MzU1LDYgKzM3OCw3IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hh
a2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNv
bXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIG1fcmVzcG9uc2Uuc2V0Q2hh
bGxlbmdlUmVzcG9uc2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocCkp
OwogICAgIGlmIChtZW1jbXAocCwgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2Yo
bV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlKSkpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OwogICAgICAgICByZXR1cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVu
Z2VSZXNwb25zZSk7CkBAIC00MTgsNiArNDQyLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtl
OjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3Nl
dENvb2tpZTIgPSBzZXRDb29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtl
OjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJM
IHVybCA9IG1fdXJsLmNvcHkoKTsKQEAgLTQyNiw4ICs0NTUsMTAgQEAgS1VSTCBXZWJTb2NrZXRI
YW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAg
IHJldHVybiB1cmw7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJN
YXAqIGhlYWRlcnMpCitjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVh
ZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogeworICAgIG1fcmVzcG9u
c2UuY2xlYXJIZWFkZXJGaWVsZHMoKTsKKwogICAgIFZlY3RvcjxjaGFyPiBuYW1lOwogICAgIFZl
Y3RvcjxjaGFyPiB2YWx1ZTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVu
ZDsgcCsrKSB7CkBAIC00OTUsMTQgKzUyNiwxNSBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5k
c2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJu
YW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0
ci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3Ry
KTsKKyAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCi1i
b29sIFdlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycygpCiB7
CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IG1fcmVzcG9uc2UuaGVhZGVyRmll
bGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
cnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgewogICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgewogICAgICAgICBjYXNlIE5vcm1hbDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaAppbmRleCAzZTBjNjZhNmE0OGM2OGM2NzlkMTc0NTQwZTRjZWZiODdiMTFl
NjQ3Li5hMGMyYWY3Zjk3NWFhMmE4MDYyZmRiZmRkNjIyMTA4MWIxOTgyMDA0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgSFRUUEhlYWRlck1hcDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogCiAgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKQEAgLTg2LDEyICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29va2llMigpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKTsKIAorICAgICAgICBj
b25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2Uo
KSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRp
Y2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJz
IGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCi0gICAgICAgIGNvbnN0IGNoYXIq
IHJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQ
SGVhZGVyTWFwKiBoZWFkZXJzKTsKLSAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFk
ZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOworICAgICAgICBib29sIHBy
b2Nlc3NIZWFkZXJzKCk7CiAgICAgICAgIGJvb2wgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKIAog
ICAgICAgICBLVVJMIG1fdXJsOwpAQCAtMTExLDYgKzExMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQg
Y2hhciBtX2tleTNbOF07CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5n
ZVJlc3BvbnNlWzE2XTsKKworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRl
MDA3OGYxNmFlZTI3Yjk2MDVjMmJlZDFmMGUwNWFiOWZhYmVlMjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0w
LDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlOjpDaGFsbGVu
Z2VSZXNwb25zZSgpCit7CisgICAgbWVtc2V0KHZhbHVlLCAwLCBzaXplb2YodmFsdWUpKTsKK30K
Kwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OnNl
dChjb25zdCB1bnNpZ25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSkKK3sKKyAgICBtZW1j
cHkodmFsdWUsIGNoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2YodmFsdWUpKTsKK30KKworV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKCkKK3sKK30K
KworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSgpCit7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVzQ29kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzQ29kZTsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBB
U1NFUlQoc3RhdHVzQ29kZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDYwMCk7CisgICAgbV9zdGF0
dXNDb2RlID0gc3RhdHVzQ29kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6c3RhdHVzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzVGV4
dDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzVGV4dChj
b25zdCBTdHJpbmcmIHN0YXR1c1RleHQpCit7CisgICAgbV9zdGF0dXNUZXh0ID0gc3RhdHVzVGV4
dDsKK30KKworY29uc3QgSFRUUEhlYWRlck1hcCYgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6
OmhlYWRlckZpZWxkcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGVhZGVyRmllbGRzOworfQor
Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9oZWFkZXJG
aWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMoKQoreworICAgIG1faGVhZGVyRmllbGRzLmNsZWFyKCk7
Cit9CisKK2NvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25z
ZSYgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNoYWxsZW5nZVJlc3BvbnNlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jaGFsbGVuZ2VSZXNwb25zZTsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6c2V0Q2hhbGxlbmdlUmVzcG9uc2UoY29uc3QgdW5zaWduZWQgY2hh
ciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pCit7CisgICAgbV9jaGFsbGVuZ2VSZXNwb25zZS5zZXQo
Y2hhbGxlbmdlUmVzcG9uc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzODVhMWI3MGY0YzQ3ZjAyZmVkYmYy
MTc4MTM0OWIyYWMxZDcxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJIVFRQSGVhZGVy
TWFwLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBBdG9taWNTdHJpbmc7CisKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworICAgIH5X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworCisgICAgaW50IHN0YXR1c0NvZGUoKSBjb25z
dDsKKyAgICB2b2lkIHNldFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpOworICAgIGNvbnN0IFN0
cmluZyYgc3RhdHVzVGV4dCgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBT
dHJpbmcmIHN0YXR1c1RleHQpOworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxk
cygpIGNvbnN0OworICAgIHZvaWQgYWRkSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGNsZWFySGVhZGVyRmllbGRzKCk7
CisKKyAgICBzdHJ1Y3QgQ2hhbGxlbmdlUmVzcG9uc2UgeworICAgICAgICB1bnNpZ25lZCBjaGFy
IHZhbHVlWzE2XTsKKworICAgICAgICBDaGFsbGVuZ2VSZXNwb25zZSgpOworICAgICAgICB2b2lk
IHNldChjb25zdCB1bnNpZ25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7CisgICAgfTsK
KyAgICBjb25zdCBDaGFsbGVuZ2VSZXNwb25zZSYgY2hhbGxlbmdlUmVzcG9uc2UoKSBjb25zdDsK
KyAgICB2b2lkIHNldENoYWxsZW5nZVJlc3BvbnNlKGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhbGxl
bmdlUmVzcG9uc2VbMTZdKTsKKworcHJpdmF0ZToKKyAgICBpbnQgbV9zdGF0dXNDb2RlOworICAg
IFN0cmluZyBtX3N0YXR1c1RleHQ7CisgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlckZpZWxkczsK
KyAgICBDaGFsbGVuZ2VSZXNwb25zZSBtX2NoYWxsZW5nZVJlc3BvbnNlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5k
aWYgLy8gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58124</attachid>
            <date>2010-06-08 02:00:55 -0700</date>
            <delta_ts>2010-06-10 03:25:05 -0700</delta_ts>
            <desc>Patch (Add a test)</desc>
            <filename>bug-38728-20100608180053.patch</filename>
            <type>text/plain</type>
            <size>31328</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2ZGQzYWMwZjllZjQwZDYwZThmOWMwZDkzYTQwOWFmOTU5MTE4ZmE0Li40Zjc0NzQ4
NzBlYjFjN2UzMTZhZWI5ZjFiYmQ3NzE0MGRkOWVjNWE4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMDYtMDggIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qg
dG8gY2hlY2sgaWYgdGhlIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgd2hlbiB0aGUgcmVzcG9u
c2UKKyAgICAgICAgbGluZSBkaWQgbm90IGVuZCB3aXRoIENSTEYuCisKKyAgICAgICAgV2ViU29j
a2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4CisKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWVycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eTogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jci5qczogQWRkZWQuCisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAg
KHdzLm9ub3Blbik6CisgICAgICAgICh3cy5vbm1lc3NhZ2UpOgorICAgICAgICAod3Mub25jbG9z
ZSk6CisgICAgICAgICh0aW1lb3V0Q2FsbGJhY2spOgorCiAyMDEwLTA2LTA4ICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZC4gVXBkYXRlZCB0
ZXN0X2V4cGVjdGF0aW9ucy50eHQgdG8gZm9sbG93IHI2MDgyMgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWVycm9yLWV4cGVjdGVkLnR4dAppbmRl
eCBlN2RjY2ZiOWFjOWM5MDkxM2Y3NThjNWVjZjA3NDg5NGEzY2EyODgxLi5lNDU1YTg5ZjgzZmI3
ZWJjNTYyNWFiYWJjZjQwNzRmYzU1ODQ4ODM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJz
b2NrZXQvdGVzdHMvaGFuZHNoYWtlLWVycm9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsx
LDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBObyByZXNwb25zZSBjb2RlIGZvdW5kOiBU
aGlzV2lsbENhdXNlSGFuZHNoYWtlRXJyb3INCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogSW52
YWxpZCByZXNwb25zZSBsaW5lOiBUaGlzV2lsbENhdXNlSGFuZHNoYWtlRXJyb3JceDBkXHgwYQog
SGFuZHNoYWtlIGVycm9yIHRlc3QKIAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNy
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFp
bC1ieS1uby1jci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODljMjVjMmYyOGRkYjNlNTZkMjU4
N2QyMDUxOTQ2MWNmYWJlZDc2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNv
Y2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IEludmFsaWQgcmVzcG9uc2UgbGluZTog
SFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VceDBhCitIYW5kc2hha2Ug
c2hvdWxkIGZhaWwgd2hlbiB0aGUgZmlyc3QgbGluZSBkb2VzIG5vdCBlbmQgd2l0aCBDUkxGLgor
CitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1MgY29ubmVjdGVkIGlzIGZhbHNlCitQ
QVNTIG9yaWdpbiBpcyB1bmRlZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjllMmUzY2Mw
NTA3YTUyNWFhNzg0MmRmMWNjOTg0YTdhOTZjZDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLmh0bWwKQEAgLTAs
MCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZh
aWwtYnktbm8tY3IuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eSBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jcl93
c2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzUyZjgwOTU3NmRlYzQ0NmFhM2UwMjMyN2I3MThjYTA0MDMyNzY2
MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jcl93c2gucHkKQEAgLTAsMCArMSwxMyBAQAorZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIG1zZyA9ICdIVFRQLzEuMSAxMDEgV2Vi
U29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxuJyAjIERvZXMgbm90IGVuZCB3aXRoICJcclxuIi4K
KyAgICBtc2cgKz0gJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCisgICAgbXNnICs9ICdDb25uZWN0
aW9uOiBVcGdyYWRlXHJcbicKKyAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246ICcg
KyByZXF1ZXN0LndzX2xvY2F0aW9uICsgJ1xyXG4nCisgICAgbXNnICs9ICdTZWMtV2ViU29ja2V0
LU9yaWdpbjogJyArIHJlcXVlc3Qud3Nfb3JpZ2luICsgJ1xyXG4nCisgICAgbXNnICs9ICdcclxu
JworICAgIG1zZyArPSByZXF1ZXN0LndzX2NoYWxsZW5nZV9tZDUKKyAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdGUobXNnKQorICAgIHByaW50IG1zZworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNv
Y2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMgYi9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5v
LWNyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmY1MGYwMzlmMWU2MTk1MjQxMmZjMTM1MWUyNjBmNTliNjljZmM2
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0
LXRlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLmpzCkBAIC0wLDAgKzEsNDcgQEAKK2Rlc2Ny
aXB0aW9uKCdIYW5kc2hha2Ugc2hvdWxkIGZhaWwgd2hlbiB0aGUgZmlyc3QgbGluZSBkb2VzIG5v
dCBlbmQgd2l0aCBDUkxGLicpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQor
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKQorCit2YXIgY29ubmVjdGVk
ID0gZmFsc2U7Cit2YXIgb3JpZ2luOworCitmdW5jdGlvbiBlbmRUZXN0KCkgeworICAgIHNob3Vs
ZEJlRmFsc2UoJ2Nvbm5lY3RlZCcpOworICAgIHNob3VsZEJlVW5kZWZpbmVkKCdvcmlnaW4nKTsK
KyAgICBjbGVhclRpbWVvdXQodGltZW91dElEKTsKKyAgICBpc1N1Y2Nlc3NmdWxseVBhcnNlZCgp
OworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKwordmFyIHVybCA9ICd3czovL2xvY2FsaG9z
dDo4ODgwL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jcic7Cit2YXIgd3Mg
PSBuZXcgV2ViU29ja2V0KHVybCk7CisKK3dzLm9ub3BlbiA9IGZ1bmN0aW9uKCkKK3sKKyAgICBk
ZWJ1ZygnQ29ubmVjdGVkJyk7CisgICAgY29ubmVjdGVkID0gdHJ1ZTsKK30KKword3Mub25tZXNz
YWdlID0gZnVuY3Rpb24obWVzc2FnZUV2ZW50KQoreworICAgIG9yaWdpbiA9IG1lc3NhZ2VFdmVu
dC5kYXRhOworICAgIGRlYnVnKCdvcmlnaW4gPSAnICsgb3JpZ2luKTsKKyAgICB3cy5jbG9zZSgp
OworfQorCit3cy5vbmNsb3NlID0gZnVuY3Rpb24oKQoreworICAgIGVuZFRlc3QoKTsKK30KKwor
ZnVuY3Rpb24gdGltZW91dENhbGxiYWNrKCkKK3sKKyAgICBkZWJ1ZygnVGltZWQgb3V0IChzdGF0
ZSA9ICcgKyB3cy5yZWFkeVN0YXRlICsgJyknKTsKKyAgICBlbmRUZXN0KCk7Cit9CisKK3ZhciB0
aW1lb3V0SUQgPSBzZXRUaW1lb3V0KHRpbWVvdXRDYWxsYmFjaywgMzAwMCk7CisKK3ZhciBzdWNj
ZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMDQ3OGVhZmM2YmY5ODZkZWJiMDg3NjgzNDRlYWEwZGIy
ZWYyMDdjLi5hMjQwY2ZkMWRlZmNiMGM0Zjg4NzYzZTBkMTAzNWY0MTJmMjMwODBhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDEwLTA2LTA4ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5l
dyBjbGFzcyB0aGF0IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCBXZWJTb2NrZXQgaGFuZHNoYWtl
IHJlc3BvbnNlLgorCisgICAgICAgIEluIHRoZSBmdXR1cmUsIGluc3RhbmNlcyBvZiB0aGUgbmV3
IGNsYXNzIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBXZWIgSW5zcGVjdG9yCisgICAgICAgIHNvIHRo
YXQgaXQgd2lsbCBiZSBhYmxlIHRvIGRpc3BsYXkgaW5mb3JtYXRpb24gYWJvdXQgV2ViU29ja2V0
IGhhbmRzaGFrZQorICAgICAgICByZXNwb25zZS4KKworICAgICAgICBXZWJTb2NrZXQ6IEFkZCBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MjgKKworICAgICAgICBUZXN0OiB3ZWJzb2NrZXQvdGVzdHMv
aGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVJlc3BvbnNlTGluZSk6IEV4dHJh
Y3Qgc3RhdHVzIHRleHQgaW4gYWRkaXRpb24gdG8gc3RhdHVzIGNvZGUuCisgICAgICAgIEFkZCBt
b3JlIGNoZWNrcyB0byByZWplY3QgYnJva2VuIHJlc3BvbnNlcy4KKyAgICAgICAgKFdlYkNvcmU6
OmVzY2FwZUNvbnRyb2xDaGFyYWN0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRIYW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMpOgorICAgICAgICAqIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdl
UmVzcG9uc2U6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVzQ29kZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVz
Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3Rh
dHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6
c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRDaGFsbGVuZ2VSZXNwb25z
ZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOiBB
ZGRlZC4KKwogMjAxMC0wNi0wOCAgVmFuZ2VsaXMgS29ra2V2aXMgIDx2YW5nZWxpc0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
ODhjMDFhYWZkMTcwZDE1YzEzNmM5NTQzZWQ1NmMwZGViM2JmYjdiNy4uNTI0MmY3YzFjODRmODIz
MzQ1MWIyZTE3Njk1NzczNDM3YjQ4NTg3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zNzMxLDcgKzM3MzEsOSBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hh
a2UuY3BwIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCi0JV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaAorCVdlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oCiAKIGlmIEVOQUJMRV9XT1JLRVJTCiB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCAyYjNiY2VlM2Q2NzBlN2EzMjI2ZWQyNWVmOTcxYzFiYjZiOGZlYjVl
Li45M2EyZDU1MmYzMjJhMmRhYTkwOTEzZjE2N2JjOGEzNzk4M2I0MDNiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzc3Niw2
ICszNzc2LDggQEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5o
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3Bw
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCcs
CisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAn
LAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCcs
CiAgICAgICAgICAgICAnd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAnLApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggYTMyNWZkMGRhODNkMjAzM2U2NDIwY2U4YzM0YTVjMWYxN2JiMzM5Yi4uN2RiYWVkZDdlY2Zk
ZDZkMTJiZmYzMzk0YjIyODVlZjllNmRlYzJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3Jl
LnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yODYzLDYgKzI4NjMsNyBAQCBjb250
YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRz
L1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBc
CiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5o
CiAKICAgICBTT1VSQ0VTICs9IFwKQEAgLTI4NzAsNiArMjg3MSw3IEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0
Q2hhbm5lbC5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
XAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKKyAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAogICAgICAg
ICB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggM2EyMWIyMjZhNmFlY2JiNDljMTZlMWQwMDE0ZDRmMzQz
NTM2MDFjOS4uMGZkMWMzNWU1MDc2MDcyZGQ5MzdkMzkxNmE4ZmE1MjdmMTdhMTEzYiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00NTU5Nyw2ICs0NTU5NywxNCBAQAog
CQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJz
b2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmU1Y2ZiZDExZjRjY2Q4OTkzZjAzNzgxOTZiYzIyODhj
NTk0M2I5NS4uYjk2MGUwOGFlOTc3ODkyY2YzMGQ1NjgwYmZkNDZjYjBlNTRjNTg1YiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMzEsNiArMTMzMSw4
IEBACiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNF
RDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07CiAJ
CTc2MzdDNTQxMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQw
MTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsK
IAkJNzYzN0M1NDMxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQy
MTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CisJ
CTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlC
RDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9
OworCQk3NjdGOTlDMDExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2N0Y5
OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovOyB9
OwogCQk3NjkzQkFEMjEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNFMTA2QzJEQ0Ew
MDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5I
YWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi87IH07CiAJCTc2
OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuaCAqLzsgfTsKQEAgLTY5ODgsNiArNjk5MCw4IEBACiAJCTc1NzkzRUQy
MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNv
Y2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc2MzdDNTQyMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkQxMUEx
MTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFE
IC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYWx0YWJsZVBsdWdpbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1
Z2luSGFsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdp
bkhhbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUQwMTA2QzJE
Q0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGx1Z2luSGFsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTcy
Nyw2ICsxMTczMSw4IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2NrZXRz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3NjdGOTlC
RjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLywKKwkJ
CQk3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
Y3BwICovLAogCQkJCTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTExMjI0NzMxMENGQjhEODAwODA5OUQ3IC8qIFRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTExMjI0NzUxMENGQjhFODAwODA5OUQ3
IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oICovLApAQCAtMTk0
MzQsNiArMTk0NDAsNyBAQAogCQkJCTg2MjQzRDAxMTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5
QnVmZmVyVmlld0hlbHBlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTdCQkUyNjcxMUFGQjNGMjAw
MDVFQTAzIC8qIEpTSFRNTE1ldGVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjZCMDU0
MEExMUI2OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3JlSW1wbC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJNzY3Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIxNzM1LDYgKzIxNzQyLDcgQEAKIAkJCQk5RkZFM0VB
NTExQjVBNDM5MDAzNzg3NEUgLyogSlNNZW1vcnlJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3QkJFMjY2MTFBRkIzRjIwMDA1RUEwMyAvKiBKU0hUTUxNZXRlckVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjZCMDU0MDkxMUI2OEYxMDAwMjU2NEM1IC8qIElEQk9iamVjdFN0b3Jl
SW1wbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGVhNGY1ZTU2NTdjNTNjMjUzMmU2
ZDkwYWVjNDEwZTBkNzk5NzZiZTMuLjhiMzZlODY0ZTlmZWU2MDM2OTdiYzUyNTcxOTBmYWVhOThm
N2FhMWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2Uu
Y3BwCisrKyBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00
Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN0
cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUgPHd0
Zi9NRDUuaD4KQEAgLTU2LDcgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgY2hhciByYW5kb21DaGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYn
KCkqKywtLi86Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXp7fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VD
b2RlKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQorLy8g
UmV0dXJuIHRydWUgaWYgd2UgaGF2ZSByZWNlaXZlZCBlbm91Z2ggZGF0YSB0byBwYXJzZSBhIGxp
bmUuCisvLyBJZiB3ZSBmYWlsIHRvIHBhcnNlIHN0YXR1cyBjb2RlIG9yIHN0YXR1cyB0ZXh0LCBz
dGF0dXNDb2RlIHdpbGwgYmUgc2V0IHRvIHplcm8gYW5kIHN0YXR1c1RleHQgd2lsbCByZW1haW4g
dW5jaGFuZ2VkLgorc3RhdGljIGJvb2wgcGFyc2VSZXNwb25zZUxpbmUoY29uc3QgY2hhciogaGVh
ZGVyLCBpbnQgbGVuLCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCwgc2l6ZV90
JiBsaW5lTGVuZ3RoKQogewogICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CiAgICAgY29uc3Qg
Y2hhciogc3BhY2UyID0gMDsKQEAgLTcyLDEwICs3NSwyOSBAQCBzdGF0aWMgU3RyaW5nIGV4dHJh
Y3RSZXNwb25zZUNvZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBzaXplX3QmIGxpbmVM
ZW5ndAogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChwIC0gaGVhZGVyID09IGxl
bikKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIp
Ci0gICAgICAgIHJldHVybiAiIjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNl
MiAtIHNwYWNlMSAtIDEpOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm90IHJl
Y2VpdmVkICdcbicgeWV0LgorCisgICAgc3RhdHVzQ29kZSA9IDA7CisgICAgaWYgKCFzcGFjZTEg
fHwgIXNwYWNlMiB8fCAqKHAgLSAxKSAhPSAnXHInKSAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRo
ICJcclxuIi4KKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgc3RhdHVzQ29kZVN0
cmluZyhzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICBpZiAoc3RhdHVzQ29k
ZVN0cmluZy5sZW5ndGgoKSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhy
ZWUgZGlnaXRzLgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDM7ICsraSkKKyAgICAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3RhdHVz
Q29kZVN0cmluZ1tpXSA+ICc5JykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9v
bCBvayA9IGZhbHNlOworICAgIHN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlU3RyaW5nLnRvSW50KCZv
ayk7CisgICAgQVNTRVJUKG9rKTsKKyAgICBpZiAoc3RhdHVzQ29kZSA8IDEwMCB8fCBzdGF0dXND
b2RlID49IDYwMCkgeworICAgICAgICBzdGF0dXNDb2RlID0gMDsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorCisgICAgc3RhdHVzVGV4dCA9IFN0cmluZyhzcGFjZTIgKyAxLCBwIC0gc3Bh
Y2UyIC0gMik7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VO
YW1lKGNvbnN0IEtVUkwmIHVybCkKQEAgLTExMCw2ICsxMzIsMzMgQEAgc3RhdGljIFN0cmluZyB0
cmltQ29uc29sZU1lc3NhZ2UoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbikKICAgICByZXR1cm4g
czsKIH0KIAorLy8gRm9ybWF0IGEgY29uc29sZSBtZXNzYWdlIHNvIHRoYXQgY29udHJvbCBjaGFy
YWN0ZXJzIGxvb2sgcHJldHR5Lgorc3RhdGljIFN0cmluZyBlc2NhcGVDb250cm9sQ2hhcmFjdGVy
cyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBzaXplX3QgZXNjYXBlZFNpemUgPSAwOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAg
IGlmIChzdHJpbmdbaV0gPCAweDIwIHx8IHN0cmluZ1tpXSA9PSAweDdGKQorICAgICAgICAgICAg
ZXNjYXBlZFNpemUgKz0gNDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKytlc2NhcGVkU2l6
ZTsKKworICAgIFN0cmluZ0J1ZmZlciBidWZmZXIoZXNjYXBlZFNpemUpOworICAgIHNpemVfdCBp
bmRleCA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICBVQ2hhciBjaCA9IHN0cmluZ1tpXTsKKyAgICAgICAgaWYgKGNoIDwgMHgy
MCB8fCBjaCA9PSAweDdGKSB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdp
dHNbMTddID0gIjAxMjM0NTY3ODlhYmNkZWYiOworICAgICAgICAgICAgYnVmZmVyW2luZGV4Kytd
ID0gJ1xcJzsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICd4JzsKKyAgICAgICAgICAg
IGJ1ZmZlcltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKKyAgICAgICAgICAgIGJ1ZmZl
cltpbmRleCsrXSA9IGhleERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgYnVmZmVyW2luZGV4KytdID0gY2g7CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBl
c2NhcGVkU2l6ZSk7CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKK30KKwogc3Rh
dGljIHZvaWQgZ2VuZXJhdGVTZWNXZWJTb2NrZXRLZXkodWludDMyX3QmIG51bWJlciwgU3RyaW5n
JiBrZXkpCiB7CiAgICAgdWludDMyX3Qgc3BhY2UgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmFu
ZG9tTnVtYmVyKCkgKiAxMikgKyAxOwpAQCAtMzEyLDIxICszNjEsMjQgQEAgdm9pZCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OmNsZWFyU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBpbnQgV2ViU29ja2V0
SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90
IGxlbikKIHsKICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIGludCBzdGF0dXNDb2RlOwor
ICAgIFN0cmluZyBzdGF0dXNUZXh0OwogICAgIHNpemVfdCBsaW5lTGVuZ3RoOwotICAgIGNvbnN0
IFN0cmluZyYgY29kZSA9IGV4dHJhY3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4sIGxpbmVMZW5n
dGgpOwotICAgIGlmIChjb2RlLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwYXJzZVJlc3BvbnNlTGlu
ZShoZWFkZXIsIGxlbiwgc3RhdHVzQ29kZSwgc3RhdHVzVGV4dCwgbGluZUxlbmd0aCkpIHsKICAg
ICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCB5ZXQuCiAgICAgICAgIHJldHVybiAt
MTsKICAgICB9Ci0gICAgaWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFzdGF0dXNDb2Rl
KSB7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAi
Tm8gcmVzcG9uc2UgY29kZSBmb3VuZDogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxp
bmVMZW5ndGgpLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVz
c2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IkludmFsaWQgcmVzcG9uc2UgbGluZTogIiArIGVzY2FwZUNvbnRyb2xDaGFyYWN0ZXJzKHRyaW1D
b25zb2xlTWVzc2FnZShoZWFkZXIsIGxpbmVMZW5ndGggKyAxKSksIDAsIGNsaWVudE9yaWdpbigp
KTsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25z
ZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKGNvZGUgIT0gIjEwMSIp
IHsKKyAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSk7Cisg
ICAgbV9yZXNwb25zZS5zZXRTdGF0dXNDb2RlKHN0YXR1c0NvZGUpOworICAgIG1fcmVzcG9uc2Uu
c2V0U3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAxMDEpIHsK
ICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2Uo
SlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4
cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAg
ICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUs
IEVycm9yTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCByZXNwb25zZSBj
b2RlOiAlZCIsIHN0YXR1c0NvZGUpLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVy
biBsZW47CiAgICAgfQogICAgIG1fbW9kZSA9IE5vcm1hbDsKQEAgLTMzNSwxNyArMzg3LDE2IEBA
IGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciog
aGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAg
ICByZXR1cm4gLTE7CiAgICAgfQotICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKICAgICBjb25z
dCBjaGFyKiBoZWFkZXJGaWVsZHMgPSBzdHJuc3RyKGhlYWRlciwgIlxyXG4iLCBsZW4pOyAvLyBz
a2lwIHN0YXR1cyBsaW5lCiAgICAgQVNTRVJUKGhlYWRlckZpZWxkcyk7CiAgICAgaGVhZGVyRmll
bGRzICs9IDI7IC8vIHNraXAgIlxyXG4iLgotICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhl
YWRlcnMoaGVhZGVyRmllbGRzLCBoZWFkZXIgKyBsZW4sICZoZWFkZXJzKTsKKyAgICBjb25zdCBj
aGFyKiBwID0gcmVhZEhUVFBIZWFkZXJzKGhlYWRlckZpZWxkcywgaGVhZGVyICsgbGVuKTsKICAg
ICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhlYWRlcnMgZmFpbGVk
Iik7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9
Ci0gICAgaWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJzKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRl
cnMoKSkgeworICAgIGlmICghcHJvY2Vzc0hlYWRlcnMoKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRl
cnMoKSkgewogICAgICAgICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwog
ICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOwpAQCAt
MzU1LDYgKzQwNiw3IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hh
a2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNv
bXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIG1fcmVzcG9uc2Uuc2V0Q2hh
bGxlbmdlUmVzcG9uc2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocCkp
OwogICAgIGlmIChtZW1jbXAocCwgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2Yo
bV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlKSkpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVk
OwogICAgICAgICByZXR1cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVu
Z2VSZXNwb25zZSk7CkBAIC00MTgsNiArNDcwLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtl
OjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3Nl
dENvb2tpZTIgPSBzZXRDb29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtl
OjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJM
IHVybCA9IG1fdXJsLmNvcHkoKTsKQEAgLTQyNiw4ICs0ODMsMTAgQEAgS1VSTCBXZWJTb2NrZXRI
YW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAg
IHJldHVybiB1cmw7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJN
YXAqIGhlYWRlcnMpCitjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVh
ZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogeworICAgIG1fcmVzcG9u
c2UuY2xlYXJIZWFkZXJGaWVsZHMoKTsKKwogICAgIFZlY3RvcjxjaGFyPiBuYW1lOwogICAgIFZl
Y3RvcjxjaGFyPiB2YWx1ZTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVu
ZDsgcCsrKSB7CkBAIC00OTUsMTQgKzU1NCwxNSBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5k
c2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAgTE9HKE5ldHdvcmssICJu
YW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB2YWx1ZVN0
ci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaGVhZGVycy0+YWRkKG5hbWVTdHIsIHZhbHVlU3Ry
KTsKKyAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1lU3RyLCB2YWx1ZVN0cik7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCi1i
b29sIFdlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMoY29uc3QgSFRUUEhlYWRlck1h
cCYgaGVhZGVycykKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycygpCiB7
CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IG1fcmVzcG9uc2UuaGVhZGVyRmll
bGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRl
cnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgewogICAgICAgICBzd2l0Y2gg
KG1fbW9kZSkgewogICAgICAgICBjYXNlIE5vcm1hbDoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuaAppbmRleCAzZTBjNjZhNmE0OGM2OGM2NzlkMTc0NTQwZTRjZWZiODdiMTFl
NjQ3Li5hMGMyYWY3Zjk3NWFhMmE4MDYyZmRiZmRkNjIyMTA4MWIxOTgyMDA0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKKysrIGIvV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi0gICAgY2xhc3MgSFRUUEhlYWRlck1hcDsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OwogCiAgICAgY2xhc3MgV2ViU29ja2V0SGFuZHNoYWtlIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKQEAgLTg2LDEyICs4NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IGNvbnN0IFN0cmluZyYgc2VydmVyU2V0Q29va2llMigpIGNvbnN0OwogICAgICAgICB2b2lkIHNl
dFNlcnZlclNldENvb2tpZTIoY29uc3QgU3RyaW5nJiBzZXRDb29raWUyKTsKIAorICAgICAgICBj
b25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgc2VydmVySGFuZHNoYWtlUmVzcG9uc2Uo
KSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIEtVUkwgaHR0cFVSTEZvckF1dGhlbnRp
Y2F0aW9uQW5kQ29va2llcygpIGNvbnN0OwogCiAgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJz
IGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCi0gICAgICAgIGNvbnN0IGNoYXIq
IHJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQ
SGVhZGVyTWFwKiBoZWFkZXJzKTsKLSAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFk
ZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOworICAgICAgICBib29sIHBy
b2Nlc3NIZWFkZXJzKCk7CiAgICAgICAgIGJvb2wgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKIAog
ICAgICAgICBLVVJMIG1fdXJsOwpAQCAtMTExLDYgKzExMyw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQg
Y2hhciBtX2tleTNbOF07CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5n
ZVJlc3BvbnNlWzE2XTsKKworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRl
MDA3OGYxNmFlZTI3Yjk2MDVjMmJlZDFmMGUwNWFiOWZhYmVlMjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0w
LDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlIDxjc3RyaW5nPgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlOjpDaGFsbGVu
Z2VSZXNwb25zZSgpCit7CisgICAgbWVtc2V0KHZhbHVlLCAwLCBzaXplb2YodmFsdWUpKTsKK30K
Kwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OnNl
dChjb25zdCB1bnNpZ25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSkKK3sKKyAgICBtZW1j
cHkodmFsdWUsIGNoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2YodmFsdWUpKTsKK30KKworV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKCkKK3sKK30K
KworV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZSgpCit7Cit9CisKK2ludCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVzQ29kZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzQ29kZTsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzQ29kZShpbnQgc3RhdHVzQ29kZSkKK3sKKyAgICBB
U1NFUlQoc3RhdHVzQ29kZSA+PSAxMDAgJiYgc3RhdHVzQ29kZSA8IDYwMCk7CisgICAgbV9zdGF0
dXNDb2RlID0gc3RhdHVzQ29kZTsKK30KKworY29uc3QgU3RyaW5nJiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6c3RhdHVzVGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc3RhdHVzVGV4
dDsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3RhdHVzVGV4dChj
b25zdCBTdHJpbmcmIHN0YXR1c1RleHQpCit7CisgICAgbV9zdGF0dXNUZXh0ID0gc3RhdHVzVGV4
dDsKK30KKworY29uc3QgSFRUUEhlYWRlck1hcCYgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6
OmhlYWRlckZpZWxkcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGVhZGVyRmllbGRzOworfQor
Cit2b2lkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgbV9oZWFkZXJG
aWVsZHMuYWRkKG5hbWUsIHZhbHVlKTsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMoKQoreworICAgIG1faGVhZGVyRmllbGRzLmNsZWFyKCk7
Cit9CisKK2NvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25z
ZSYgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNoYWxsZW5nZVJlc3BvbnNlKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9jaGFsbGVuZ2VSZXNwb25zZTsKK30KKwordm9pZCBXZWJTb2NrZXRI
YW5kc2hha2VSZXNwb25zZTo6c2V0Q2hhbGxlbmdlUmVzcG9uc2UoY29uc3QgdW5zaWduZWQgY2hh
ciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pCit7CisgICAgbV9jaGFsbGVuZ2VSZXNwb25zZS5zZXQo
Y2hhbGxlbmdlUmVzcG9uc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoV0VCX1NPQ0tFVFMpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMzODVhMWI3MGY0YzQ3ZjAyZmVkYmYy
MTc4MTM0OWIyYWMxZDcxYjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorI2RlZmluZSBXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZV9oCisKKyNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCisKKyNpbmNsdWRlICJIVFRQSGVhZGVy
TWFwLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBBdG9taWNTdHJpbmc7CisKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlIHsKK3B1YmxpYzoKKyAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworICAgIH5X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpOworCisgICAgaW50IHN0YXR1c0NvZGUoKSBjb25z
dDsKKyAgICB2b2lkIHNldFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpOworICAgIGNvbnN0IFN0
cmluZyYgc3RhdHVzVGV4dCgpIGNvbnN0OworICAgIHZvaWQgc2V0U3RhdHVzVGV4dChjb25zdCBT
dHJpbmcmIHN0YXR1c1RleHQpOworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlckZpZWxk
cygpIGNvbnN0OworICAgIHZvaWQgYWRkSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGNsZWFySGVhZGVyRmllbGRzKCk7
CisKKyAgICBzdHJ1Y3QgQ2hhbGxlbmdlUmVzcG9uc2UgeworICAgICAgICB1bnNpZ25lZCBjaGFy
IHZhbHVlWzE2XTsKKworICAgICAgICBDaGFsbGVuZ2VSZXNwb25zZSgpOworICAgICAgICB2b2lk
IHNldChjb25zdCB1bnNpZ25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7CisgICAgfTsK
KyAgICBjb25zdCBDaGFsbGVuZ2VSZXNwb25zZSYgY2hhbGxlbmdlUmVzcG9uc2UoKSBjb25zdDsK
KyAgICB2b2lkIHNldENoYWxsZW5nZVJlc3BvbnNlKGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhbGxl
bmdlUmVzcG9uc2VbMTZdKTsKKworcHJpdmF0ZToKKyAgICBpbnQgbV9zdGF0dXNDb2RlOworICAg
IFN0cmluZyBtX3N0YXR1c1RleHQ7CisgICAgSFRUUEhlYWRlck1hcCBtX2hlYWRlckZpZWxkczsK
KyAgICBDaGFsbGVuZ2VSZXNwb25zZSBtX2NoYWxsZW5nZVJlc3BvbnNlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjZW5k
aWYgLy8gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58353</attachid>
            <date>2010-06-10 03:25:11 -0700</date>
            <delta_ts>2010-06-10 22:19:11 -0700</delta_ts>
            <desc>Patch (Fix case of header names)</desc>
            <filename>bug-38728-20100610192510.patch</filename>
            <type>text/plain</type>
            <size>32589</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNmQwMWU3ZjA3ZDQ1MWZiMWQ2NDk3NDVjNzk1YTRmZGZiNDVlNzBmLi5iZGZhMWVk
NWI5MWI5NzUwZTEzMGM4NmU2MjEwMjFiNDEyY2MwODJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMDYtMTAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qg
dG8gY2hlY2sgaWYgdGhlIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgd2hlbiB0aGUgcmVzcG9u
c2UKKyAgICAgICAgbGluZSBkaWQgbm90IGVuZCB3aXRoIENSTEYuCisKKyAgICAgICAgV2ViU29j
a2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4CisKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWVycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eTogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jci5qczogQWRkZWQuCisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAg
KHdzLm9ub3Blbik6CisgICAgICAgICh3cy5vbm1lc3NhZ2UpOgorICAgICAgICAod3Mub25jbG9z
ZSk6CisgICAgICAgICh0aW1lb3V0Q2FsbGJhY2spOgorCiAyMDEwLTA2LTEwICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWVycm9y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZXJy
b3ItZXhwZWN0ZWQudHh0CmluZGV4IGU3ZGNjZmI5YWM5YzkwOTEzZjc1OGM1ZWNmMDc0ODk0YTNj
YTI4ODEuLmU0NTVhODlmODNmYjdlYmM1NjI1YWJhYmNmNDA3NGZjNTU4NDg4MzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZXJyb3ItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZXJyb3ItZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE5vIHJl
c3BvbnNlIGNvZGUgZm91bmQ6IFRoaXNXaWxsQ2F1c2VIYW5kc2hha2VFcnJvcg0KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBJbnZhbGlkIHJlc3BvbnNlIGxpbmU6IFRoaXNXaWxsQ2F1c2VIYW5k
c2hha2VFcnJvclx4MGRceDBhCiBIYW5kc2hha2UgZXJyb3IgdGVzdAogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFu
ZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OWMyNWMyZjI4ZGRiM2U1NmQyNTg3ZDIwNTE5NDYxY2ZhYmVkNzY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogSW52
YWxpZCByZXNwb25zZSBsaW5lOiBIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRz
aGFrZVx4MGEKK0hhbmRzaGFrZSBzaG91bGQgZmFpbCB3aGVuIHRoZSBmaXJzdCBsaW5lIGRvZXMg
bm90IGVuZCB3aXRoIENSTEYuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBj
b25uZWN0ZWQgaXMgZmFsc2UKK1BBU1Mgb3JpZ2luIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNiOWUyZTNjYzA1MDdhNTI1YWE3ODQyZGYxY2M5ODRhN2E5NmNkMmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwt
Ynktbm8tY3IuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1m
dW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtl
LWZhaWwtYnktbm8tY3Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRz
aGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJmODA5NTc2ZGVjNDQ2YWEz
ZTAyMzI3YjcxOGNhMDQwMzI3NjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5weQpAQCAtMCwwICsxLDEz
IEBACitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgbXNn
ID0gJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXG4nICMgRG9lcyBu
b3QgZW5kIHdpdGggIlxyXG4iLgorICAgIG1zZyArPSAnVXBncmFkZTogV2ViU29ja2V0XHJcbicK
KyAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1zZyArPSAnU2VjLVdl
YlNvY2tldC1Mb2NhdGlvbjogJyArIHJlcXVlc3Qud3NfbG9jYXRpb24gKyAnXHJcbicKKyAgICBt
c2cgKz0gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAnICsgcmVxdWVzdC53c19vcmlnaW4gKyAnXHJc
bicKKyAgICBtc2cgKz0gJ1xyXG4nCisgICAgbXNnICs9IHJlcXVlc3Qud3NfY2hhbGxlbmdlX21k
NQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCisgICAgcHJpbnQgbXNnCisKK2Rl
ZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hha2UtZmFp
bC1ieS1uby1jci5qcyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMv
aGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUwZjAzOWYxZTYxOTUyNDEy
ZmMxMzUxZTI2MGY1OWI2OWNmYzYyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMKQEAg
LTAsMCArMSw0NyBAQAorZGVzY3JpcHRpb24oJ0hhbmRzaGFrZSBzaG91bGQgZmFpbCB3aGVuIHRo
ZSBmaXJzdCBsaW5lIGRvZXMgbm90IGVuZCB3aXRoIENSTEYuJyk7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpCisKK3ZhciBjb25uZWN0ZWQgPSBmYWxzZTsKK3ZhciBvcmlnaW47CisKK2Z1bmN0aW9uIGVu
ZFRlc3QoKSB7CisgICAgc2hvdWxkQmVGYWxzZSgnY29ubmVjdGVkJyk7CisgICAgc2hvdWxkQmVV
bmRlZmluZWQoJ29yaWdpbicpOworICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOworICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIg
dXJsID0gJ3dzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWls
LWJ5LW5vLWNyJzsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKword3Mub25vcGVuID0g
ZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCdDb25uZWN0ZWQnKTsKKyAgICBjb25uZWN0ZWQgPSB0
cnVlOworfQorCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpCit7CisgICAg
b3JpZ2luID0gbWVzc2FnZUV2ZW50LmRhdGE7CisgICAgZGVidWcoJ29yaWdpbiA9ICcgKyBvcmln
aW4pOworICAgIHdzLmNsb3NlKCk7Cit9CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigpCit7Cisg
ICAgZW5kVGVzdCgpOworfQorCitmdW5jdGlvbiB0aW1lb3V0Q2FsbGJhY2soKQoreworICAgIGRl
YnVnKCdUaW1lZCBvdXQgKHN0YXRlID0gJyArIHdzLnJlYWR5U3RhdGUgKyAnKScpOworICAgIGVu
ZFRlc3QoKTsKK30KKwordmFyIHRpbWVvdXRJRCA9IHNldFRpbWVvdXQodGltZW91dENhbGxiYWNr
LCAzMDAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRjZGM3M2ViNWIxYjZi
ODk3ZDUxMWVlNzMyZWVlYjZlMDRkOTQyOWUuLmQxYWM1MjZjZjE5OTMxZWJjYjM0YWU4OTNkYWFk
N2U4ODZlYmNjMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDYtMTAgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IGNsYXNzIHRoYXQgc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0
IFdlYlNvY2tldCBoYW5kc2hha2UgcmVzcG9uc2UuCisKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwg
aW5zdGFuY2VzIG9mIHRoZSBuZXcgY2xhc3Mgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIFdlYiBJbnNw
ZWN0b3IKKyAgICAgICAgc28gdGhhdCBpdCB3aWxsIGJlIGFibGUgdG8gZGlzcGxheSBpbmZvcm1h
dGlvbiBhYm91dCBXZWJTb2NrZXQgaGFuZHNoYWtlCisgICAgICAgIHJlc3BvbnNlLgorCisgICAg
ICAgIFdlYlNvY2tldDogQWRkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcyOAorCisgICAgICAgIFRl
c3Q6IHdlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5odG1sCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
UmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMg
Y29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hlY2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2Vz
LgorICAgICAgICAoV2ViQ29yZTo6ZXNjYXBlQ29udHJvbENoYXJhY3RlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6
OkNoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6fldlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOjpzdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpzZXRTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjbGVhckhlYWRlckZpZWxkcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2hhbGxlbmdl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6
OnNldENoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmg6IEFkZGVkLgorCiAyMDEwLTA2LTEwICBFcmljIFNlaWRlbCAgPGVy
aWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggZDZmYmY0ZWM2ODhhOTU0NWIwNmNkOTEwMmU2OGUzNDkyYzA4MDNjOS4uNTJkYjE5OGFmNTZk
MzBhZjJjYTQ3NTVmMTIxYzdmZTdiYmJiZTYzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zNzM4LDcgKzM3MzgsOSBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5k
c2hha2UuY3BwIFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAog
CVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCi0JV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaAorCVdlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggXAorCVdlYkNvcmUvd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9X
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oCiAKIGlmIEVOQUJMRV9XT1JLRVJTCiB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA3MTBkN2Q4YzdiMWQxZjg2NThmNjNhOGE4ZDI0YTI2ZWEyNjcz
ZDhlLi5mZjIwYzA0MDhkOTg4OGQzNmE5ZGUyNzFmZmRiOGIzMzg4M2Y0MmQzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzc4
Miw2ICszNzgyLDggQEAKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qu
Y3BwJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3Qu
aCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5j
cHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuaCcsCiAgICAgICAgICAgICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAn
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggNTkzYjBjM2JkOWNmMjc1YzEwOTFkMmJmNjUwZTQyNDczNmYyNDFmMy4uOWZhNmQ5YWU4
MDczZGY3YmUwOWFhMTdlZTVhZDBjM2Y2NDg4MzBhNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yODY4LDYgKzI4NjgsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCBcCisgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0
ZS5oCiAKICAgICBTT1VSQ0VTICs9IFwKQEAgLTI4NzUsNiArMjg3Niw3IEBAIGNvbnRhaW5zKERF
RklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5j
cHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwK
KyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAogICAg
ICAgICB3ZWJzb2NrZXRzL1RocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCBcCiAgICAgICAgIHBs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggMDU3YTk4YzkzMzM2MGUwZGRlMzZjNjI2YWQ0YTI4
NmFmZGEwZjk3Zi4uNGQwZGFhYTMwYTM3YWQ2ZjFjZTVjM2UwZGI3MjkwYzkyODFmYjU2MyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC00NTYyNSw2ICs0NTYyNSwxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3
ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWwuY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYTFkZDQ5YWUyODMxOWY1MzRkYmFiNGViZjRlZDQ3
MDU1ZDE1NmJhOS4uZDRlZTdkOTExMzBjMDZiZjdkYjUwNjVmZTJmYjhiZDRjN2FjYTUwMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMzMsNiArMTMz
Myw4IEBACiAJCTc1NzkzRUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3
OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07
CiAJCTc2MzdDNTQxMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdD
NTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsg
fTsKIAkJNzYzN0M1NDMxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdD
NTQyMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07
CisJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdG
OTlCRDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICov
OyB9OworCQk3NjdGOTlDMDExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICov
OyB9OwogCQk3NjkzQkFEMjEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNFMTA2QzJE
Q0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVn
aW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5jcHAgKi87IH07CiAJ
CTc2OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgy
MyAvKiBQbHVnaW5IYWx0ZXIuaCAqLzsgfTsKQEAgLTY5OTcsNiArNjk5OSw4IEBACiAJCTc1Nzkz
RUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc2MzdDNTQyMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkQx
MUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkYxMUExMTk1NjAwODBD
NTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdp
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYWx0YWJsZVBsdWdpbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyog
UGx1Z2luSGFsdGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBs
dWdpbkhhbHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUQwMTA2
QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGx1Z2luSGFsdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTc0MSw2ICsxMTc0NSw4IEBACiAJCTUxOEEzNEJEMTAyNkM4MzEwMDFCNjg5NiAvKiB3ZWJzb2Nr
ZXRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3NjdG
OTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLywK
KwkJCQk3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuY3BwICovLAogCQkJCTUxMTIyNDcxMTBDRkI4QzYwMDgwOTlENyAvKiBUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAgKi8sCiAJCQkJNTExMjI0NzMxMENGQjhEODAwODA5OUQ3IC8qIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkJNTExMjI0NzUxMENGQjhFODAwODA5
OUQ3IC8qIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlci5oICovLApAQCAt
MTk0NTksNiArMTk0NjUsNyBAQAogCQkJCTRGMTUzNEUwMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0
aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjk4RkZGNDUxMUEyNjc2MjAw
RjU0OEU4IC8qIENTU09NVXRpbHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3NkU4OTYxMTFDMENB
M0EwMEVBOUNBOSAvKiBIVE1MNUVudGl0eVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzY3
Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTIxNzYzLDYgKzIxNzcwLDcgQEAKIAkJCQlCNkIwNTQwOTExQjY4RjEw
MDAyNTY0QzUgLyogSURCT2JqZWN0U3RvcmVJbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY5
OEZGRjQ0MTFBMjY3NjIwMEY1NDhFOCAvKiBDU1NPTVV0aWxzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3NkU4OTYwMTFDMENBM0EwMEVBOUNBOSAvKiBIVE1MNUVudGl0eVBhcnNlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwCmluZGV4IGVhNGY1ZTU2NTdjNTNjMjUzMmU2ZDkwYWVjNDEwZTBk
Nzk5NzZiZTMuLmJhMTYwMjMxOGEzYTJmMDQ5NWJjNTQwNWZkNWRiOWFiMzI2N2Q1NTMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00Myw2ICs0Myw3IEBA
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5o
IgogI2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9NRDUuaD4KQEAg
LTU2LDcgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciBy
YW5kb21DaGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYnKCkqKywtLi86Ozw9
Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXp7fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNo
YXIqIGhlYWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQorLy8gUmV0dXJuIHRydWUg
aWYgd2UgaGF2ZSByZWNlaXZlZCBlbm91Z2ggZGF0YSB0byBwYXJzZSBhIGxpbmUuCisvLyBJZiB3
ZSBmYWlsIHRvIHBhcnNlIHN0YXR1cyBjb2RlIG9yIHN0YXR1cyB0ZXh0LCBzdGF0dXNDb2RlIHdp
bGwgYmUgc2V0IHRvIHplcm8gYW5kIHN0YXR1c1RleHQgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgor
c3RhdGljIGJvb2wgcGFyc2VSZXNwb25zZUxpbmUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVu
LCBpbnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCwgc2l6ZV90JiBsaW5lTGVuZ3Ro
KQogewogICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CiAgICAgY29uc3QgY2hhciogc3BhY2Uy
ID0gMDsKQEAgLTcyLDEwICs3NSwyOSBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNv
ZGUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBzaXplX3QmIGxpbmVMZW5ndAogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCi0gICAgICAgIHJl
dHVybiAiIjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAt
IDEpOworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicg
eWV0LgorCisgICAgc3RhdHVzQ29kZSA9IDA7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNwYWNlMiB8
fCAqKHAgLSAxKSAhPSAnXHInKSAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEg
KyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5n
dGgoKSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAg
ICAgICAgaWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3RhdHVzQ29kZVN0cmluZ1tp
XSA+ICc5JykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBvayA9IGZhbHNl
OworICAgIHN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlU3RyaW5nLnRvSW50KCZvayk7CisgICAgQVNT
RVJUKG9rKTsKKyAgICBpZiAoc3RhdHVzQ29kZSA8IDEwMCB8fCBzdGF0dXNDb2RlID49IDYwMCkg
eworICAgICAgICBzdGF0dXNDb2RlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CisgICAgc3RhdHVzVGV4dCA9IFN0cmluZyhzcGFjZTIgKyAxLCBwIC0gc3BhY2UyIC0gMik7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtV
UkwmIHVybCkKQEAgLTExMCw2ICsxMzIsMzMgQEAgc3RhdGljIFN0cmluZyB0cmltQ29uc29sZU1l
c3NhZ2UoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbikKICAgICByZXR1cm4gczsKIH0KIAorLy8g
Rm9ybWF0IGEgY29uc29sZSBtZXNzYWdlIHNvIHRoYXQgY29udHJvbCBjaGFyYWN0ZXJzIGxvb2sg
cHJldHR5Lgorc3RhdGljIFN0cmluZyBlc2NhcGVDb250cm9sQ2hhcmFjdGVycyhjb25zdCBTdHJp
bmcmIHN0cmluZykKK3sKKyAgICBzaXplX3QgZXNjYXBlZFNpemUgPSAwOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAgIGlmIChzdHJpbmdb
aV0gPCAweDIwIHx8IHN0cmluZ1tpXSA9PSAweDdGKQorICAgICAgICAgICAgZXNjYXBlZFNpemUg
Kz0gNDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKytlc2NhcGVkU2l6ZTsKKworICAgIFN0
cmluZ0J1ZmZlciBidWZmZXIoZXNjYXBlZFNpemUpOworICAgIHNpemVfdCBpbmRleCA9IDA7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoKCk7ICsraSkgeworICAgICAg
ICBVQ2hhciBjaCA9IHN0cmluZ1tpXTsKKyAgICAgICAgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAw
eDdGKSB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAx
MjM0NTY3ODlhYmNkZWYiOworICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJ1xcJzsKKyAg
ICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICd4JzsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRl
eCsrXSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9
IGhleERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVy
W2luZGV4KytdID0gY2g7CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBlc2NhcGVkU2l6ZSk7
CisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKK30KKwogc3RhdGljIHZvaWQgZ2Vu
ZXJhdGVTZWNXZWJTb2NrZXRLZXkodWludDMyX3QmIG51bWJlciwgU3RyaW5nJiBrZXkpCiB7CiAg
ICAgdWludDMyX3Qgc3BhY2UgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmFuZG9tTnVtYmVyKCkg
KiAxMikgKyAxOwpAQCAtMzEyLDIxICszNjEsMjQgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6
OmNsZWFyU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpy
ZWFkU2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKIHsKICAg
ICBtX21vZGUgPSBJbmNvbXBsZXRlOworICAgIGludCBzdGF0dXNDb2RlOworICAgIFN0cmluZyBz
dGF0dXNUZXh0OwogICAgIHNpemVfdCBsaW5lTGVuZ3RoOwotICAgIGNvbnN0IFN0cmluZyYgY29k
ZSA9IGV4dHJhY3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4sIGxpbmVMZW5ndGgpOwotICAgIGlm
IChjb2RlLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwYXJzZVJlc3BvbnNlTGluZShoZWFkZXIsIGxl
biwgc3RhdHVzQ29kZSwgc3RhdHVzVGV4dCwgbGluZUxlbmd0aCkpIHsKICAgICAgICAgLy8gSnVz
dCBoYXNuJ3QgYmVlbiByZWNlaXZlZCB5ZXQuCiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0g
ICAgaWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFzdGF0dXNDb2RlKSB7CiAgICAgICAg
IG1fbW9kZSA9IEZhaWxlZDsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2Ug
Y29kZSBmb3VuZDogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxpbmVMZW5ndGgpLCAw
LCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgcmVz
cG9uc2UgbGluZTogIiArIGVzY2FwZUNvbnRyb2xDaGFyYWN0ZXJzKHRyaW1Db25zb2xlTWVzc2Fn
ZShoZWFkZXIsIGxpbmVMZW5ndGggKyAxKSksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAg
cmV0dXJuIGxlbjsKICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIs
IGNvZGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKGNvZGUgIT0gIjEwMSIpIHsKKyAgICBMT0co
TmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSk7CisgICAgbV9yZXNwb25z
ZS5zZXRTdGF0dXNDb2RlKHN0YXR1c0NvZGUpOworICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzVGV4
dChzdGF0dXNUZXh0KTsKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAxMDEpIHsKICAgICAgICAgbV9t
b2RlID0gRmFpbGVkOwotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3Bv
bnNlIGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0
LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2Fn
ZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCByZXNwb25zZSBjb2RlOiAlZCIsIHN0
YXR1c0NvZGUpLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAg
fQogICAgIG1fbW9kZSA9IE5vcm1hbDsKQEAgLTMzNSwxNyArMzg3LDE2IEBAIGludCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXpl
X3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7
CiAgICAgfQotICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKICAgICBjb25zdCBjaGFyKiBoZWFk
ZXJGaWVsZHMgPSBzdHJuc3RyKGhlYWRlciwgIlxyXG4iLCBsZW4pOyAvLyBza2lwIHN0YXR1cyBs
aW5lCiAgICAgQVNTRVJUKGhlYWRlckZpZWxkcyk7CiAgICAgaGVhZGVyRmllbGRzICs9IDI7IC8v
IHNraXAgIlxyXG4iLgotICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVy
RmllbGRzLCBoZWFkZXIgKyBsZW4sICZoZWFkZXJzKTsKKyAgICBjb25zdCBjaGFyKiBwID0gcmVh
ZEhUVFBIZWFkZXJzKGhlYWRlckZpZWxkcywgaGVhZGVyICsgbGVuKTsKICAgICBpZiAoIXApIHsK
ICAgICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhlYWRlcnMgZmFpbGVkIik7CiAgICAgICAg
IG1fbW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9Ci0gICAgaWYgKCFw
cm9jZXNzSGVhZGVycyhoZWFkZXJzKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgeworICAg
IGlmICghcHJvY2Vzc0hlYWRlcnMoKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgewogICAg
ICAgICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwogICAgICAgICBtX21v
ZGUgPSBGYWlsZWQ7CiAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOwpAQCAtMzU1LDYgKzQwNiw3
IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hh
ciogaGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAg
ICAgICByZXR1cm4gLTE7CiAgICAgfQorICAgIG1fcmVzcG9uc2Uuc2V0Q2hhbGxlbmdlUmVzcG9u
c2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocCkpOwogICAgIGlmICht
ZW1jbXAocCwgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2YobV9leHBlY3RlZENo
YWxsZW5nZVJlc3BvbnNlKSkpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICBy
ZXR1cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVuZ2VSZXNwb25zZSk7
CkBAIC00MTgsNiArNDcwLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJT
ZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3NldENvb2tpZTIgPSBz
ZXRDb29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2ViU29j
a2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9y
QXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9IG1fdXJs
LmNvcHkoKTsKQEAgLTQyNiw4ICs0ODMsMTAgQEAgS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0
dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAgIHJldHVybiB1cmw7
CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNv
bnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMp
Citjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBj
aGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogeworICAgIG1fcmVzcG9uc2UuY2xlYXJIZWFk
ZXJGaWVsZHMoKTsKKwogICAgIFZlY3RvcjxjaGFyPiBuYW1lOwogICAgIFZlY3RvcjxjaGFyPiB2
YWx1ZTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVuZDsgcCsrKSB7CkBA
IC00NTEsMTAgKzUxMCw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhU
VFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlCiAgICAgICAgICAgICBj
YXNlICc6JzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKLSAgICAgICAgICAg
ICAgICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBuYW1l
LmFwcGVuZCgqcCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoKnAgPT0gJzonKSB7CkBAIC00OTUsMjYgKzU1MSwyNyBAQCBjb25zdCBj
aGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFy
dCwgY29uc3QgY2hhciogZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAg
ICAgTE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaGVhZGVycy0+YWRk
KG5hbWVTdHIsIHZhbHVlU3RyKTsKKyAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChu
YW1lU3RyLCB2YWx1ZVN0cik7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiAwOwogfQogCi1ib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMo
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpw
cm9jZXNzSGVhZGVycygpCiB7CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IG1f
cmVzcG9uc2UuaGVhZGVyRmllbGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkg
ewogICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICBjYXNlIE5vcm1hbDoKLSAgICAg
ICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gInNlYy13ZWJzb2NrZXQtb3JpZ2luIikKKyAgICAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+Zmlyc3QsICJzZWMtd2Vic29ja2V0LW9yaWdp
biIpKQogICAgICAgICAgICAgICAgIG1fd3NPcmlnaW4gPSBpdC0+c2Vjb25kOwotICAgICAgICAg
ICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZWMtd2Vic29ja2V0LWxvY2F0aW9uIikKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwgInNlYy13ZWJzb2Nr
ZXQtbG9jYXRpb24iKSkKICAgICAgICAgICAgICAgICBtX3dzTG9jYXRpb24gPSBpdC0+c2Vjb25k
OwotICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZWMtd2Vic29ja2V0LXByb3Rv
Y29sIikKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwg
InNlYy13ZWJzb2NrZXQtcHJvdG9jb2wiKSkKICAgICAgICAgICAgICAgICBtX3dzUHJvdG9jb2wg
PSBpdC0+c2Vjb25kOwotICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29v
a2llIikKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwg
InNldC1jb29raWUiKSkKICAgICAgICAgICAgICAgICBtX3NldENvb2tpZSA9IGl0LT5zZWNvbmQ7
Ci0gICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1jb29raWUyIikKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwgInNldC1jb29raWUy
IikpCiAgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNlY29uZDsKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICBjYXNlIEluY29tcGxldGU6CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlLmgKaW5kZXggM2UwYzY2YTZhNDhjNjhjNjc5ZDE3NDU0MGU0Y2Vm
Yjg3YjExZTY0Ny4uYTBjMmFmN2Y5NzVhYTJhODA2MmZkYmZkZDYyMjEwODFiMTk4MjAwNCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCisrKyBiL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzYsMTEgKzM2LDExIEBA
CiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiAgICAgY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKIAogICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZSA6IHB1Ymxp
YyBOb25jb3B5YWJsZSB7CkBAIC04NiwxMiArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENvb2tpZTIoKSBjb25zdDsKICAgICAgICAg
dm9pZCBzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMik7CiAKKyAg
ICAgICAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJl
c3BvbnNlKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBLVVJMIGh0dHBVUkxGb3JB
dXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKIAogICAgICAgICAvLyBSZWFkcyBhbGwg
aGVhZGVycyBleGNlcHQgZm9yIHRoZSB0d28gcHJlZGVmaW5lZCBvbmVzLgotICAgICAgICBjb25z
dCBjaGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVu
ZCwgSFRUUEhlYWRlck1hcCogaGVhZGVycyk7Ci0gICAgICAgIGJvb2wgcHJvY2Vzc0hlYWRlcnMo
Y29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAgICAgIGNvbnN0IGNoYXIqIHJlYWRI
VFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKTsKKyAgICAgICAg
Ym9vbCBwcm9jZXNzSGVhZGVycygpOwogICAgICAgICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJz
KCk7CiAKICAgICAgICAgS1VSTCBtX3VybDsKQEAgLTExMSw2ICsxMTMsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX3NlY1dlYlNvY2tldEtleTI7CiAgICAgICAgIHVu
c2lnbmVkIGNoYXIgbV9rZXkzWzhdOwogICAgICAgICB1bnNpZ25lZCBjaGFyIG1fZXhwZWN0ZWRD
aGFsbGVuZ2VSZXNwb25zZVsxNl07CisKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UgbV9yZXNwb25zZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGIv
V2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZTAwNzhmMTZhZWUyN2I5NjA1YzJiZWQxZjBlMDVhYjlmYWJlZTI0Ci0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNw
cApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VC
X1NPQ0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorCisj
aW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6
Q2hhbGxlbmdlUmVzcG9uc2UoKQoreworICAgIG1lbXNldCh2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVl
KSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3Bv
bnNlOjpzZXQoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pCit7Cisg
ICAgbWVtY3B5KHZhbHVlLCBjaGFsbGVuZ2VSZXNwb25zZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisK
K1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgp
Cit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjp+V2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2UoKQoreworfQorCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1
c0NvZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1c0NvZGU7Cit9CisKK3ZvaWQgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCit7
CisgICAgQVNTRVJUKHN0YXR1c0NvZGUgPj0gMTAwICYmIHN0YXR1c0NvZGUgPCA2MDApOworICAg
IG1fc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1c1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0
YXR1c1RleHQ7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1
c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KQoreworICAgIG1fc3RhdHVzVGV4dCA9IHN0
YXR1c1RleHQ7Cit9CisKK2NvbnN0IEhUVFBIZWFkZXJNYXAmIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOjpoZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2hlYWRlckZpZWxk
czsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6YWRkSGVhZGVyRmllbGQo
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1f
aGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2U6OmNsZWFySGVhZGVyRmllbGRzKCkKK3sKKyAgICBtX2hlYWRlckZpZWxkcy5j
bGVhcigpOworfQorCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdl
UmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjaGFsbGVuZ2VSZXNwb25zZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hhbGxlbmdlUmVzcG9uc2U7Cit9CisKK3ZvaWQgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldENoYWxsZW5nZVJlc3BvbnNlKGNvbnN0IHVuc2ln
bmVkIGNoYXIgY2hhbGxlbmdlUmVzcG9uc2VbMTZdKQoreworICAgIG1fY2hhbGxlbmdlUmVzcG9u
c2Uuc2V0KGNoYWxsZW5nZVJlc3BvbnNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzg1YTFiNzBmNGM0N2Yw
MmZlZGJmMjE3ODEzNDliMmFjMWQ3MWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNo
YWtlUmVzcG9uc2VfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiSFRU
UEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nOworCitjbGFzcyBXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZSB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsK
KyAgICB+V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKworICAgIGludCBzdGF0dXNDb2Rl
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKTsKKyAgICBj
b25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YXR1c1RleHQo
Y29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KTsKKyAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFk
ZXJGaWVsZHMoKSBjb25zdDsKKyAgICB2b2lkIGFkZEhlYWRlckZpZWxkKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBjbGVhckhlYWRlckZp
ZWxkcygpOworCisgICAgc3RydWN0IENoYWxsZW5nZVJlc3BvbnNlIHsKKyAgICAgICAgdW5zaWdu
ZWQgY2hhciB2YWx1ZVsxNl07CisKKyAgICAgICAgQ2hhbGxlbmdlUmVzcG9uc2UoKTsKKyAgICAg
ICAgdm9pZCBzZXQoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pOwor
ICAgIH07CisgICAgY29uc3QgQ2hhbGxlbmdlUmVzcG9uc2UmIGNoYWxsZW5nZVJlc3BvbnNlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRDaGFsbGVuZ2VSZXNwb25zZShjb25zdCB1bnNpZ25lZCBjaGFy
IGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7CisKK3ByaXZhdGU6CisgICAgaW50IG1fc3RhdHVzQ29k
ZTsKKyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0OworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJG
aWVsZHM7CisgICAgQ2hhbGxlbmdlUmVzcG9uc2UgbV9jaGFsbGVuZ2VSZXNwb25zZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykK
KworI2VuZGlmIC8vIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58445</attachid>
            <date>2010-06-10 22:19:20 -0700</date>
            <delta_ts>2010-06-18 06:25:48 -0700</delta_ts>
            <desc>Patch (Fix pbxproj file)</desc>
            <filename>bug-38728-20100611141918.patch</filename>
            <type>text/plain</type>
            <size>32928</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzOWQ1ZDQ2ZmM5MDRmY2YyOTkzOTE1YzJlNmU0Y2MxZWFlMzQ0ZjI4Li44YThlMTlh
NTg0ZmE3MzAyN2FkZmZkYzg5NWMyZDgyMTAwODM1Y2YxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMDYtMTAgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qg
dG8gY2hlY2sgaWYgdGhlIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgd2hlbiB0aGUgcmVzcG9u
c2UKKyAgICAgICAgbGluZSBkaWQgbm90IGVuZCB3aXRoIENSTEYuCisKKyAgICAgICAgV2ViU29j
a2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4CisKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWVycm9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eTogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jci5qczogQWRkZWQuCisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAg
KHdzLm9ub3Blbik6CisgICAgICAgICh3cy5vbm1lc3NhZ2UpOgorICAgICAgICAod3Mub25jbG9z
ZSk6CisgICAgICAgICh0aW1lb3V0Q2FsbGJhY2spOgorCiAyMDEwLTA2LTEwICBUb255IENoYW5n
ICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWVycm9y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZXJy
b3ItZXhwZWN0ZWQudHh0CmluZGV4IGU3ZGNjZmI5YWM5YzkwOTEzZjc1OGM1ZWNmMDc0ODk0YTNj
YTI4ODEuLmU0NTVhODlmODNmYjdlYmM1NjI1YWJhYmNmNDA3NGZjNTU4NDg4MzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZXJyb3ItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZXJyb3ItZXhw
ZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IE5vIHJl
c3BvbnNlIGNvZGUgZm91bmQ6IFRoaXNXaWxsQ2F1c2VIYW5kc2hha2VFcnJvcg0KK0NPTlNPTEUg
TUVTU0FHRTogbGluZSAwOiBJbnZhbGlkIHJlc3BvbnNlIGxpbmU6IFRoaXNXaWxsQ2F1c2VIYW5k
c2hha2VFcnJvclx4MGRceDBhCiBIYW5kc2hha2UgZXJyb3IgdGVzdAogCiBPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFu
ZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0
L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
OWMyNWMyZjI4ZGRiM2U1NmQyNTg3ZDIwNTE5NDYxY2ZhYmVkNzY0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMDogSW52
YWxpZCByZXNwb25zZSBsaW5lOiBIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRz
aGFrZVx4MGEKK0hhbmRzaGFrZSBzaG91bGQgZmFpbCB3aGVuIHRoZSBmaXJzdCBsaW5lIGRvZXMg
bm90IGVuZCB3aXRoIENSTEYuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworUEFTUyBj
b25uZWN0ZWQgaXMgZmFsc2UKK1BBU1Mgb3JpZ2luIGlzIHVuZGVmaW5lZC4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbCBiL0xh
eW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNiOWUyZTNjYzA1MDdhNTI1YWE3ODQyZGYxY2M5ODRhN2E5NmNkMmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwt
Ynktbm8tY3IuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0v
L0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1m
dW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0
aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlw
dC10ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtl
LWZhaWwtYnktbm8tY3Jfd3NoLnB5IGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRz
aGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTJmODA5NTc2ZGVjNDQ2YWEz
ZTAyMzI3YjcxOGNhMDQwMzI3NjYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vi
c29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5weQpAQCAtMCwwICsxLDEz
IEBACitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgbXNn
ID0gJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXG4nICMgRG9lcyBu
b3QgZW5kIHdpdGggIlxyXG4iLgorICAgIG1zZyArPSAnVXBncmFkZTogV2ViU29ja2V0XHJcbicK
KyAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgIG1zZyArPSAnU2VjLVdl
YlNvY2tldC1Mb2NhdGlvbjogJyArIHJlcXVlc3Qud3NfbG9jYXRpb24gKyAnXHJcbicKKyAgICBt
c2cgKz0gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAnICsgcmVxdWVzdC53c19vcmlnaW4gKyAnXHJc
bicKKyAgICBtc2cgKz0gJ1xyXG4nCisgICAgbXNnICs9IHJlcXVlc3Qud3NfY2hhbGxlbmdlX21k
NQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZShtc2cpCisgICAgcHJpbnQgbXNnCisKK2Rl
ZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hha2UtZmFp
bC1ieS1uby1jci5qcyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMv
aGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjUwZjAzOWYxZTYxOTUyNDEy
ZmMxMzUxZTI2MGY1OWI2OWNmYzYyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMKQEAg
LTAsMCArMSw0NyBAQAorZGVzY3JpcHRpb24oJ0hhbmRzaGFrZSBzaG91bGQgZmFpbCB3aGVuIHRo
ZSBmaXJzdCBsaW5lIGRvZXMgbm90IGVuZCB3aXRoIENSTEYuJyk7CisKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9u
ZSgpCisKK3ZhciBjb25uZWN0ZWQgPSBmYWxzZTsKK3ZhciBvcmlnaW47CisKK2Z1bmN0aW9uIGVu
ZFRlc3QoKSB7CisgICAgc2hvdWxkQmVGYWxzZSgnY29ubmVjdGVkJyk7CisgICAgc2hvdWxkQmVV
bmRlZmluZWQoJ29yaWdpbicpOworICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOworICAgIGlz
U3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCit2YXIg
dXJsID0gJ3dzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWls
LWJ5LW5vLWNyJzsKK3ZhciB3cyA9IG5ldyBXZWJTb2NrZXQodXJsKTsKKword3Mub25vcGVuID0g
ZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCdDb25uZWN0ZWQnKTsKKyAgICBjb25uZWN0ZWQgPSB0
cnVlOworfQorCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihtZXNzYWdlRXZlbnQpCit7CisgICAg
b3JpZ2luID0gbWVzc2FnZUV2ZW50LmRhdGE7CisgICAgZGVidWcoJ29yaWdpbiA9ICcgKyBvcmln
aW4pOworICAgIHdzLmNsb3NlKCk7Cit9CisKK3dzLm9uY2xvc2UgPSBmdW5jdGlvbigpCit7Cisg
ICAgZW5kVGVzdCgpOworfQorCitmdW5jdGlvbiB0aW1lb3V0Q2FsbGJhY2soKQoreworICAgIGRl
YnVnKCdUaW1lZCBvdXQgKHN0YXRlID0gJyArIHdzLnJlYWR5U3RhdGUgKyAnKScpOworICAgIGVu
ZFRlc3QoKTsKK30KKwordmFyIHRpbWVvdXRJRCA9IHNldFRpbWVvdXQodGltZW91dENhbGxiYWNr
LCAzMDAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg2NjcyZWNiZDVhZGZm
ZjE4MWEwNmE4NWJhOTI2ODRjN2E5MzBiYzAuLmYwYTdjYTg2NTMyYTI3ZGM3YjZlZmQ5ZmVkN2Rm
OGEwYTQ1MTdiYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAtMDYtMTAgIFl1dGEgS2l0YW11cmEgIDx5
dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIGEgbmV3IGNsYXNzIHRoYXQgc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0
IFdlYlNvY2tldCBoYW5kc2hha2UgcmVzcG9uc2UuCisKKyAgICAgICAgSW4gdGhlIGZ1dHVyZSwg
aW5zdGFuY2VzIG9mIHRoZSBuZXcgY2xhc3Mgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIFdlYiBJbnNw
ZWN0b3IKKyAgICAgICAgc28gdGhhdCBpdCB3aWxsIGJlIGFibGUgdG8gZGlzcGxheSBpbmZvcm1h
dGlvbiBhYm91dCBXZWJTb2NrZXQgaGFuZHNoYWtlCisgICAgICAgIHJlc3BvbnNlLgorCisgICAg
ICAgIFdlYlNvY2tldDogQWRkIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODcyOAorCisgICAgICAgIFRl
c3Q6IHdlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5odG1sCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICog
V2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHdl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
UmVzcG9uc2VMaW5lKTogRXh0cmFjdCBzdGF0dXMgdGV4dCBpbiBhZGRpdGlvbiB0byBzdGF0dXMg
Y29kZS4KKyAgICAgICAgQWRkIG1vcmUgY2hlY2tzIHRvIHJlamVjdCBicm9rZW4gcmVzcG9uc2Vz
LgorICAgICAgICAoV2ViQ29yZTo6ZXNjYXBlQ29udHJvbENoYXJhY3RlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkU2VydmVySGFuZHNoYWtlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZTo6c2VydmVySGFuZHNoYWtlUmVzcG9uc2Up
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6
CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaDoKKyAgICAgICAgKiB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6
OkNoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6fldlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlOjpzdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpzZXRTdGF0dXNDb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmFkZEhlYWRlckZpZWxkKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjbGVhckhlYWRlckZpZWxkcyk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Y2hhbGxlbmdl
UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6
OnNldENoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlLmg6IEFkZGVkLgorCiAyMDEwLTA2LTEwICBUb255IENoYW5nICA8dG9u
eUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA3ZGRhY2I1ZWVhZmQyZDU2MGRlYWRmODUzYmFlMTk5OGJjNjU0OGE2Li42Y2U2YzYwM2Y5
ZDMwMTRmZDI4NjIwMmEzMzVmOWJiMjQzNjE1NWQwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTM3NDAsNyArMzc0MCw5
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZS5jcHAgXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCBc
CiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKLQlX
ZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oCisJV2ViQ29yZS93
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBcCisJV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBcCisJV2ViQ29yZS93ZWJzb2NrZXRz
L1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgKIAogaWYgRU5BQkxFX1dPUktFUlMKIHdlYmNv
cmVfc291cmNlcyArPSBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IGM1MTM0OTJkMTRlOWIzZmQ4NWY1MzIyYjU3M2RhNTIwMDRk
NDI2NTguLjExYzJkMGE1NmMwODI1ZDljMzE5ZDE2NWFkY2U4YWE4MjBhM2E2ZmMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0z
Nzg0LDYgKzM3ODQsOCBAQAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmgnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5jcHAnLAogICAgICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5oJywKKyAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
LmNwcCcsCisgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5oJywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5oJywKICAgICAgICAgICAgICd3b3JrZXJzL0Fic3RyYWN0V29ya2VyLmNw
cCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29yZS9XZWJDb3JlLnBy
bwppbmRleCAwMjYzZTdlZmNkYzczYTcwYmE1MTVhYTczNDZiYjM4NDE3YjAzMmVlLi42YjY0ZDk3
MWI2YmViNDUzNjFhYTliMGIyMTkxODM5MTAxNzRlMjNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dl
YkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI4NzAsNiArMjg3MCw3IEBA
IGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0xKSB7CiAgICAgICAgIHdlYnNv
Y2tldHMvV2ViU29ja2V0Q2hhbm5lbENsaWVudC5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuaCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5oIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5oIFwKICAgICAgICAgcGxhdGZvcm0vbmV0d29yay9xdC9Tb2NrZXRTdHJlYW1IYW5kbGVQcml2
YXRlLmgKIAogICAgIFNPVVJDRVMgKz0gXApAQCAtMjg3Nyw2ICsyODc4LDcgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtl
LmNwcCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAg
XAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBcCiAg
ICAgICAgIHdlYnNvY2tldHMvVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIFwKICAgICAg
ICAgcGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1FcnJvckJhc2UuY3BwIFwKICAgICAgICAg
cGxhdGZvcm0vbmV0d29yay9Tb2NrZXRTdHJlYW1IYW5kbGVCYXNlLmNwcCBcCmRpZmYgLS1naXQg
YS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA2NTVmZTJlYjkwMGNjYTAzNmI1MGI4YzFiZTYx
YWZiMWMyOTkzYWU5Li44NjViMGI4MGIwYjRmYmJhODk1MTUzZjdjOWIxMDlhMzZmOGU5OGI2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTQ1NjMzLDYgKzQ1NjMzLDE0
IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0c1xXb3JrZXJUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1NmY5M2RiNTkxYTRjNmJlMTljMzBmZmE5NzFi
NTkzOTQwMTcyMWRhLi4zM2Q3YWUyMjFhNTBjNWMxNmU1MDBhYmI2NTMzY2EwYmE5Y2QyYjA0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzMyw2ICsx
MzMzLDggQEAKIAkJNzU3OTNFRDUwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NTc5M0VEMjBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLzsg
fTsKIAkJNzYzN0M1NDExMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVl
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYz
N0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICov
OyB9OwogCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYz
N0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLzsg
fTsKKwkJNzY3Rjk5QkUxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2
N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAg
Ki87IH07CisJCTc2N0Y5OUMwMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgg
Ki87IH07CiAJCTc2OTNCQUQyMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0UxMDZD
MkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzY5M0JBRDMxMDZDMkRDQTAwN0IwODIzIC8qIFBs
dWdpbkhhbHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLzsgfTsK
IAkJNzY5M0JBRDQxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBRDAxMDZDMkRDQTAwN0Iw
ODIzIC8qIFBsdWdpbkhhbHRlci5oICovOyB9OwpAQCAtNjk5OSw2ICs3MDAxLDggQEAKIAkJNzU3
OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyog
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRz
aGFrZVJlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0
SGFuZHNoYWtlUmVxdWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NjdGOTlC
RDExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3NjdGOTlCRjExQTExOTU2MDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBQ0UxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1
Z2luLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbHRhYmxlUGx1Z2luLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUNGMTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGx1Z2luSGFsdGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBRDAx
MDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhhbHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBQbHVnaW5IYWx0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTExNzU4LDYgKzExNzYyLDggQEAKIAkJCQk1MUFCQUU0MzEwNDNBQjRBMDA4QzUyNjAgLyogV2Vi
U29ja2V0SGFuZHNoYWtlLmggKi8sCiAJCQkJNzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwICovLAogCQkJCTc2MzdDNTQyMTEyRTdCN0UwMDNE
NkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi8sCisJCQkJNzY3Rjk5QkQxMUEx
MTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLywKKwkJCQk3
NjdGOTlCRjExQTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAq
LywKIAkJCQk1MTEyMjQ3NzEwQ0ZCOEY0MDA4MDk5RDcgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwICovLAogCQkJCTUxMTIyNDc5MTBDRkI4RkYwMDgwOTlENyAvKiBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5oICovLAogCQkJKTsKQEAgLTE5MzcwLDYgKzE5
Mzc2LDcgQEAKIAkJCQk1MTBENEE1MDEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5l
bENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFBQkFFNDUxMDQzQUI0QTAwOEM1MjYwIC8q
IFdlYlNvY2tldEhhbmRzaGFrZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzYzN0M1NDMxMTJFN0I3
RTAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAor
CQkJCTc2N0Y5OUMwMTFBMTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDRjMzMkQwRjJCOUEyNTAwNEI2Nzk1IC8qIFdlYlRp
bGVkTGF5ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1MDMxQjUxMEE0NEVGQzcwMEY5OTJFMCAv
KiBXaGVlbEV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgwRjQ3NDA5QTExQUI0MDAxRkRC
MzQgLyogV2lkZ2V0LmggaW4gSGVhZGVycyAqLywKQEAgLTIxNjgxLDYgKzIxNjg4LDcgQEAKIAkJ
CQk1MTBENEE0RTEwMzE3N0EyMDA0OUVBNTQgLyogV2ViU29ja2V0Q2hhbm5lbC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MUFCQUU0NDEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0SGFuZHNo
YWtlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2MzdDNTQxMTEyRTdCNzQwMDNENkNEQyAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTc2N0Y5OUJF
MTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkNGMzMyQzBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTg1MDMxQjUwMEE0NEVGQzcwMEY5OTJFMCAvKiBXaGVlbEV2
ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzNUM0NzczMDlBQzRENzcwMEE2QUFCNCAvKiBX
aGVlbEV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcCBiL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2UuY3BwCmluZGV4IGVhNGY1ZTU2NTdjNTNjMjUzMmU2ZDkwYWVjNDEwZTBkNzk5
NzZiZTMuLmJhMTYwMjMxOGEzYTJmMDQ5NWJjNTQwNWZkNWRiOWFiMzI2N2Q1NTMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCisrKyBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgog
I2luY2x1ZGUgIlN0cmluZ0J1aWxkZXIuaCIKIAogI2luY2x1ZGUgPHd0Zi9NRDUuaD4KQEAgLTU2
LDcgKzU3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgY2hhciByYW5k
b21DaGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYnKCkqKywtLi86Ozw9Pj9A
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXp7fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VDb2RlKGNvbnN0IGNoYXIq
IGhlYWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQorLy8gUmV0dXJuIHRydWUgaWYg
d2UgaGF2ZSByZWNlaXZlZCBlbm91Z2ggZGF0YSB0byBwYXJzZSBhIGxpbmUuCisvLyBJZiB3ZSBm
YWlsIHRvIHBhcnNlIHN0YXR1cyBjb2RlIG9yIHN0YXR1cyB0ZXh0LCBzdGF0dXNDb2RlIHdpbGwg
YmUgc2V0IHRvIHplcm8gYW5kIHN0YXR1c1RleHQgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorc3Rh
dGljIGJvb2wgcGFyc2VSZXNwb25zZUxpbmUoY29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBp
bnQmIHN0YXR1c0NvZGUsIFN0cmluZyYgc3RhdHVzVGV4dCwgc2l6ZV90JiBsaW5lTGVuZ3RoKQog
ewogICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CiAgICAgY29uc3QgY2hhciogc3BhY2UyID0g
MDsKQEAgLTcyLDEwICs3NSwyOSBAQCBzdGF0aWMgU3RyaW5nIGV4dHJhY3RSZXNwb25zZUNvZGUo
Y29uc3QgY2hhciogaGVhZGVyLCBpbnQgbGVuLCBzaXplX3QmIGxpbmVMZW5ndAogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgfQogICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCi0gICAgICAgIHJldHVy
biAiIjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEp
OworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIGhhdmUgbm90IHJlY2VpdmVkICdcbicgeWV0
LgorCisgICAgc3RhdHVzQ29kZSA9IDA7CisgICAgaWYgKCFzcGFjZTEgfHwgIXNwYWNlMiB8fCAq
KHAgLSAxKSAhPSAnXHInKSAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJpbmcgc3RhdHVzQ29kZVN0cmluZyhzcGFjZTEgKyAx
LCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKKyAgICBpZiAoc3RhdHVzQ29kZVN0cmluZy5sZW5ndGgo
KSAhPSAzKSAvLyBTdGF0dXMgY29kZSBtdXN0IGNvbnNpc3Qgb2YgdGhyZWUgZGlnaXRzLgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDM7ICsraSkKKyAgICAg
ICAgaWYgKHN0YXR1c0NvZGVTdHJpbmdbaV0gPCAnMCcgfHwgc3RhdHVzQ29kZVN0cmluZ1tpXSA+
ICc5JykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBvayA9IGZhbHNlOwor
ICAgIHN0YXR1c0NvZGUgPSBzdGF0dXNDb2RlU3RyaW5nLnRvSW50KCZvayk7CisgICAgQVNTRVJU
KG9rKTsKKyAgICBpZiAoc3RhdHVzQ29kZSA8IDEwMCB8fCBzdGF0dXNDb2RlID49IDYwMCkgewor
ICAgICAgICBzdGF0dXNDb2RlID0gMDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgc3RhdHVzVGV4dCA9IFN0cmluZyhzcGFjZTIgKyAxLCBwIC0gc3BhY2UyIC0gMik7CisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBTdHJpbmcgcmVzb3VyY2VOYW1lKGNvbnN0IEtVUkwm
IHVybCkKQEAgLTExMCw2ICsxMzIsMzMgQEAgc3RhdGljIFN0cmluZyB0cmltQ29uc29sZU1lc3Nh
Z2UoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbikKICAgICByZXR1cm4gczsKIH0KIAorLy8gRm9y
bWF0IGEgY29uc29sZSBtZXNzYWdlIHNvIHRoYXQgY29udHJvbCBjaGFyYWN0ZXJzIGxvb2sgcHJl
dHR5Lgorc3RhdGljIFN0cmluZyBlc2NhcGVDb250cm9sQ2hhcmFjdGVycyhjb25zdCBTdHJpbmcm
IHN0cmluZykKK3sKKyAgICBzaXplX3QgZXNjYXBlZFNpemUgPSAwOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpCisgICAgICAgIGlmIChzdHJpbmdbaV0g
PCAweDIwIHx8IHN0cmluZ1tpXSA9PSAweDdGKQorICAgICAgICAgICAgZXNjYXBlZFNpemUgKz0g
NDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKytlc2NhcGVkU2l6ZTsKKworICAgIFN0cmlu
Z0J1ZmZlciBidWZmZXIoZXNjYXBlZFNpemUpOworICAgIHNpemVfdCBpbmRleCA9IDA7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoKCk7ICsraSkgeworICAgICAgICBV
Q2hhciBjaCA9IHN0cmluZ1tpXTsKKyAgICAgICAgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAweDdG
KSB7CisgICAgICAgICAgICBzdGF0aWMgY29uc3QgY2hhciBoZXhEaWdpdHNbMTddID0gIjAxMjM0
NTY3ODlhYmNkZWYiOworICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJ1xcJzsKKyAgICAg
ICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICd4JzsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9IGhleERpZ2l0c1tjaCA+PiA0XTsKKyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9IGhl
eERpZ2l0c1tjaCAmIDB4Rl07CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgYnVmZmVyW2lu
ZGV4KytdID0gY2g7CisgICAgfQorICAgIEFTU0VSVChpbmRleCA9PSBlc2NhcGVkU2l6ZSk7Cisg
ICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKK30KKwogc3RhdGljIHZvaWQgZ2VuZXJh
dGVTZWNXZWJTb2NrZXRLZXkodWludDMyX3QmIG51bWJlciwgU3RyaW5nJiBrZXkpCiB7CiAgICAg
dWludDMyX3Qgc3BhY2UgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmFuZG9tTnVtYmVyKCkgKiAx
MikgKyAxOwpAQCAtMzEyLDIxICszNjEsMjQgQEAgdm9pZCBXZWJTb2NrZXRIYW5kc2hha2U6OmNs
ZWFyU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiBpbnQgV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFk
U2VydmVySGFuZHNoYWtlKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbikKIHsKICAgICBt
X21vZGUgPSBJbmNvbXBsZXRlOworICAgIGludCBzdGF0dXNDb2RlOworICAgIFN0cmluZyBzdGF0
dXNUZXh0OwogICAgIHNpemVfdCBsaW5lTGVuZ3RoOwotICAgIGNvbnN0IFN0cmluZyYgY29kZSA9
IGV4dHJhY3RSZXNwb25zZUNvZGUoaGVhZGVyLCBsZW4sIGxpbmVMZW5ndGgpOwotICAgIGlmIChj
b2RlLmlzTnVsbCgpKSB7CisgICAgaWYgKCFwYXJzZVJlc3BvbnNlTGluZShoZWFkZXIsIGxlbiwg
c3RhdHVzQ29kZSwgc3RhdHVzVGV4dCwgbGluZUxlbmd0aCkpIHsKICAgICAgICAgLy8gSnVzdCBo
YXNuJ3QgYmVlbiByZWNlaXZlZCB5ZXQuCiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAg
aWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFzdGF0dXNDb2RlKSB7CiAgICAgICAgIG1f
bW9kZSA9IEZhaWxlZDsKLSAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2UgY29k
ZSBmb3VuZDogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxpbmVMZW5ndGgpLCAwLCBj
bGllbnRPcmlnaW4oKSk7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgcmVzcG9u
c2UgbGluZTogIiArIGVzY2FwZUNvbnRyb2xDaGFyYWN0ZXJzKHRyaW1Db25zb2xlTWVzc2FnZSho
ZWFkZXIsIGxpbmVMZW5ndGggKyAxKSksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0
dXJuIGxlbjsKICAgICB9Ci0gICAgTE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNv
ZGUudXRmOCgpLmRhdGEoKSk7Ci0gICAgaWYgKGNvZGUgIT0gIjEwMSIpIHsKKyAgICBMT0coTmV0
d29yaywgInJlc3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSk7CisgICAgbV9yZXNwb25zZS5z
ZXRTdGF0dXNDb2RlKHN0YXR1c0NvZGUpOworICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzVGV4dChz
dGF0dXNUZXh0KTsKKyAgICBpZiAoc3RhdHVzQ29kZSAhPSAxMDEpIHsKICAgICAgICAgbV9tb2Rl
ID0gRmFpbGVkOwotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3BvbnNl
IGNvZGU6IiArIGNvZGUsIDAsIGNsaWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5h
ZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxl
dmVsLCBTdHJpbmc6OmZvcm1hdCgiVW5leHBlY3RlZCByZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1
c0NvZGUpLCAwLCBjbGllbnRPcmlnaW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQog
ICAgIG1fbW9kZSA9IE5vcm1hbDsKQEAgLTMzNSwxNyArMzg3LDE2IEBAIGludCBXZWJTb2NrZXRI
YW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3Qg
bGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7CiAg
ICAgfQotICAgIEhUVFBIZWFkZXJNYXAgaGVhZGVyczsKICAgICBjb25zdCBjaGFyKiBoZWFkZXJG
aWVsZHMgPSBzdHJuc3RyKGhlYWRlciwgIlxyXG4iLCBsZW4pOyAvLyBza2lwIHN0YXR1cyBsaW5l
CiAgICAgQVNTRVJUKGhlYWRlckZpZWxkcyk7CiAgICAgaGVhZGVyRmllbGRzICs9IDI7IC8vIHNr
aXAgIlxyXG4iLgotICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyRmll
bGRzLCBoZWFkZXIgKyBsZW4sICZoZWFkZXJzKTsKKyAgICBjb25zdCBjaGFyKiBwID0gcmVhZEhU
VFBIZWFkZXJzKGhlYWRlckZpZWxkcywgaGVhZGVyICsgbGVuKTsKICAgICBpZiAoIXApIHsKICAg
ICAgICAgTE9HKE5ldHdvcmssICJyZWFkSFRUUEhlYWRlcnMgZmFpbGVkIik7CiAgICAgICAgIG1f
bW9kZSA9IEZhaWxlZDsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9Ci0gICAgaWYgKCFwcm9j
ZXNzSGVhZGVycyhoZWFkZXJzKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgeworICAgIGlm
ICghcHJvY2Vzc0hlYWRlcnMoKSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgewogICAgICAg
ICBMT0coTmV0d29yaywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwogICAgICAgICBtX21vZGUg
PSBGYWlsZWQ7CiAgICAgICAgIHJldHVybiBwIC0gaGVhZGVyOwpAQCAtMzU1LDYgKzQwNiw3IEBA
IGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciog
aGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAg
ICByZXR1cm4gLTE7CiAgICAgfQorICAgIG1fcmVzcG9uc2Uuc2V0Q2hhbGxlbmdlUmVzcG9uc2Uo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNpZ25lZCBjaGFyKj4ocCkpOwogICAgIGlmIChtZW1j
bXAocCwgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2YobV9leHBlY3RlZENoYWxs
ZW5nZVJlc3BvbnNlKSkpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICByZXR1
cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVuZ2VSZXNwb25zZSk7CkBA
IC00MTgsNiArNDcwLDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRD
b29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3NldENvb2tpZTIgPSBzZXRD
b29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2ViU29ja2V0
SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0
aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9IG1fdXJsLmNv
cHkoKTsKQEAgLTQyNiw4ICs0ODMsMTAgQEAgS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBV
UkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAgIHJldHVybiB1cmw7CiB9
CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0
IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpCitj
b25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFy
KiBzdGFydCwgY29uc3QgY2hhciogZW5kKQogeworICAgIG1fcmVzcG9uc2UuY2xlYXJIZWFkZXJG
aWVsZHMoKTsKKwogICAgIFZlY3RvcjxjaGFyPiBuYW1lOwogICAgIFZlY3RvcjxjaGFyPiB2YWx1
ZTsKICAgICBmb3IgKGNvbnN0IGNoYXIqIHAgPSBzdGFydDsgcCA8IGVuZDsgcCsrKSB7CkBAIC00
NTEsMTAgKzUxMCw3IEBAIGNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBI
ZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlCiAgICAgICAgICAgICBjYXNl
ICc6JzoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgaWYgKCpwID49IDB4NDEgJiYgKnAgPD0gMHg1YSkKLSAgICAgICAgICAgICAg
ICAgICAgbmFtZS5hcHBlbmQoKnAgKyAweDIwKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwKTsKKyAgICAgICAgICAgICAgICBuYW1lLmFw
cGVuZCgqcCk7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoKnAgPT0gJzonKSB7CkBAIC00OTUsMjYgKzU1MSwyNyBAQCBjb25zdCBjaGFy
KiBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwg
Y29uc3QgY2hhciogZQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICAgICAg
TE9HKE5ldHdvcmssICJuYW1lPSVzIHZhbHVlPSVzIiwgbmFtZVN0ci5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpLCB2YWx1ZVN0ci51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgaGVhZGVycy0+YWRkKG5h
bWVTdHIsIHZhbHVlU3RyKTsKKyAgICAgICAgbV9yZXNwb25zZS5hZGRIZWFkZXJGaWVsZChuYW1l
U3RyLCB2YWx1ZVN0cik7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJl
dHVybiAwOwogfQogCi1ib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycykKK2Jvb2wgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9j
ZXNzSGVhZGVycygpCiB7CisgICAgY29uc3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyA9IG1fcmVz
cG9uc2UuaGVhZGVyRmllbGRzKCk7CiAgICAgZm9yIChIVFRQSGVhZGVyTWFwOjpjb25zdF9pdGVy
YXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5lbmQoKTsgKytpdCkgewog
ICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewogICAgICAgICBjYXNlIE5vcm1hbDoKLSAgICAgICAg
ICAgIGlmIChpdC0+Zmlyc3QgPT0gInNlYy13ZWJzb2NrZXQtb3JpZ2luIikKKyAgICAgICAgICAg
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+Zmlyc3QsICJzZWMtd2Vic29ja2V0LW9yaWdpbiIp
KQogICAgICAgICAgICAgICAgIG1fd3NPcmlnaW4gPSBpdC0+c2Vjb25kOwotICAgICAgICAgICAg
ZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZWMtd2Vic29ja2V0LWxvY2F0aW9uIikKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwgInNlYy13ZWJzb2NrZXQt
bG9jYXRpb24iKSkKICAgICAgICAgICAgICAgICBtX3dzTG9jYXRpb24gPSBpdC0+c2Vjb25kOwot
ICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZWMtd2Vic29ja2V0LXByb3RvY29s
IikKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwgInNl
Yy13ZWJzb2NrZXQtcHJvdG9jb2wiKSkKICAgICAgICAgICAgICAgICBtX3dzUHJvdG9jb2wgPSBp
dC0+c2Vjb25kOwotICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29va2ll
IikKKyAgICAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwgInNl
dC1jb29raWUiKSkKICAgICAgICAgICAgICAgICBtX3NldENvb2tpZSA9IGl0LT5zZWNvbmQ7Ci0g
ICAgICAgICAgICBlbHNlIGlmIChpdC0+Zmlyc3QgPT0gInNldC1jb29raWUyIikKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGl0LT5maXJzdCwgInNldC1jb29raWUyIikp
CiAgICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNlY29uZDsKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICBjYXNlIEluY29tcGxldGU6CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlLmgKaW5kZXggM2UwYzY2YTZhNDhjNjhjNjc5ZDE3NDU0MGU0Y2VmYjg3
YjExZTY0Ny4uYTBjMmFmN2Y5NzVhYTJhODA2MmZkYmZkZDYyMjEwODFiMTk4MjAwNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCisrKyBiL1dlYkNv
cmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaApAQCAtMzYsMTEgKzM2LDExIEBACiAj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAi
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIgorI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7CiAgICAgY2xhc3MgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDsKIAogICAgIGNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZSA6IHB1YmxpYyBO
b25jb3B5YWJsZSB7CkBAIC04NiwxMiArODYsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjb25zdCBTdHJpbmcmIHNlcnZlclNldENvb2tpZTIoKSBjb25zdDsKICAgICAgICAgdm9p
ZCBzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMik7CiAKKyAgICAg
ICAgY29uc3QgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UmIHNlcnZlckhhbmRzaGFrZVJlc3Bv
bnNlKCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBLVVJMIGh0dHBVUkxGb3JBdXRo
ZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdDsKIAogICAgICAgICAvLyBSZWFkcyBhbGwgaGVh
ZGVycyBleGNlcHQgZm9yIHRoZSB0d28gcHJlZGVmaW5lZCBvbmVzLgotICAgICAgICBjb25zdCBj
aGFyKiByZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCwg
SFRUUEhlYWRlck1hcCogaGVhZGVycyk7Ci0gICAgICAgIGJvb2wgcHJvY2Vzc0hlYWRlcnMoY29u
c3QgSFRUUEhlYWRlck1hcCYgaGVhZGVycyk7CisgICAgICAgIGNvbnN0IGNoYXIqIHJlYWRIVFRQ
SGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kKTsKKyAgICAgICAgYm9v
bCBwcm9jZXNzSGVhZGVycygpOwogICAgICAgICBib29sIGNoZWNrUmVzcG9uc2VIZWFkZXJzKCk7
CiAKICAgICAgICAgS1VSTCBtX3VybDsKQEAgLTExMSw2ICsxMTMsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFN0cmluZyBtX3NlY1dlYlNvY2tldEtleTI7CiAgICAgICAgIHVuc2ln
bmVkIGNoYXIgbV9rZXkzWzhdOwogICAgICAgICB1bnNpZ25lZCBjaGFyIG1fZXhwZWN0ZWRDaGFs
bGVuZ2VSZXNwb25zZVsxNl07CisKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZTAwNzhmMTZhZWUyN2I5NjA1YzJiZWQxZjBlMDVhYjlmYWJlZTI0Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcApA
QCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoV0VCX1NP
Q0tFVFMpCisKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgorCisjaW5j
bHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSA8Y3N0cmluZz4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6Q2hh
bGxlbmdlUmVzcG9uc2UoKQoreworICAgIG1lbXNldCh2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7
Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNl
OjpzZXQoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pCit7CisgICAg
bWVtY3B5KHZhbHVlLCBjaGFsbGVuZ2VSZXNwb25zZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKK1dl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpCit7
Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjp+V2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UoKQoreworfQorCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1c0Nv
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1c0NvZGU7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCit7Cisg
ICAgQVNTRVJUKHN0YXR1c0NvZGUgPj0gMTAwICYmIHN0YXR1c0NvZGUgPCA2MDApOworICAgIG1f
c3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6OnN0YXR1c1RleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1
c1RleHQ7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c1Rl
eHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KQoreworICAgIG1fc3RhdHVzVGV4dCA9IHN0YXR1
c1RleHQ7Cit9CisKK2NvbnN0IEhUVFBIZWFkZXJNYXAmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOjpoZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2hlYWRlckZpZWxkczsK
K30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6YWRkSGVhZGVyRmllbGQoY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faGVh
ZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2U6OmNsZWFySGVhZGVyRmllbGRzKCkKK3sKKyAgICBtX2hlYWRlckZpZWxkcy5jbGVh
cigpOworfQorCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVz
cG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjaGFsbGVuZ2VSZXNwb25zZSgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fY2hhbGxlbmdlUmVzcG9uc2U7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldENoYWxsZW5nZVJlc3BvbnNlKGNvbnN0IHVuc2lnbmVk
IGNoYXIgY2hhbGxlbmdlUmVzcG9uc2VbMTZdKQoreworICAgIG1fY2hhbGxlbmdlUmVzcG9uc2Uu
c2V0KGNoYWxsZW5nZVJlc3BvbnNlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzg1YTFiNzBmNGM0N2YwMmZl
ZGJmMjE3ODEzNDliMmFjMWQ3MWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtl
UmVzcG9uc2VfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiSFRUUEhl
YWRlck1hcC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nOworCitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZSB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKyAg
ICB+V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKworICAgIGludCBzdGF0dXNDb2RlKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2RlKTsKKyAgICBjb25z
dCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0YXR1c1RleHQoY29u
c3QgU3RyaW5nJiBzdGF0dXNUZXh0KTsKKyAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJG
aWVsZHMoKSBjb25zdDsKKyAgICB2b2lkIGFkZEhlYWRlckZpZWxkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBjbGVhckhlYWRlckZpZWxk
cygpOworCisgICAgc3RydWN0IENoYWxsZW5nZVJlc3BvbnNlIHsKKyAgICAgICAgdW5zaWduZWQg
Y2hhciB2YWx1ZVsxNl07CisKKyAgICAgICAgQ2hhbGxlbmdlUmVzcG9uc2UoKTsKKyAgICAgICAg
dm9pZCBzZXQoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pOworICAg
IH07CisgICAgY29uc3QgQ2hhbGxlbmdlUmVzcG9uc2UmIGNoYWxsZW5nZVJlc3BvbnNlKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRDaGFsbGVuZ2VSZXNwb25zZShjb25zdCB1bnNpZ25lZCBjaGFyIGNo
YWxsZW5nZVJlc3BvbnNlWzE2XSk7CisKK3ByaXZhdGU6CisgICAgaW50IG1fc3RhdHVzQ29kZTsK
KyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0OworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVs
ZHM7CisgICAgQ2hhbGxlbmdlUmVzcG9uc2UgbV9jaGFsbGVuZ2VSZXNwb25zZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKwor
I2VuZGlmIC8vIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59102</attachid>
            <date>2010-06-18 06:25:53 -0700</date>
            <delta_ts>2010-06-22 01:43:26 -0700</delta_ts>
            <desc>Patch (Address ap&apos;s comments)</desc>
            <filename>bug-38728-20100618222551.patch</filename>
            <type>text/plain</type>
            <size>32733</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NzU0MTc0YTk0MTcwNzE3MThiZmEyNzkzOGMxNGE5MDdjZTJmMmU4Li5kYmI5N2Q0
YWI2OWIwYTc3NjIwNzYxNGIzMjViZDdiYWYzZGE1YjY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDYtMTggIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qg
dG8gY2hlY2sgaWYgdGhlIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgd2hlbiB0aGUgcmVzcG9u
c2UKKyAgICAgICAgbGluZSBkaWQgbm90IGVuZCB3aXRoIENSTEYuCisKKyAgICAgICAgV2ViU29j
a2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4CisKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eTogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jci5qczogQWRkZWQuCisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAg
KHdzLm9ub3Blbik6CisgICAgICAgICh3cy5vbm1lc3NhZ2UpOgorICAgICAgICAod3Mub25jbG9z
ZSk6CisgICAgICAgICh0aW1lb3V0Q2FsbGJhY2spOgorCiAyMDEwLTA2LTE4ICBEaXJrIFNjaHVs
emUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgTm90IHJldmlld2VkLiBSZWJhc2VsaW5l
IGd0ayByZXN1bHRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hh
bmRzaGFrZS1mYWlsLWJ5LW5vLWNyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2U1NmViN2I5NWUyZjk0ZGFiMDc1NWYxZDdiOTkwYzBhMDgwYjgyNwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMSBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFN0
YXR1cyBsaW5lIGRvZXMgbm90IGVuZCB3aXRoIENSTEYKK0hhbmRzaGFrZSBzaG91bGQgZmFpbCB3
aGVuIHRoZSBmaXJzdCBsaW5lIGRvZXMgbm90IGVuZCB3aXRoIENSTEYuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworUEFTUyBjb25uZWN0ZWQgaXMgZmFsc2UKK1BBU1Mgb3JpZ2luIGlz
IHVuZGVmaW5lZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtl
LWZhaWwtYnktbm8tY3IuaHRtbCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNiOWUyZTNjYzA1MDdhNTI1YWE3ODQy
ZGYxY2M5ODRhN2E5NmNkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy93ZWJzb2Nr
ZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC1mdW5jdGlvbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93
ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3Jfd3NoLnB5IGIvTGF5b3V0VGVz
dHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5jNTJmODA5NTc2ZGVjNDQ2YWEzZTAyMzI3YjcxOGNhMDQwMzI3NjYzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5v
LWNyX3dzaC5weQpAQCAtMCwwICsxLDEzIEBACitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5k
c2hha2UocmVxdWVzdCk6CisgICAgbXNnID0gJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9j
b2wgSGFuZHNoYWtlXG4nICMgRG9lcyBub3QgZW5kIHdpdGggIlxyXG4iLgorICAgIG1zZyArPSAn
VXBncmFkZTogV2ViU29ja2V0XHJcbicKKyAgICBtc2cgKz0gJ0Nvbm5lY3Rpb246IFVwZ3JhZGVc
clxuJworICAgIG1zZyArPSAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogJyArIHJlcXVlc3Qud3Nf
bG9jYXRpb24gKyAnXHJcbicKKyAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAnICsg
cmVxdWVzdC53c19vcmlnaW4gKyAnXHJcbicKKyAgICBtc2cgKz0gJ1xyXG4nCisgICAgbXNnICs9
IHJlcXVlc3Qud3NfY2hhbGxlbmdlX21kNQorICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSht
c2cpCisgICAgcHJpbnQgbXNnCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3Nj
cmlwdC10ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5qcyBiL0xheW91dFRlc3RzL3dlYnNv
Y2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjUwZjAzOWYxZTYxOTUyNDEyZmMxMzUxZTI2MGY1OWI2OWNmYzYyNgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFuZHNo
YWtlLWZhaWwtYnktbm8tY3IuanMKQEAgLTAsMCArMSw0NyBAQAorZGVzY3JpcHRpb24oJ0hhbmRz
aGFrZSBzaG91bGQgZmFpbCB3aGVuIHRoZSBmaXJzdCBsaW5lIGRvZXMgbm90IGVuZCB3aXRoIENS
TEYuJyk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpCisKK3ZhciBjb25uZWN0ZWQgPSBmYWxzZTsKK3Zh
ciBvcmlnaW47CisKK2Z1bmN0aW9uIGVuZFRlc3QoKSB7CisgICAgc2hvdWxkQmVGYWxzZSgnY29u
bmVjdGVkJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ29yaWdpbicpOworICAgIGNsZWFyVGlt
ZW91dCh0aW1lb3V0SUQpOworICAgIGlzU3VjY2Vzc2Z1bGx5UGFyc2VkKCk7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCit2YXIgdXJsID0gJ3dzOi8vbG9jYWxob3N0Ojg4ODAvd2Vic29j
a2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyJzsKK3ZhciB3cyA9IG5ldyBXZWJTb2Nr
ZXQodXJsKTsKKword3Mub25vcGVuID0gZnVuY3Rpb24oKQoreworICAgIGRlYnVnKCdDb25uZWN0
ZWQnKTsKKyAgICBjb25uZWN0ZWQgPSB0cnVlOworfQorCit3cy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihtZXNzYWdlRXZlbnQpCit7CisgICAgb3JpZ2luID0gbWVzc2FnZUV2ZW50LmRhdGE7CisgICAg
ZGVidWcoJ29yaWdpbiA9ICcgKyBvcmlnaW4pOworICAgIHdzLmNsb3NlKCk7Cit9CisKK3dzLm9u
Y2xvc2UgPSBmdW5jdGlvbigpCit7CisgICAgZW5kVGVzdCgpOworfQorCitmdW5jdGlvbiB0aW1l
b3V0Q2FsbGJhY2soKQoreworICAgIGRlYnVnKCdUaW1lZCBvdXQgKHN0YXRlID0gJyArIHdzLnJl
YWR5U3RhdGUgKyAnKScpOworICAgIGVuZFRlc3QoKTsKK30KKwordmFyIHRpbWVvdXRJRCA9IHNl
dFRpbWVvdXQodGltZW91dENhbGxiYWNrLCAzMDAwKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNl
ZCA9IHRydWU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDBjMTNjNThiYTNkMjE5Mzg0OGNiY2Q2ZWZkYjY2YTM3ZjAwN2QxYmIuLjI4MzJl
ZTg3Y2Y2ZTQ5NzM2ZTFlYTAzYjFjMjA1NDM2MWJhNTZkNzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMTAt
MDYtMTggIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IGNsYXNzIHRoYXQg
c3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UgcmVzcG9uc2UuCisK
KyAgICAgICAgSW4gdGhlIGZ1dHVyZSwgaW5zdGFuY2VzIG9mIHRoZSBuZXcgY2xhc3Mgd2lsbCBi
ZSBwYXNzZWQgdG8gdGhlIFdlYiBJbnNwZWN0b3IKKyAgICAgICAgc28gdGhhdCBpdCB3aWxsIGJl
IGFibGUgdG8gZGlzcGxheSBpbmZvcm1hdGlvbiBhYm91dCBXZWJTb2NrZXQgaGFuZHNoYWtlCisg
ICAgICAgIHJlc3BvbnNlLgorCisgICAgICAgIFdlYlNvY2tldDogQWRkIFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zODcyOAorCisgICAgICAgIFRlc3Q6IHdlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFp
bC1ieS1uby1jci5odG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRyaW1Db25zb2xlTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKTogTW92ZWQg
ZnJvbSBleHRyYWN0UmVzcG9uc2VDb2RlLgorICAgICAgICBBZGQgbW9yZSBlcnJvciBjaGVja3Mg
YW5kIG1ha2UgZXJyb3IgbWVzc2FnZXMgbW9yZSBkZXNjcmlwdGl2ZS4KKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZTo6cHJvY2Vzc0hlYWRlcnMpOgorICAgICAgICAqIHdlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmg6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxl
bmdlUmVzcG9uc2U6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6On5XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c3RhdHVzQ29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6c2V0U3Rh
dHVzQ29kZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6
c3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZTo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZTo6aGVhZGVyRmllbGRzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlOjphZGRIZWFkZXJGaWVsZCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZTo6Y2xlYXJIZWFkZXJGaWVsZHMpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRDaGFsbGVuZ2VSZXNw
b25zZSk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
OiBBZGRlZC4KKwogMjAxMC0wNi0xOCAgQW50b24gTXVoaW4gIDxhbnRvbm1AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDgwNzI3
MmYzZjFjMTFjYTJiOTgzMGQ5MDBlY2EzNmNjYWRiM2E0ZWUuLjJlZmE1NGFiYzE2ZjcyYTNmMjdl
YTE4YTg5NGE4Yzc2NDZmZjczZDUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0K
KysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMzc0Nyw3ICszNzQ3LDkgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNw
cCBcCiAJV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIFwKIAlXZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgXAotCVdlYkNvcmUvd2Vi
c29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgKKwlXZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKKwlXZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuaAogCiBpZiBFTkFCTEVfV09SS0VSUwogd2ViY29yZV9zb3VyY2Vz
ICs9IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggOTljZmM3ZTkzM2E5Y2VkYjlhYzg0MGVhMjFiMDg1YjRkZjQ1YTJhNC4uYzkz
N2Y0YTQyZTVmNTM3NDA3ZjEwNDNjMDc2NThkZTk0YTljNzhlNiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTM3ODksNiArMzc4
OSw4IEBACiAgICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaCcsCiAg
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCcsCiAg
ICAgICAgICAgICAnd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmgnLAorICAg
ICAgICAgICAgJ3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwJywKKyAg
ICAgICAgICAgICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgnLAogICAg
ICAgICAgICAgJ3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3Bw
JywKICAgICAgICAgICAgICd3ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsLmgnLAogICAgICAgICAgICAgJ3dvcmtlcnMvQWJzdHJhY3RXb3JrZXIuY3BwJywKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDM0
YzkwYTZlMGQxY2VhNjgyZmU5MjEwNmRmMjUzYzFiYTJjYmU5OWUuLjdiYzQyYjZmNjhmMzMwMDNk
YTUxNDYyYjQxNjczNTZjYzdkNmUxYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5wcm8K
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMjg4Miw2ICsyODgyLDcgQEAgY29udGFpbnMo
REVGSU5FUywgRU5BQkxFX1dFQl9TT0NLRVRTPTEpIHsKICAgICAgICAgd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsQ2xpZW50LmggXAogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRz
aGFrZS5oIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0Lmgg
XAorICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggXAogICAg
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL3F0L1NvY2tldFN0cmVhbUhhbmRsZVByaXZhdGUuaAogCiAg
ICAgU09VUkNFUyArPSBcCkBAIC0yODg5LDYgKzI4OTAsNyBAQCBjb250YWlucyhERUZJTkVTLCBF
TkFCTEVfV0VCX1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5u
ZWwuY3BwIFwKICAgICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKICAg
ICAgICAgd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCisgICAgICAg
IHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIFwKICAgICAgICAgd2Vi
c29ja2V0cy9UaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAogICAgICAgICBwbGF0Zm9y
bS9uZXR3b3JrL1NvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9u
ZXR3b3JrL1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IGQ5YmM5YzFiM2I2ZmQ3YWU5NGI3N2IwNzI3MDEzZWE3Mzk2NjI2
ODcuLjAxZTc5NDI2ZmQzZTMzNzczYmZmOWY2ODRjNzJlYjU3ZmU0ZjA3NDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNDc2NjksNiArNDc2NjksMTQgQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cd2Vic29ja2V0
c1xXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVs
LmNwcCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDZhZjM5YmU0MWM1N2NkMTA2ZTAxNTJiYWRhN2QzY2U2YjJmMGM2
MTEuLjkxZjE2ZWE1MDIyOGJhODY2MDk1ZjFjMGFhMWZiNWZhZWE4Y2Y0MTAgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzEyLDYgKzEzMTIsOCBAQAog
CQk3NTc5M0VENTBEMENFODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRUQyMEQw
Q0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovOyB9OwogCQk3NjM3
QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MDExMkU3
Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAgKi87IH07CiAJCTc2
MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjM3QzU0MjExMkU3
QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oICovOyB9OworCQk3NjdG
OTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY3Rjk5QkQxMUEx
MTk0QTAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLzsgfTsKKwkJ
NzY3Rjk5QzAxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRjEx
QTExOTU2MDA4MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCAqLzsgfTsKIAkJ
NzY5M0JBRDIxMDZDMkRDQTAwN0IwODIzIC8qIEhhbHRhYmxlUGx1Z2luLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFDRTEwNkMyRENBMDA3QjA4
MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3NjkzQkFEMzEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2OTNC
QUNGMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwICovOyB9OwogCQk3NjkzQkFE
NDEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjkzQkFEMDEwNkMyRENBMDA3QjA4MjMgLyogUGx1
Z2luSGFsdGVyLmggKi87IH07CkBAIC02OTYyLDYgKzY5NjQsOCBAQAogCQk3NTc5M0VEMjBEMENF
ODVCMDA3RkMwQUMgLyogRE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTU1lc3NhZ2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRI
YW5kc2hha2VSZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVz
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5OUJEMTFBMTE5NEEw
MDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3NjkzQkFDRTEwNkMyRENBMDA3QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFsdGFibGVQbHVnaW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIzIC8qIFBsdWdpbkhh
bHRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5IYWx0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NjkzQkFEMDEwNkMyRENBMDA3
QjA4MjMgLyogUGx1Z2luSGFsdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBsdWdpbkhhbHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE3NDYsNiAr
MTE3NTAsOCBAQAogCQkJCTUxQUJBRTQzMTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5k
c2hha2UuaCAqLywKIAkJCQk3NjM3QzU0MDExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFu
ZHNoYWtlUmVxdWVzdC5jcHAgKi8sCiAJCQkJNzYzN0M1NDIxMTJFN0I3RTAwM0Q2Q0RDIC8qIFdl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCAqLywKKwkJCQk3NjdGOTlCRDExQTExOTRBMDA4MEM1
MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovLAorCQkJCTc2N0Y5OUJGMTFB
MTE5NTYwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovLAogCQkJCTUx
MTIyNDc3MTBDRkI4RjQwMDgwOTlENyAvKiBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bC5jcHAgKi8sCiAJCQkJNTExMjI0NzkxMENGQjhGRjAwODA5OUQ3IC8qIFdvcmtlclRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsLmggKi8sCiAJCQkpOwpAQCAtMTkzNDMsNiArMTkzNDksNyBAQAog
CQkJCTUxMEQ0QTUwMTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1MUFCQUU0NTEwNDNBQjRBMDA4QzUyNjAgLyogV2ViU29ja2V0
SGFuZHNoYWtlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NjM3QzU0MzExMkU3QjdFMDAzRDZDREMg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzY3Rjk5
QzAxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkNGMzMyRDBGMkI5QTI1MDA0QjY3OTUgLyogV2ViVGlsZWRMYXllci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODUwMzFCNTEwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzODBGNDc0MDlBMTFBQjQwMDFGREIzNCAvKiBXaWRn
ZXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjE2NTgsNiArMjE2NjUsNyBAQAogCQkJCTUxMEQ0QTRF
MTAzMTc3QTIwMDQ5RUE1NCAvKiBXZWJTb2NrZXRDaGFubmVsLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxQUJBRTQ0MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzYzN0M1NDExMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNzY3Rjk5QkUxMUExMTk0QTAw
ODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGQ0YzMzJDMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJODUwMzFCNTAwQTQ0RUZDNzAwRjk5MkUwIC8qIFdoZWVsRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTM1QzQ3NzMwOUFDNEQ3NzAwQTZBQUI0IC8qIFdoZWVsRXZlbnRN
YWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2UuY3BwIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFr
ZS5jcHAKaW5kZXggZWE0ZjVlNTY1N2M1M2MyNTMyZTZkOTBhZWM0MTBlMGQ3OTk3NmJlMy4uNGJi
OWEyZWRlNWY1YTdlMDE4YjBmMTRhMmRlZjI0OWZkYzQ3YTg5NSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKKysrIGIvV2ViQ29yZS93ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAKQEAgLTU2LDI4ICs1Niw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogc3RhdGljIGNvbnN0IGNoYXIgcmFuZG9tQ2hhcmFjdGVySW5TZWNXZWJTb2Nr
ZXRLZXlbXSA9ICIhXCIjJCUmJygpKissLS4vOjs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX
WFlaW1xcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiI7CiAKLXN0YXRpYyBTdHJp
bmcgZXh0cmFjdFJlc3BvbnNlQ29kZShjb25zdCBjaGFyKiBoZWFkZXIsIGludCBsZW4sIHNpemVf
dCYgbGluZUxlbmd0aCkKLXsKLSAgICBjb25zdCBjaGFyKiBzcGFjZTEgPSAwOwotICAgIGNvbnN0
IGNoYXIqIHNwYWNlMiA9IDA7Ci0gICAgY29uc3QgY2hhciogcDsKLSAgICBsaW5lTGVuZ3RoID0g
MDsKLSAgICBmb3IgKHAgPSBoZWFkZXI7IHAgLSBoZWFkZXIgPCBsZW47IHArKywgbGluZUxlbmd0
aCsrKSB7Ci0gICAgICAgIGlmICgqcCA9PSAnICcpIHsKLSAgICAgICAgICAgIGlmICghc3BhY2Ux
KQotICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7Ci0gICAgICAgICAgICBlbHNlIGlmICghc3Bh
Y2UyKQotICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7Ci0gICAgICAgIH0gZWxzZSBpZiAoKnAg
PT0gJ1xuJykKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAocCAtIGhlYWRlciA9
PSBsZW4pCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICBpZiAoIXNwYWNlMSB8fCAhc3Bh
Y2UyKQotICAgICAgICByZXR1cm4gIiI7Ci0gICAgcmV0dXJuIFN0cmluZyhzcGFjZTEgKyAxLCBz
cGFjZTIgLSBzcGFjZTEgLSAxKTsKLX0KLQogc3RhdGljIFN0cmluZyByZXNvdXJjZU5hbWUoY29u
c3QgS1VSTCYgdXJsKQogewogICAgIFN0cmluZyBuYW1lID0gdXJsLnBhdGgoKTsKQEAgLTEwMiwx
MCArODAsMTEgQEAgc3RhdGljIFN0cmluZyBob3N0TmFtZShjb25zdCBLVVJMJiB1cmwsIGJvb2wg
c2VjdXJlKQogICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKK3N0YXRpYyBjb25z
dCBzaXplX3QgbWF4Q29uc29sZU1lc3NhZ2VTaXplID0gMTI4Owogc3RhdGljIFN0cmluZyB0cmlt
Q29uc29sZU1lc3NhZ2UoY29uc3QgY2hhciogcCwgc2l6ZV90IGxlbikKIHsKLSAgICBTdHJpbmcg
cyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgMTI4KSk7Ci0gICAgaWYgKGxlbiA+
IDEyOCkKKyAgICBTdHJpbmcgcyA9IFN0cmluZyhwLCBzdGQ6Om1pbjxzaXplX3Q+KGxlbiwgbWF4
Q29uc29sZU1lc3NhZ2VTaXplKSk7CisgICAgaWYgKGxlbiA+IG1heENvbnNvbGVNZXNzYWdlU2l6
ZSkKICAgICAgICAgcyArPSAiLi4uIjsKICAgICByZXR1cm4gczsKIH0KQEAgLTMxMiwyMSArMjkx
LDIxIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpjbGVhclNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKQogaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZShjb25zdCBj
aGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiB7CiAgICAgbV9tb2RlID0gSW5jb21wbGV0ZTsKLSAg
ICBzaXplX3QgbGluZUxlbmd0aDsKLSAgICBjb25zdCBTdHJpbmcmIGNvZGUgPSBleHRyYWN0UmVz
cG9uc2VDb2RlKGhlYWRlciwgbGVuLCBsaW5lTGVuZ3RoKTsKLSAgICBpZiAoY29kZS5pc051bGwo
KSkgewotICAgICAgICAvLyBKdXN0IGhhc24ndCBiZWVuIHJlY2VpdmVkIHlldC4KKyAgICBpbnQg
c3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgc3RhdHVzVGV4dDsKKyAgICBpbnQgbGluZUxlbmd0aCA9
IHJlYWRTdGF0dXNMaW5lKGhlYWRlciwgbGVuLCBzdGF0dXNDb2RlLCBzdGF0dXNUZXh0KTsKKyAg
ICBpZiAobGluZUxlbmd0aCA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBp
ZiAoY29kZS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoc3RhdHVzQ29kZSA9PSAtMSkgewogICAgICAg
ICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIk5vIHJlc3BvbnNl
IGNvZGUgZm91bmQ6ICIgKyB0cmltQ29uc29sZU1lc3NhZ2UoaGVhZGVyLCBsaW5lTGVuZ3RoKSwg
MCwgY2xpZW50T3JpZ2luKCkpOwogICAgICAgICByZXR1cm4gbGVuOwogICAgIH0KLSAgICBMT0co
TmV0d29yaywgInJlc3BvbnNlIGNvZGU6ICVzIiwgY29kZS51dGY4KCkuZGF0YSgpKTsKLSAgICBp
ZiAoY29kZSAhPSAiMTAxIikgeworICAgIExPRyhOZXR3b3JrLCAicmVzcG9uc2UgY29kZTogJWQi
LCBzdGF0dXNDb2RlKTsKKyAgICBtX3Jlc3BvbnNlLnNldFN0YXR1c0NvZGUoc3RhdHVzQ29kZSk7
CisgICAgbV9yZXNwb25zZS5zZXRTdGF0dXNUZXh0KHN0YXR1c1RleHQpOworICAgIGlmIChzdGF0
dXNDb2RlICE9IDEwMSkgewogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7Ci0gICAgICAgIG1fY29u
dGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1l
c3NhZ2VMZXZlbCwgIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZToiICsgY29kZSwgMCwgY2xpZW50
T3JpZ2luKCkpOworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIFN0cmluZzo6Zm9ybWF0KCJVbmV4
cGVjdGVkIHJlc3BvbnNlIGNvZGU6ICVkIiwgc3RhdHVzQ29kZSksIDAsIGNsaWVudE9yaWdpbigp
KTsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9CiAgICAgbV9tb2RlID0gTm9ybWFsOwpAQCAt
MzM1LDE3ICszMTQsMTMgQEAgaW50IFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZFNlcnZlckhhbmRz
aGFrZShjb25zdCBjaGFyKiBoZWFkZXIsIHNpemVfdCBsZW4pCiAgICAgICAgIG1fbW9kZSA9IElu
Y29tcGxldGU7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgSFRUUEhlYWRlck1hcCBo
ZWFkZXJzOwotICAgIGNvbnN0IGNoYXIqIGhlYWRlckZpZWxkcyA9IHN0cm5zdHIoaGVhZGVyLCAi
XHJcbiIsIGxlbik7IC8vIHNraXAgc3RhdHVzIGxpbmUKLSAgICBBU1NFUlQoaGVhZGVyRmllbGRz
KTsKLSAgICBoZWFkZXJGaWVsZHMgKz0gMjsgLy8gc2tpcCAiXHJcbiIuCi0gICAgY29uc3QgY2hh
ciogcCA9IHJlYWRIVFRQSGVhZGVycyhoZWFkZXJGaWVsZHMsIGhlYWRlciArIGxlbiwgJmhlYWRl
cnMpOworICAgIGNvbnN0IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyICsgbGluZUxl
bmd0aCwgaGVhZGVyICsgbGVuKTsKICAgICBpZiAoIXApIHsKICAgICAgICAgTE9HKE5ldHdvcmss
ICJyZWFkSFRUUEhlYWRlcnMgZmFpbGVkIik7CiAgICAgICAgIG1fbW9kZSA9IEZhaWxlZDsKICAg
ICAgICAgcmV0dXJuIGxlbjsKICAgICB9Ci0gICAgaWYgKCFwcm9jZXNzSGVhZGVycyhoZWFkZXJz
KSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgeworICAgIGlmICghcHJvY2Vzc0hlYWRlcnMo
KSB8fCAhY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgewogICAgICAgICBMT0coTmV0d29yaywgImhl
YWRlciBwcm9jZXNzIGZhaWxlZCIpOwogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAgICAgICAg
IHJldHVybiBwIC0gaGVhZGVyOwpAQCAtMzU1LDYgKzMzMCw3IEBAIGludCBXZWJTb2NrZXRIYW5k
c2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVu
KQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7CiAgICAg
fQorICAgIG1fcmVzcG9uc2Uuc2V0Q2hhbGxlbmdlUmVzcG9uc2UocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1bnNpZ25lZCBjaGFyKj4ocCkpOwogICAgIGlmIChtZW1jbXAocCwgbV9leHBlY3RlZENo
YWxsZW5nZVJlc3BvbnNlLCBzaXplb2YobV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlKSkpIHsK
ICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAgICAgICByZXR1cm4gKHAgLSBoZWFkZXIpICsg
c2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVuZ2VSZXNwb25zZSk7CkBAIC00MTgsNiArMzk0LDExIEBA
IHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRTZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmlu
ZyYgc2V0Q29va2llMikKICAgICBtX3NldENvb2tpZTIgPSBzZXRDb29raWUyOwogfQogCitjb25z
dCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJI
YW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVzcG9uc2U7Cit9CisK
IEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29r
aWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9IG1fdXJsLmNvcHkoKTsKQEAgLTQyNiw4ICs0
MDcsNjggQEAgS1VSTCBXZWJTb2NrZXRIYW5kc2hha2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlv
bkFuZENvb2tpZXMoKSBjb25zdAogICAgIHJldHVybiB1cmw7CiB9CiAKLWNvbnN0IGNoYXIqIFdl
YlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25z
dCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhlYWRlcnMpCisvLyBSZXR1cm5zIHRoZSBoZWFk
ZXIgbGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwgb3IgLTEgaWYgd2UgaGF2ZSBub3QgcmVjZWl2
ZWQgZW5vdWdoIGRhdGEgeWV0LgorLy8gSWYgdGhlIGxpbmUgaXMgbWFsZm9ybWVkIG9yIHRoZSBz
dGF0dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51bWJlciwKKy8vIHN0YXR1c0NvZGUgYW5kIHN0
YXR1c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5kIGEgbnVsbCBzdHJpbmcsIHJlc3BlY3RpdmVs
eS4KK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhl
YWRlciwgc2l6ZV90IGxlbiwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCit7
CisgICAgc3RhdHVzQ29kZSA9IC0xOworICAgIHN0YXR1c1RleHQgPSBTdHJpbmcoKTsKKworICAg
IGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAg
ICBjb25zdCBjaGFyKiBwOworICAgIGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGxlbjsg
cCsrKSB7CisgICAgICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2Ux
KQorICAgICAgICAgICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3Bh
Y2UyKQorICAgICAgICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAg
PT0gJ1xuJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9
PSBsZW4pCisgICAgICAgIHJldHVybiAtMTsgLy8gV2UgaGF2ZSBub3QgcmVjZWl2ZWQgJ1xuJyB5
ZXQuCisKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBwICsgMTsKKyAgICBpZiAoZW5kIC0gaGVhZGVy
ID4gSU5UX01BWCkgeworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJTdGF0dXMgbGluZSBpcyB0
b28gbG9uZzogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIG1heENvbnNvbGVNZXNzYWdl
U2l6ZSArIDEpLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIHJldHVybiBJTlRfTUFYOwor
ICAgIH0KKyAgICBpbnQgbGluZUxlbmd0aCA9IGVuZCAtIGhlYWRlcjsKKworICAgIGlmICghc3Bh
Y2UxIHx8ICFzcGFjZTIpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2Ug
Y29kZSBmb3VuZDogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxpbmVMZW5ndGggLSAx
KSwgMCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKKyAgICB9
CisKKyAgICAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICBpZiAoKihlbmQg
LSAyKSAhPSAnXHInKSB7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlN0YXR1cyBsaW5lIGRv
ZXMgbm90IGVuZCB3aXRoIENSTEYiLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIHJldHVy
biBsaW5lTGVuZ3RoOworICAgIH0KKworICAgIFN0cmluZyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNl
MSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxl
bmd0aCgpICE9IDMpIC8vIFN0YXR1cyBjb2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMu
CisgICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsg
KytpKQorICAgICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZ1tpXSA8ICcwJyB8fCBzdGF0dXNDb2Rl
U3RyaW5nW2ldID4gJzknKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlk
IHN0YXR1cyBjb2RlOiAiICsgc3RhdHVzQ29kZVN0cmluZywgMCwgY2xpZW50T3JpZ2luKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CisgICAgICAgIH0KKworICAgIGJvb2wgb2sg
PSBmYWxzZTsKKyAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludCgmb2spOwor
ICAgIEFTU0VSVChvayk7CisKKyAgICBzdGF0dXNUZXh0ID0gU3RyaW5nKHNwYWNlMiArIDEsIGVu
ZCAtIHNwYWNlMiAtIDMpOyAvLyBFeGNsdWRlICJcclxuIi4KKyAgICByZXR1cm4gbGluZUxlbmd0
aDsKK30KKworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMo
Y29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkKIHsKKyAgICBtX3Jlc3BvbnNlLmNs
ZWFySGVhZGVyRmllbGRzKCk7CisKICAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKICAgICBWZWN0b3I8
Y2hhcj4gdmFsdWU7CiAgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHAr
KykgewpAQCAtNDUxLDEwICs0OTIsNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6
OnJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQogICAgICAg
ICAgICAgY2FzZSAnOic6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgICAgIGlmICgqcCA+PSAweDQxICYmICpwIDw9IDB4NWEpCi0gICAg
ICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwICsgMHgyMCk7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCgqcCk7CisgICAgICAgICAgICAg
ICAgbmFtZS5hcHBlbmQoKnApOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKCpwID09ICc6JykgewpAQCAtNDk1LDI2ICs1MzMsMjcgQEAg
Y29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hh
ciogc3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9
CiAgICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVTdHIuc3RyaW5n
KCkudXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGhlYWRl
cnMtPmFkZChuYW1lU3RyLCB2YWx1ZVN0cik7CisgICAgICAgIG1fcmVzcG9uc2UuYWRkSGVhZGVy
RmllbGQobmFtZVN0ciwgdmFsdWVTdHIpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OnByb2Nlc3NI
ZWFkZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCitib29sIFdlYlNvY2tldEhhbmRz
aGFrZTo6cHJvY2Vzc0hlYWRlcnMoKQogeworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRl
cnMgPSBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpOwogICAgIGZvciAoSFRUUEhlYWRlck1hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBoZWFkZXJzLmJlZ2luKCk7IGl0ICE9IGhlYWRlcnMuZW5kKCk7
ICsraXQpIHsKICAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKICAgICAgICAgY2FzZSBOb3JtYWw6
Ci0gICAgICAgICAgICBpZiAoaXQtPmZpcnN0ID09ICJzZWMtd2Vic29ja2V0LW9yaWdpbiIpCisg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoaXQtPmZpcnN0LCAic2VjLXdlYnNvY2tl
dC1vcmlnaW4iKSkKICAgICAgICAgICAgICAgICBtX3dzT3JpZ2luID0gaXQtPnNlY29uZDsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2VjLXdlYnNvY2tldC1sb2NhdGlvbiIp
CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+Zmlyc3QsICJzZWMt
d2Vic29ja2V0LWxvY2F0aW9uIikpCiAgICAgICAgICAgICAgICAgbV93c0xvY2F0aW9uID0gaXQt
PnNlY29uZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2VjLXdlYnNvY2tl
dC1wcm90b2NvbCIpCisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+
Zmlyc3QsICJzZWMtd2Vic29ja2V0LXByb3RvY29sIikpCiAgICAgICAgICAgICAgICAgbV93c1By
b3RvY29sID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGl0LT5maXJzdCA9PSAi
c2V0LWNvb2tpZSIpCisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+
Zmlyc3QsICJzZXQtY29va2llIikpCiAgICAgICAgICAgICAgICAgbV9zZXRDb29raWUgPSBpdC0+
c2Vjb25kOwotICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29va2llMiIp
CisgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShpdC0+Zmlyc3QsICJzZXQt
Y29va2llMiIpKQogICAgICAgICAgICAgICAgIG1fc2V0Q29va2llMiA9IGl0LT5zZWNvbmQ7CiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY2FzZSBJbmNvbXBsZXRlOgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oIGIvV2ViQ29yZS93ZWJz
b2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmluZGV4IDNlMGM2NmE2YTQ4YzY4YzY3OWQxNzQ1
NDBlNGNlZmI4N2IxMWU2NDcuLjFkMjllYmQ3NDNhYzVhMWI2MDk2OWJjNDA4YzUyOGFkZmVhMjNh
NDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAor
KysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmgKQEAgLTM2LDExICsz
NiwxMSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgog
I2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBIVFRQSGVhZGVyTWFwOwogICAgIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAgICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2Ug
OiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtODYsMTIgKzg2LDE2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBzZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29va2llMihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIp
OwogCisgICAgICAgIGNvbnN0IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlJiBzZXJ2ZXJIYW5k
c2hha2VSZXNwb25zZSgpIGNvbnN0OworCiAgICAgcHJpdmF0ZToKICAgICAgICAgS1VSTCBodHRw
VVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3Q7CiAKKyAgICAgICAgaW50IHJl
YWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGxlbiwgaW50JiBzdGF0dXND
b2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpOworCiAgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJz
IGV4Y2VwdCBmb3IgdGhlIHR3byBwcmVkZWZpbmVkIG9uZXMuCi0gICAgICAgIGNvbnN0IGNoYXIq
IHJlYWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQ
SGVhZGVyTWFwKiBoZWFkZXJzKTsKLSAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBI
VFRQSGVhZGVyTWFwJiBoZWFkZXJzKTsKKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFk
ZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQpOworICAgICAgICBib29sIHBy
b2Nlc3NIZWFkZXJzKCk7CiAgICAgICAgIGJvb2wgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKIAog
ICAgICAgICBLVVJMIG1fdXJsOwpAQCAtMTExLDYgKzExNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgU3RyaW5nIG1fc2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQg
Y2hhciBtX2tleTNbOF07CiAgICAgICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5n
ZVJlc3BvbnNlWzE2XTsKKworICAgICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jl
c3BvbnNlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3Jl
L3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1
M2NlY2Y1NDYyMTIwYmVkM2UwYmE1ZGU4ZTMzMDFhZmYyNWJiNGYKLS0tIC9kZXYvbnVsbAorKysg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0w
LDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VU
UykKKworI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRl
ICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBu
YW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UoKQoreworICAg
IG1lbXNldCh2YWx1ZSwgMCwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFu
ZHNoYWtlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlOjpzZXQoY29uc3QgdW5zaWduZWQgY2hh
ciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pCit7CisgICAgbWVtY3B5KHZhbHVlLCBjaGFsbGVuZ2VS
ZXNwb25zZSwgc2l6ZW9mKHZhbHVlKSk7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
OjpXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSgpCit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjp+V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKQoreworfQorCitpbnQgV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1c0NvZGUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3N0YXR1c0NvZGU7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNl
dFN0YXR1c0NvZGUoaW50IHN0YXR1c0NvZGUpCit7CisgICAgQVNTRVJUKHN0YXR1c0NvZGUgPj0g
MTAwICYmIHN0YXR1c0NvZGUgPCA2MDApOworICAgIG1fc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7
Cit9CisKK2NvbnN0IFN0cmluZyYgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1c1Rl
eHQoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1c1RleHQ7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNU
ZXh0KQoreworICAgIG1fc3RhdHVzVGV4dCA9IHN0YXR1c1RleHQ7Cit9CisKK2NvbnN0IEhUVFBI
ZWFkZXJNYXAmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMoKSBjb25z
dAoreworICAgIHJldHVybiBtX2hlYWRlckZpZWxkczsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZTo6YWRkSGVhZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBj
b25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIG1faGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1
ZSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNsZWFySGVhZGVyRmll
bGRzKCkKK3sKKyAgICBtX2hlYWRlckZpZWxkcy5jbGVhcigpOworfQorCitjb25zdCBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpjaGFsbGVuZ2VSZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hh
bGxlbmdlUmVzcG9uc2U7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNl
dENoYWxsZW5nZVJlc3BvbnNlKGNvbnN0IHVuc2lnbmVkIGNoYXIgY2hhbGxlbmdlUmVzcG9uc2Vb
MTZdKQoreworICAgIG1fY2hhbGxlbmdlUmVzcG9uc2Uuc2V0KGNoYWxsZW5nZVJlc3BvbnNlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NL
RVRTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmggYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2Uu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jMzg1YTFiNzBmNGM0N2YwMmZlZGJmMjE3ODEzNDliMmFjMWQ3MWI1Ci0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29n
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlX2gKKyNkZWZpbmUgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorCisjaWYgRU5BQkxF
KFdFQl9TT0NLRVRTKQorCisjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3Ry
aW5nOworCitjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSB7CitwdWJsaWM6CisgICAg
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKyAgICB+V2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UoKTsKKworICAgIGludCBzdGF0dXNDb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGF0
dXNDb2RlKGludCBzdGF0dXNDb2RlKTsKKyAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBj
b25zdDsKKyAgICB2b2lkIHNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KTsK
KyAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJGaWVsZHMoKSBjb25zdDsKKyAgICB2b2lk
IGFkZEhlYWRlckZpZWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2
YWx1ZSk7CisgICAgdm9pZCBjbGVhckhlYWRlckZpZWxkcygpOworCisgICAgc3RydWN0IENoYWxs
ZW5nZVJlc3BvbnNlIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciB2YWx1ZVsxNl07CisKKyAgICAg
ICAgQ2hhbGxlbmdlUmVzcG9uc2UoKTsKKyAgICAgICAgdm9pZCBzZXQoY29uc3QgdW5zaWduZWQg
Y2hhciBjaGFsbGVuZ2VSZXNwb25zZVsxNl0pOworICAgIH07CisgICAgY29uc3QgQ2hhbGxlbmdl
UmVzcG9uc2UmIGNoYWxsZW5nZVJlc3BvbnNlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGFsbGVu
Z2VSZXNwb25zZShjb25zdCB1bnNpZ25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7CisK
K3ByaXZhdGU6CisgICAgaW50IG1fc3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0
OworICAgIEhUVFBIZWFkZXJNYXAgbV9oZWFkZXJGaWVsZHM7CisgICAgQ2hhbGxlbmdlUmVzcG9u
c2UgbV9jaGFsbGVuZ2VSZXNwb25zZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJfU09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59354</attachid>
            <date>2010-06-22 01:43:32 -0700</date>
            <delta_ts>2010-06-22 08:41:11 -0700</delta_ts>
            <desc>Patch (Address comment #31)</desc>
            <filename>bug-38728-20100622174330.patch</filename>
            <type>text/plain</type>
            <size>33966</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZmNmOTljNmJiZGZlZWI2MTAxMjgzMDdjMTA5NzRhNzAwYzUzNjE3Li4yYTc5ZTc2
MjRkNTQ4MGE5MjZhNmUxYTFmYjk2NTljYjQxNmY1MWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAK
KzIwMTAtMDYtMjIgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qg
dG8gY2hlY2sgaWYgdGhlIFdlYlNvY2tldCBoYW5kc2hha2UgZmFpbHMgd2hlbiB0aGUgcmVzcG9u
c2UKKyAgICAgICAgbGluZSBkaWQgbm90IGVuZCB3aXRoIENSTEYuCisKKyAgICAgICAgV2ViU29j
a2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4CisKKyAgICAgICAgKiB3ZWJzb2NrZXQv
dGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5w
eTogQWRkZWQuCisgICAgICAgICogd2Vic29ja2V0L3Rlc3RzL2xvbmctaW52YWxpZC1oZWFkZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYnNvY2tldC90ZXN0cy9zY3JpcHQtdGVzdHMvaGFu
ZHNoYWtlLWZhaWwtYnktbm8tY3IuanM6IEFkZGVkLgorICAgICAgICAoZW5kVGVzdCk6CisgICAg
ICAgICh3cy5vbm9wZW4pOgorICAgICAgICAod3Mub25tZXNzYWdlKToKKyAgICAgICAgKHdzLm9u
Y2xvc2UpOgorICAgICAgICAodGltZW91dENhbGxiYWNrKToKKwogMjAxMC0wNi0yMCAgTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW50
IFRhbXVyYS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hh
a2UtZmFpbC1ieS1uby1jci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVz
dHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNTZl
YjdiOTVlMmY5NGRhYjA3NTVmMWQ3Yjk5MGMwYTA4MGI4MjcKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3ItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAwOiBTdGF0dXMg
bGluZSBkb2VzIG5vdCBlbmQgd2l0aCBDUkxGCitIYW5kc2hha2Ugc2hvdWxkIGZhaWwgd2hlbiB0
aGUgZmlyc3QgbGluZSBkb2VzIG5vdCBlbmQgd2l0aCBDUkxGLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1BBU1MgY29ubmVjdGVkIGlzIGZhbHNlCitQQVNTIG9yaWdpbiBpcyB1bmRl
ZmluZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWls
LWJ5LW5vLWNyLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvaGFuZHNoYWtlLWZh
aWwtYnktbm8tY3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjllMmUzY2MwNTA3YTUyNWFhNzg0MmRmMWNj
OTg0YTdhOTZjZDJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rl
c3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QtZnVuY3Rpb24uanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvaGFuZHNoYWtlLWZhaWwtYnktbm8tY3IuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2Vic29j
a2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyX3dzaC5weSBiL0xheW91dFRlc3RzL3dl
YnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jcl93c2gucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YzUyZjgwOTU3NmRlYzQ0NmFhM2UwMjMyN2I3MThjYTA0MDMyNzY2MwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jcl93
c2gucHkKQEAgLTAsMCArMSwxMyBAQAorZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpOgorICAgIG1zZyA9ICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhh
bmRzaGFrZVxuJyAjIERvZXMgbm90IGVuZCB3aXRoICJcclxuIi4KKyAgICBtc2cgKz0gJ1VwZ3Jh
ZGU6IFdlYlNvY2tldFxyXG4nCisgICAgbXNnICs9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
KyAgICBtc2cgKz0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb246ICcgKyByZXF1ZXN0LndzX2xvY2F0
aW9uICsgJ1xyXG4nCisgICAgbXNnICs9ICdTZWMtV2ViU29ja2V0LU9yaWdpbjogJyArIHJlcXVl
c3Qud3Nfb3JpZ2luICsgJ1xyXG4nCisgICAgbXNnICs9ICdcclxuJworICAgIG1zZyArPSByZXF1
ZXN0LndzX2NoYWxsZW5nZV9tZDUKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUobXNnKQor
ICAgIHByaW50IG1zZworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgor
ICAgIHBhc3MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9sb25nLWlu
dmFsaWQtaGVhZGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3dlYnNvY2tldC90ZXN0cy9s
b25nLWludmFsaWQtaGVhZGVyLWV4cGVjdGVkLnR4dAppbmRleCA4NDViOTg2ZWIyOTM2YzE0ZDYw
NjRjZjdhZTRmM2RkNDQ3YzIzNDc1Li43MGZhNGYxYWVlMDJhZDljMzk4NTJlZTI0YjJhNTBmNDc0
MDkyMDY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvbG9uZy1pbnZh
bGlkLWhlYWRlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3Rz
L2xvbmctaW52YWxpZC1oZWFkZXItZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDA6IFVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSBhdCBwcHBwcHBwcHBwcHBw
cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw
cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw
cC4uLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDA6IFVuZXhwZWN0ZWQgQ1IgaW4gbmFtZSBhdCBw
cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw
cHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBw
cHBwcHBwcHBwcHBwcOKApgogTWFrZSBzdXJlIFdlYlNvY2tldCBnaXZlcyBlcnJvcnMgb24gbG9u
ZyBpbnZhbGlkIHVwZ3JhZGUgaGVhZGVyLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJzb2NrZXQvdGVzdHMvc2NyaXB0LXRlc3RzL2hhbmRz
aGFrZS1mYWlsLWJ5LW5vLWNyLmpzIGIvTGF5b3V0VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3Njcmlw
dC10ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1jci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTBmMDM5ZjFl
NjE5NTI0MTJmYzEzNTFlMjYwZjU5YjY5Y2ZjNjI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvd2Vic29ja2V0L3Rlc3RzL3NjcmlwdC10ZXN0cy9oYW5kc2hha2UtZmFpbC1ieS1uby1j
ci5qcwpAQCAtMCwwICsxLDQ3IEBACitkZXNjcmlwdGlvbignSGFuZHNoYWtlIHNob3VsZCBmYWls
IHdoZW4gdGhlIGZpcnN0IGxpbmUgZG9lcyBub3QgZW5kIHdpdGggQ1JMRi4nKTsKKworaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCkKKwordmFyIGNvbm5lY3RlZCA9IGZhbHNlOwordmFyIG9yaWdpbjsKKworZnVu
Y3Rpb24gZW5kVGVzdCgpIHsKKyAgICBzaG91bGRCZUZhbHNlKCdjb25uZWN0ZWQnKTsKKyAgICBz
aG91bGRCZVVuZGVmaW5lZCgnb3JpZ2luJyk7CisgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJRCk7
CisgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9
CisKK3ZhciB1cmwgPSAnd3M6Ly9sb2NhbGhvc3Q6ODg4MC93ZWJzb2NrZXQvdGVzdHMvaGFuZHNo
YWtlLWZhaWwtYnktbm8tY3InOwordmFyIHdzID0gbmV3IFdlYlNvY2tldCh1cmwpOworCit3cy5v
bm9wZW4gPSBmdW5jdGlvbigpCit7CisgICAgZGVidWcoJ0Nvbm5lY3RlZCcpOworICAgIGNvbm5l
Y3RlZCA9IHRydWU7Cit9CisKK3dzLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKG1lc3NhZ2VFdmVudCkK
K3sKKyAgICBvcmlnaW4gPSBtZXNzYWdlRXZlbnQuZGF0YTsKKyAgICBkZWJ1Zygnb3JpZ2luID0g
JyArIG9yaWdpbik7CisgICAgd3MuY2xvc2UoKTsKK30KKword3Mub25jbG9zZSA9IGZ1bmN0aW9u
KCkKK3sKKyAgICBlbmRUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIHRpbWVvdXRDYWxsYmFjaygpCit7
CisgICAgZGVidWcoJ1RpbWVkIG91dCAoc3RhdGUgPSAnICsgd3MucmVhZHlTdGF0ZSArICcpJyk7
CisgICAgZW5kVGVzdCgpOworfQorCit2YXIgdGltZW91dElEID0gc2V0VGltZW91dCh0aW1lb3V0
Q2FsbGJhY2ssIDMwMDApOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U1MDQ0
OTkwNTE2NThjMjI2YTgwN2NlZmNlNGU5NjE5ZDY3YjljYy4uMTJkZTliMjFjOGI1NjY4NGMyNGM4
YWEzMjkzOTYzZGMzZjVjM2I1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAxMC0wNi0yMiAgWXV0YSBLaXRh
bXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgY2xhc3MgdGhhdCBzdG9yZXMgaW5mb3JtYXRp
b24gYWJvdXQgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KKworICAgICAgICBJbiB0aGUg
ZnV0dXJlLCBpbnN0YW5jZXMgb2YgdGhlIG5ldyBjbGFzcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUg
V2ViIEluc3BlY3RvcgorICAgICAgICBzbyB0aGF0IGl0IHdpbGwgYmUgYWJsZSB0byBkaXNwbGF5
IGluZm9ybWF0aW9uIGFib3V0IFdlYlNvY2tldCBoYW5kc2hha2UKKyAgICAgICAgcmVzcG9uc2Uu
CisKKyAgICAgICAgV2ViU29ja2V0OiBBZGQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzI4CisKKyAg
ICAgICAgVGVzdDogd2Vic29ja2V0L3Rlc3RzL2hhbmRzaGFrZS1mYWlsLWJ5LW5vLWNyLmh0bWwK
KworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6dHJpbUNvbnNvbGVNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRz
aGFrZTo6cmVhZFNlcnZlckhhbmRzaGFrZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRI
YW5kc2hha2U6OnNlcnZlckhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6Oldl
YlNvY2tldEhhbmRzaGFrZTo6cmVhZFN0YXR1c0xpbmUpOiBNb3ZlZCBmcm9tIGV4dHJhY3RSZXNw
b25zZUNvZGUuCisgICAgICAgIEFkZCBtb3JlIGVycm9yIGNoZWNrcyBhbmQgbWFrZSBlcnJvciBt
ZXNzYWdlcyBtb3JlIGRlc2NyaXB0aXZlLgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFu
ZHNoYWtlOjpwcm9jZXNzSGVhZGVycyk6CisgICAgICAgICogd2Vic29ja2V0cy9XZWJTb2NrZXRI
YW5kc2hha2UuaDoKKyAgICAgICAgKiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hha2VSZXNw
b25zZTo6Q2hhbGxlbmdlUmVzcG9uc2U6OkNoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZTo6c2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5kc2hh
a2VSZXNwb25zZTo6fldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNDb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNDb2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzdGF0dXNUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpzZXRTdGF0dXNUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpoZWFkZXJG
aWVsZHMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OmFk
ZEhlYWRlckZpZWxkKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlOjpjbGVhckhlYWRlckZpZWxkcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZTo6Y2hhbGxlbmdlUmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldENoYWxsZW5nZVJlc3BvbnNlKToKKyAgICAgICAg
KiB3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmg6IEFkZGVkLgorCiAyMDEw
LTA2LTIwICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEtlbnQgVGFtdXJhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggYTJmNjM2YjY4MTUzNjE2YjdmZmFiYjI5
ZmEzZGQ4OGVmNDI2NmIwNS4uZDY4OGIzNDA1NzU5ODY4ODg4M2JmNmZkNzcyYzQ1MjJmZTRmMGM2
MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCkBAIC0zNzczLDcgKzM3NzMsOSBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuY3BwIFwKIAlXZWJDb3JlL3dlYnNv
Y2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBcCi0JV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhh
bmRzaGFrZVJlcXVlc3QuaAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VS
ZXF1ZXN0LmggXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25z
ZS5jcHAgXAorCVdlYkNvcmUvd2Vic29ja2V0cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5o
CiAKIGlmIEVOQUJMRV9XT1JLRVJTCiB3ZWJjb3JlX3NvdXJjZXMgKz0gXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAyZTQ2MTE5
MGU2ZTU5MzBkOTYxYWQxZTEyYjYyMGQ0MTk5MGRhMzBlLi4xNWJmMjA3NzE2YWQzY2IxYzYyZWNl
ZjJmNTcxZDFmOGIwMzY0YTY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysg
Yi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzgwMSw2ICszODAxLDggQEAKICAgICAgICAgICAg
ICd3ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwJywKICAgICAgICAgICAgICd3ZWJzb2Nr
ZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCcsCisgICAgICAgICAgICAnd2Vic29ja2V0
cy9XZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAnLAorICAgICAgICAgICAgJ3dlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCcsCiAgICAgICAgICAgICAnd2Vic29ja2V0
cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAnLAogICAgICAgICAgICAgJ3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuaCcsCiAgICAgICAgICAg
ICAnd29ya2Vycy9BYnN0cmFjdFdvcmtlci5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJD
b3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggYTMyM2EwNzk0Yzk3NDM5YjQ1MDE5
ZmQ3ZDJkNzY1Y2JjMWM1Mzc0Ni4uYTViNjFkNzcyZTJjOWY0ZDc1ZWUzOTQ1YmJjNGVlZDdkOTI4
YWQ4OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC0yODkwLDYgKzI4OTAsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfV0VC
X1NPQ0tFVFM9MSkgewogICAgICAgICB3ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWxDbGllbnQu
aCBcCiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmggXAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBcCisgICAgICAgIHdlYnNvY2tl
dHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdv
cmsvcXQvU29ja2V0U3RyZWFtSGFuZGxlUHJpdmF0ZS5oCiAKICAgICBTT1VSQ0VTICs9IFwKQEAg
LTI4OTcsNiArMjg5OCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJfU09DS0VUUz0x
KSB7CiAgICAgICAgIHdlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgXAogICAgICAgICB3
ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1dl
YlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3BwIFwKKyAgICAgICAgd2Vic29ja2V0cy9XZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgXAogICAgICAgICB3ZWJzb2NrZXRzL1RocmVhZGFibGVX
ZWJTb2NrZXRDaGFubmVsLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3Ry
ZWFtRXJyb3JCYXNlLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFt
SGFuZGxlQmFzZS5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXgg
ZjllOTM1OWRiOWI4MTZiNjk5N2RlNmM3YzhjYTg2MTEwOGM5OTcyYS4uYjZkZTM3YWQyN2YyMjRi
MmUzNTFmNDJiNDM2NmQ2NDI1OWM3ODI4NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC00NzcxMyw2ICs0NzcxMywxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlx3ZWJzb2NrZXRzXFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHdlYnNvY2tldHNcV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHdlYnNv
Y2tldHNcV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
NTdmZGM0MTNkZTViODU4NjVhOTRkYjFjNWI1ZmIwODFiMzE2Nzk5Zi4uMGNlZDU5ODFiZWRhYWI5
MzM3ZTczNjI5ZDlkNzk3OWMxZDg1YzhhMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzMjEsNiArMTMyMSw4IEBACiAJCTc1NzkzRUQ1MEQwQ0U4NUIw
MDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDIwRDBDRTg1QjAwN0ZDMEFDIC8qIERP
TU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07CiAJCTc2MzdDNTQxMTEyRTdCNzQwMDNENkNE
QyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAqLzsgfTsKIAkJNzYzN0M1NDMxMTJFN0I3RTAwM0Q2
Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2MzdDNTQyMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi87IH07CisJCTc2N0Y5OUJFMTFBMTE5NEEwMDgwQzUx
RCAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjdGOTlCRDExQTExOTRBMDA4MEM1MUQgLyogV2Vi
U29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwICovOyB9OworCQk3NjdGOTlDMDExQTExOTU2MDA4
MEM1MUQgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2N0Y5OUJGMTFBMTE5NTYwMDgwQzUxRCAvKiBX
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oICovOyB9OwogCQk3NjkzQkFEMjEwNkMyRENBMDA3
QjA4MjMgLyogSGFsdGFibGVQbHVnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDc2OTNCQUNFMTA2QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdp
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc2
OTNCQUQzMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzY5M0JBQ0YxMDZDMkRDQTAwN0IwODIz
IC8qIFBsdWdpbkhhbHRlci5jcHAgKi87IH07CiAJCTc2OTNCQUQ0MTA2QzJEQ0EwMDdCMDgyMyAv
KiBQbHVnaW5IYWx0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0ZXIuaCAqLzsgfTsK
QEAgLTY5ODcsNiArNjk4OSw4IEBACiAJCTc1NzkzRUQyMEQwQ0U4NUIwMDdGQzBBQyAvKiBET01N
ZXNzYWdlRXZlbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NTWVzc2FnZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzYzN0M1NDAxMTJFN0I3NDAwM0Q2Q0RDIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViU29ja2V0SGFuZHNoYWtl
UmVxdWVzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2MzdDNTQyMTEyRTdC
N0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzY3Rjk5QkQxMUExMTk0QTAwODBDNTFEIC8qIFdlYlNvY2tl
dEhhbmRzaGFrZVJlc3BvbnNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdlYlNvY2tldEhhbmRzaGFrZVJl
c3BvbnNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNvY2tldEhhbmRz
aGFrZVJlc3BvbnNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUNFMTA2
QzJEQ0EwMDdCMDgyMyAvKiBIYWx0YWJsZVBsdWdpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIYWx0YWJsZVBsdWdpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3NjkzQkFDRjEwNkMyRENBMDA3QjA4MjMgLyogUGx1Z2luSGFsdGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsdWdpbkhhbHRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTc2OTNCQUQwMTA2QzJEQ0EwMDdCMDgyMyAvKiBQbHVnaW5IYWx0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGx1Z2luSGFsdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTc4MSw2ICsxMTc4NSw4IEBACiAJCQkJNTFB
QkFFNDMxMDQzQUI0QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5oICovLAogCQkJCTc2
MzdDNTQwMTEyRTdCNzQwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0LmNwcCAq
LywKIAkJCQk3NjM3QzU0MjExMkU3QjdFMDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVx
dWVzdC5oICovLAorCQkJCTc2N0Y5OUJEMTFBMTE5NEEwMDgwQzUxRCAvKiBXZWJTb2NrZXRIYW5k
c2hha2VSZXNwb25zZS5jcHAgKi8sCisJCQkJNzY3Rjk5QkYxMUExMTk1NjAwODBDNTFEIC8qIFdl
YlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggKi8sCiAJCQkJNTExMjI0NzcxMENGQjhGNDAwODA5
OUQ3IC8qIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcCAqLywKIAkJCQk1MTEy
MjQ3OTEwQ0ZCOEZGMDA4MDk5RDcgLyogV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwu
aCAqLywKIAkJCSk7CkBAIC0xOTM5Niw2ICsxOTQwMiw3IEBACiAJCQkJNTEwRDRBNTAxMDMxNzdB
MjAwNDlFQTU0IC8qIFdlYlNvY2tldENoYW5uZWxDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxQUJBRTQ1MTA0M0FCNEEwMDhDNTI2MCAvKiBXZWJTb2NrZXRIYW5kc2hha2UuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTc2MzdDNTQzMTEyRTdCN0UwMDNENkNEQyAvKiBXZWJTb2NrZXRIYW5kc2hh
a2VSZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3NjdGOTlDMDExQTExOTU2MDA4MEM1MUQg
LyogV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0Yz
MzJEMEYyQjlBMjUwMDRCNjc5NSAvKiBXZWJUaWxlZExheWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTAzMUI1MTBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTM4MEY0NzQwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMTcyMCw2ICsyMTcyNyw3IEBACiAJCQkJNTEwRDRBNEUxMDMxNzdBMjAwNDlFQTU0IC8q
IFdlYlNvY2tldENoYW5uZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFBQkFFNDQxMDQzQUI0
QTAwOEM1MjYwIC8qIFdlYlNvY2tldEhhbmRzaGFrZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
NjM3QzU0MTExMkU3Qjc0MDAzRDZDREMgLyogV2ViU29ja2V0SGFuZHNoYWtlUmVxdWVzdC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk3NjdGOTlCRTExQTExOTRBMDA4MEM1MUQgLyogV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDRjMzMkMwRjJCOUEy
NTAwNEI2Nzk1IC8qIFdlYlRpbGVkTGF5ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTAzMUI1
MDBBNDRFRkM3MDBGOTkyRTAgLyogV2hlZWxFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzVDNDc3MzA5QUM0RDc3MDBBNkFBQjQgLyogV2hlZWxFdmVudE1hYy5tbSBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5jcHAg
Yi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlLmNwcAppbmRleCBlYTRmNWU1
NjU3YzUzYzI1MzJlNmQ5MGFlYzQxMGUwZDc5OTc2YmUzLi5lMmUyMjJlY2MwYjJlMjI3N2ZiMGIw
OGUwMWJiMzNmNTZhOTNlNTgxIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmNwcAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0SGFuZHNo
YWtlLmNwcApAQCAtNTYsMjggKzU2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMg
Y29uc3QgY2hhciByYW5kb21DaGFyYWN0ZXJJblNlY1dlYlNvY2tldEtleVtdID0gIiFcIiMkJSYn
KCkqKywtLi86Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbXFxdXl9gYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXp7fH1+IjsKIAotc3RhdGljIFN0cmluZyBleHRyYWN0UmVzcG9uc2VD
b2RlKGNvbnN0IGNoYXIqIGhlYWRlciwgaW50IGxlbiwgc2l6ZV90JiBsaW5lTGVuZ3RoKQotewot
ICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9IDA7Ci0gICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsK
LSAgICBjb25zdCBjaGFyKiBwOwotICAgIGxpbmVMZW5ndGggPSAwOwotICAgIGZvciAocCA9IGhl
YWRlcjsgcCAtIGhlYWRlciA8IGxlbjsgcCsrLCBsaW5lTGVuZ3RoKyspIHsKLSAgICAgICAgaWYg
KCpwID09ICcgJykgewotICAgICAgICAgICAgaWYgKCFzcGFjZTEpCi0gICAgICAgICAgICAgICAg
c3BhY2UxID0gcDsKLSAgICAgICAgICAgIGVsc2UgaWYgKCFzcGFjZTIpCi0gICAgICAgICAgICAg
ICAgc3BhY2UyID0gcDsKLSAgICAgICAgfSBlbHNlIGlmICgqcCA9PSAnXG4nKQotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChwIC0gaGVhZGVyID09IGxlbikKLSAgICAgICAgcmV0
dXJuIFN0cmluZygpOwotICAgIGlmICghc3BhY2UxIHx8ICFzcGFjZTIpCi0gICAgICAgIHJldHVy
biAiIjsKLSAgICByZXR1cm4gU3RyaW5nKHNwYWNlMSArIDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEp
OwotfQotCiBzdGF0aWMgU3RyaW5nIHJlc291cmNlTmFtZShjb25zdCBLVVJMJiB1cmwpCiB7CiAg
ICAgU3RyaW5nIG5hbWUgPSB1cmwucGF0aCgpOwpAQCAtMTAyLDExICs4MCwxMiBAQCBzdGF0aWMg
U3RyaW5nIGhvc3ROYW1lKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBzZWN1cmUpCiAgICAgcmV0dXJu
IGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAorc3RhdGljIGNvbnN0IHNpemVfdCBtYXhDb25zb2xl
TWVzc2FnZVNpemUgPSAxMjg7CiBzdGF0aWMgU3RyaW5nIHRyaW1Db25zb2xlTWVzc2FnZShjb25z
dCBjaGFyKiBwLCBzaXplX3QgbGVuKQogewotICAgIFN0cmluZyBzID0gU3RyaW5nKHAsIHN0ZDo6
bWluPHNpemVfdD4obGVuLCAxMjgpKTsKLSAgICBpZiAobGVuID4gMTI4KQotICAgICAgICBzICs9
ICIuLi4iOworICAgIFN0cmluZyBzID0gU3RyaW5nKHAsIHN0ZDo6bWluPHNpemVfdD4obGVuLCBt
YXhDb25zb2xlTWVzc2FnZVNpemUpKTsKKyAgICBpZiAobGVuID4gbWF4Q29uc29sZU1lc3NhZ2VT
aXplKQorICAgICAgICBzLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oMHgyMDI2KSk7IC8vIFUr
MjAyNiBIb3Jpem9udGFsIGVsbGlwc2lzLgogICAgIHJldHVybiBzOwogfQogCkBAIC0zMTIsMjEg
KzI5MSwyMSBAQCB2b2lkIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2xlYXJTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkKIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29u
c3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogewogICAgIG1fbW9kZSA9IEluY29tcGxldGU7
Ci0gICAgc2l6ZV90IGxpbmVMZW5ndGg7Ci0gICAgY29uc3QgU3RyaW5nJiBjb2RlID0gZXh0cmFj
dFJlc3BvbnNlQ29kZShoZWFkZXIsIGxlbiwgbGluZUxlbmd0aCk7Ci0gICAgaWYgKGNvZGUuaXNO
dWxsKCkpIHsKLSAgICAgICAgLy8gSnVzdCBoYXNuJ3QgYmVlbiByZWNlaXZlZCB5ZXQuCisgICAg
aW50IHN0YXR1c0NvZGU7CisgICAgU3RyaW5nIHN0YXR1c1RleHQ7CisgICAgaW50IGxpbmVMZW5n
dGggPSByZWFkU3RhdHVzTGluZShoZWFkZXIsIGxlbiwgc3RhdHVzQ29kZSwgc3RhdHVzVGV4dCk7
CisgICAgaWYgKGxpbmVMZW5ndGggPT0gLTEpCiAgICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0g
ICAgaWYgKGNvZGUuaXNFbXB0eSgpKSB7CisgICAgaWYgKHN0YXR1c0NvZGUgPT0gLTEpIHsKICAg
ICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJObyByZXNw
b25zZSBjb2RlIGZvdW5kOiAiICsgdHJpbUNvbnNvbGVNZXNzYWdlKGhlYWRlciwgbGluZUxlbmd0
aCksIDAsIGNsaWVudE9yaWdpbigpKTsKICAgICAgICAgcmV0dXJuIGxlbjsKICAgICB9Ci0gICAg
TE9HKE5ldHdvcmssICJyZXNwb25zZSBjb2RlOiAlcyIsIGNvZGUudXRmOCgpLmRhdGEoKSk7Ci0g
ICAgaWYgKGNvZGUgIT0gIjEwMSIpIHsKKyAgICBMT0coTmV0d29yaywgInJlc3BvbnNlIGNvZGU6
ICVkIiwgc3RhdHVzQ29kZSk7CisgICAgbV9yZXNwb25zZS5zZXRTdGF0dXNDb2RlKHN0YXR1c0Nv
ZGUpOworICAgIG1fcmVzcG9uc2Uuc2V0U3RhdHVzVGV4dChzdGF0dXNUZXh0KTsKKyAgICBpZiAo
c3RhdHVzQ29kZSAhPSAxMDEpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwotICAgICAgICBt
X2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsICJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGU6IiArIGNvZGUsIDAsIGNs
aWVudE9yaWdpbigpKTsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBTdHJpbmc6OmZvcm1hdCgi
VW5leHBlY3RlZCByZXNwb25zZSBjb2RlOiAlZCIsIHN0YXR1c0NvZGUpLCAwLCBjbGllbnRPcmln
aW4oKSk7CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQogICAgIG1fbW9kZSA9IE5vcm1hbDsK
QEAgLTMzNSwxNyArMzE0LDE0IEBAIGludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJI
YW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXplX3QgbGVuKQogICAgICAgICBtX21vZGUg
PSBJbmNvbXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIEhUVFBIZWFkZXJN
YXAgaGVhZGVyczsKLSAgICBjb25zdCBjaGFyKiBoZWFkZXJGaWVsZHMgPSBzdHJuc3RyKGhlYWRl
ciwgIlxyXG4iLCBsZW4pOyAvLyBza2lwIHN0YXR1cyBsaW5lCi0gICAgQVNTRVJUKGhlYWRlckZp
ZWxkcyk7Ci0gICAgaGVhZGVyRmllbGRzICs9IDI7IC8vIHNraXAgIlxyXG4iLgotICAgIGNvbnN0
IGNoYXIqIHAgPSByZWFkSFRUUEhlYWRlcnMoaGVhZGVyRmllbGRzLCBoZWFkZXIgKyBsZW4sICZo
ZWFkZXJzKTsKKyAgICBjb25zdCBjaGFyKiBwID0gcmVhZEhUVFBIZWFkZXJzKGhlYWRlciArIGxp
bmVMZW5ndGgsIGhlYWRlciArIGxlbik7CiAgICAgaWYgKCFwKSB7CiAgICAgICAgIExPRyhOZXR3
b3JrLCAicmVhZEhUVFBIZWFkZXJzIGZhaWxlZCIpOwogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7
CiAgICAgICAgIHJldHVybiBsZW47CiAgICAgfQotICAgIGlmICghcHJvY2Vzc0hlYWRlcnMoaGVh
ZGVycykgfHwgIWNoZWNrUmVzcG9uc2VIZWFkZXJzKCkpIHsKKyAgICBwcm9jZXNzSGVhZGVycygp
OworICAgIGlmICghY2hlY2tSZXNwb25zZUhlYWRlcnMoKSkgewogICAgICAgICBMT0coTmV0d29y
aywgImhlYWRlciBwcm9jZXNzIGZhaWxlZCIpOwogICAgICAgICBtX21vZGUgPSBGYWlsZWQ7CiAg
ICAgICAgIHJldHVybiBwIC0gaGVhZGVyOwpAQCAtMzU1LDYgKzMzMSw3IEBAIGludCBXZWJTb2Nr
ZXRIYW5kc2hha2U6OnJlYWRTZXJ2ZXJIYW5kc2hha2UoY29uc3QgY2hhciogaGVhZGVyLCBzaXpl
X3QgbGVuKQogICAgICAgICBtX21vZGUgPSBJbmNvbXBsZXRlOwogICAgICAgICByZXR1cm4gLTE7
CiAgICAgfQorICAgIG1fcmVzcG9uc2Uuc2V0Q2hhbGxlbmdlUmVzcG9uc2Uoc3RhdGljX2Nhc3Q8
Y29uc3QgdW5zaWduZWQgY2hhcio+KHN0YXRpY19jYXN0PGNvbnN0IHZvaWQqPihwKSkpOwogICAg
IGlmIChtZW1jbXAocCwgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlLCBzaXplb2YobV9leHBl
Y3RlZENoYWxsZW5nZVJlc3BvbnNlKSkpIHsKICAgICAgICAgbV9tb2RlID0gRmFpbGVkOwogICAg
ICAgICByZXR1cm4gKHAgLSBoZWFkZXIpICsgc2l6ZW9mKG1fZXhwZWN0ZWRDaGFsbGVuZ2VSZXNw
b25zZSk7CkBAIC00MTgsNiArMzk1LDExIEBAIHZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpzZXRT
ZXJ2ZXJTZXRDb29raWUyKGNvbnN0IFN0cmluZyYgc2V0Q29va2llMikKICAgICBtX3NldENvb2tp
ZTIgPSBzZXRDb29raWUyOwogfQogCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSYg
V2ViU29ja2V0SGFuZHNoYWtlOjpzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fcmVzcG9uc2U7Cit9CisKIEtVUkwgV2ViU29ja2V0SGFuZHNoYWtlOjpodHRw
VVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVzKCkgY29uc3QKIHsKICAgICBLVVJMIHVybCA9
IG1fdXJsLmNvcHkoKTsKQEAgLTQyNiw4ICs0MDgsNjggQEAgS1VSTCBXZWJTb2NrZXRIYW5kc2hh
a2U6Omh0dHBVUkxGb3JBdXRoZW50aWNhdGlvbkFuZENvb2tpZXMoKSBjb25zdAogICAgIHJldHVy
biB1cmw7CiB9CiAKLWNvbnN0IGNoYXIqIFdlYlNvY2tldEhhbmRzaGFrZTo6cmVhZEhUVFBIZWFk
ZXJzKGNvbnN0IGNoYXIqIHN0YXJ0LCBjb25zdCBjaGFyKiBlbmQsIEhUVFBIZWFkZXJNYXAqIGhl
YWRlcnMpCisvLyBSZXR1cm5zIHRoZSBoZWFkZXIgbGVuZ3RoIChpbmNsdWRpbmcgIlxyXG4iKSwg
b3IgLTEgaWYgd2UgaGF2ZSBub3QgcmVjZWl2ZWQgZW5vdWdoIGRhdGEgeWV0LgorLy8gSWYgdGhl
IGxpbmUgaXMgbWFsZm9ybWVkIG9yIHRoZSBzdGF0dXMgY29kZSBpcyBub3QgYSAzLWRpZ2l0IG51
bWJlciwKKy8vIHN0YXR1c0NvZGUgYW5kIHN0YXR1c1RleHQgd2lsbCBiZSBzZXQgdG8gLTEgYW5k
IGEgbnVsbCBzdHJpbmcsIHJlc3BlY3RpdmVseS4KK2ludCBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRlciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50
JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1RleHQpCit7CisgICAgc3RhdHVzQ29kZSA9IC0x
OworICAgIHN0YXR1c1RleHQgPSBTdHJpbmcoKTsKKworICAgIGNvbnN0IGNoYXIqIHNwYWNlMSA9
IDA7CisgICAgY29uc3QgY2hhciogc3BhY2UyID0gMDsKKyAgICBjb25zdCBjaGFyKiBwOworICAg
IGZvciAocCA9IGhlYWRlcjsgcCAtIGhlYWRlciA8IGhlYWRlckxlbmd0aDsgcCsrKSB7CisgICAg
ICAgIGlmICgqcCA9PSAnICcpIHsKKyAgICAgICAgICAgIGlmICghc3BhY2UxKQorICAgICAgICAg
ICAgICAgIHNwYWNlMSA9IHA7CisgICAgICAgICAgICBlbHNlIGlmICghc3BhY2UyKQorICAgICAg
ICAgICAgICAgIHNwYWNlMiA9IHA7CisgICAgICAgIH0gZWxzZSBpZiAoKnAgPT0gJ1xuJykKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocCAtIGhlYWRlciA9PSBoZWFkZXJMZW5n
dGgpCisgICAgICAgIHJldHVybiAtMTsgLy8gV2UgaGF2ZSBub3QgcmVjZWl2ZWQgJ1xuJyB5ZXQu
CisKKyAgICBjb25zdCBjaGFyKiBlbmQgPSBwICsgMTsKKyAgICBpZiAoZW5kIC0gaGVhZGVyID4g
SU5UX01BWCkgeworICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJTdGF0dXMgbGluZSBpcyB0b28g
bG9uZzogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIG1heENvbnNvbGVNZXNzYWdlU2l6
ZSArIDEpLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIHJldHVybiBJTlRfTUFYOworICAg
IH0KKyAgICBpbnQgbGluZUxlbmd0aCA9IGVuZCAtIGhlYWRlcjsKKworICAgIGlmICghc3BhY2Ux
IHx8ICFzcGFjZTIpIHsKKyAgICAgICAgbV9jb250ZXh0LT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCAiTm8gcmVzcG9uc2UgY29k
ZSBmb3VuZDogIiArIHRyaW1Db25zb2xlTWVzc2FnZShoZWFkZXIsIGxpbmVMZW5ndGggLSAxKSwg
MCwgY2xpZW50T3JpZ2luKCkpOworICAgICAgICByZXR1cm4gbGluZUxlbmd0aDsKKyAgICB9CisK
KyAgICAvLyBUaGUgbGluZSBtdXN0IGVuZCB3aXRoICJcclxuIi4KKyAgICBpZiAoKihlbmQgLSAy
KSAhPSAnXHInKSB7CisgICAgICAgIG1fY29udGV4dC0+YWRkTWVzc2FnZShKU01lc3NhZ2VTb3Vy
Y2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlN0YXR1cyBsaW5lIGRvZXMg
bm90IGVuZCB3aXRoIENSTEYiLCAwLCBjbGllbnRPcmlnaW4oKSk7CisgICAgICAgIHJldHVybiBs
aW5lTGVuZ3RoOworICAgIH0KKworICAgIFN0cmluZyBzdGF0dXNDb2RlU3RyaW5nKHNwYWNlMSAr
IDEsIHNwYWNlMiAtIHNwYWNlMSAtIDEpOworICAgIGlmIChzdGF0dXNDb2RlU3RyaW5nLmxlbmd0
aCgpICE9IDMpIC8vIFN0YXR1cyBjb2RlIG11c3QgY29uc2lzdCBvZiB0aHJlZSBkaWdpdHMuCisg
ICAgICAgIHJldHVybiBsaW5lTGVuZ3RoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytp
KQorICAgICAgICBpZiAoc3RhdHVzQ29kZVN0cmluZ1tpXSA8ICcwJyB8fCBzdGF0dXNDb2RlU3Ry
aW5nW2ldID4gJzknKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNz
YWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlkIHN0
YXR1cyBjb2RlOiAiICsgc3RhdHVzQ29kZVN0cmluZywgMCwgY2xpZW50T3JpZ2luKCkpOworICAg
ICAgICAgICAgcmV0dXJuIGxpbmVMZW5ndGg7CisgICAgICAgIH0KKworICAgIGJvb2wgb2sgPSBm
YWxzZTsKKyAgICBzdGF0dXNDb2RlID0gc3RhdHVzQ29kZVN0cmluZy50b0ludCgmb2spOworICAg
IEFTU0VSVChvayk7CisKKyAgICBzdGF0dXNUZXh0ID0gU3RyaW5nKHNwYWNlMiArIDEsIGVuZCAt
IHNwYWNlMiAtIDMpOyAvLyBFeGNsdWRlICJcclxuIi4KKyAgICByZXR1cm4gbGluZUxlbmd0aDsK
K30KKworY29uc3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29u
c3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGVuZCkKIHsKKyAgICBtX3Jlc3BvbnNlLmNsZWFy
SGVhZGVyRmllbGRzKCk7CisKICAgICBWZWN0b3I8Y2hhcj4gbmFtZTsKICAgICBWZWN0b3I8Y2hh
cj4gdmFsdWU7CiAgICAgZm9yIChjb25zdCBjaGFyKiBwID0gc3RhcnQ7IHAgPCBlbmQ7IHArKykg
ewpAQCAtNDUxLDEwICs0OTMsNyBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXRIYW5kc2hha2U6OnJl
YWRIVFRQSGVhZGVycyhjb25zdCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZQogICAgICAgICAg
ICAgY2FzZSAnOic6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGlmICgqcCA+PSAweDQxICYmICpwIDw9IDB4NWEpCi0gICAgICAg
ICAgICAgICAgICAgIG5hbWUuYXBwZW5kKCpwICsgMHgyMCk7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCgqcCk7CisgICAgICAgICAgICAgICAg
bmFtZS5hcHBlbmQoKnApOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKCpwID09ICc6JykgewpAQCAtNDk1LDM2ICs1MzQsMjEgQEAgY29u
c3QgY2hhciogV2ViU29ja2V0SGFuZHNoYWtlOjpyZWFkSFRUUEhlYWRlcnMoY29uc3QgY2hhciog
c3RhcnQsIGNvbnN0IGNoYXIqIGUKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAg
ICAgICAgIExPRyhOZXR3b3JrLCAibmFtZT0lcyB2YWx1ZT0lcyIsIG5hbWVTdHIuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgdmFsdWVTdHIudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIGhlYWRlcnMt
PmFkZChuYW1lU3RyLCB2YWx1ZVN0cik7CisgICAgICAgIG1fcmVzcG9uc2UuYWRkSGVhZGVyRmll
bGQobmFtZVN0ciwgdmFsdWVTdHIpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBXZWJTb2NrZXRIYW5kc2hha2U6OnByb2Nlc3NIZWFk
ZXJzKGNvbnN0IEhUVFBIZWFkZXJNYXAmIGhlYWRlcnMpCi17Ci0gICAgZm9yIChIVFRQSGVhZGVy
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGhlYWRlcnMuYmVnaW4oKTsgaXQgIT0gaGVhZGVycy5l
bmQoKTsgKytpdCkgewotICAgICAgICBzd2l0Y2ggKG1fbW9kZSkgewotICAgICAgICBjYXNlIE5v
cm1hbDoKLSAgICAgICAgICAgIGlmIChpdC0+Zmlyc3QgPT0gInNlYy13ZWJzb2NrZXQtb3JpZ2lu
IikKLSAgICAgICAgICAgICAgICBtX3dzT3JpZ2luID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAg
IGVsc2UgaWYgKGl0LT5maXJzdCA9PSAic2VjLXdlYnNvY2tldC1sb2NhdGlvbiIpCi0gICAgICAg
ICAgICAgICAgbV93c0xvY2F0aW9uID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGl0LT5maXJzdCA9PSAic2VjLXdlYnNvY2tldC1wcm90b2NvbCIpCi0gICAgICAgICAgICAgICAg
bV93c1Byb3RvY29sID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGl0LT5maXJz
dCA9PSAic2V0LWNvb2tpZSIpCi0gICAgICAgICAgICAgICAgbV9zZXRDb29raWUgPSBpdC0+c2Vj
b25kOwotICAgICAgICAgICAgZWxzZSBpZiAoaXQtPmZpcnN0ID09ICJzZXQtY29va2llMiIpCi0g
ICAgICAgICAgICAgICAgbV9zZXRDb29raWUyID0gaXQtPnNlY29uZDsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICBjYXNlIEluY29tcGxldGU6Ci0gICAgICAgIGNhc2UgRmFpbGVkOgot
ICAgICAgICBjYXNlIENvbm5lY3RlZDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICBy
ZXR1cm4gdHJ1ZTsKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlOjpwcm9jZXNzSGVhZGVycygpCit7
CisgICAgQVNTRVJUKG1fbW9kZSA9PSBOb3JtYWwpOworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAm
IGhlYWRlcnMgPSBtX3Jlc3BvbnNlLmhlYWRlckZpZWxkcygpOworICAgIG1fd3NPcmlnaW4gPSBo
ZWFkZXJzLmdldCgic2VjLXdlYnNvY2tldC1vcmlnaW4iKTsKKyAgICBtX3dzTG9jYXRpb24gPSBo
ZWFkZXJzLmdldCgic2VjLXdlYnNvY2tldC1sb2NhdGlvbiIpOworICAgIG1fd3NQcm90b2NvbCA9
IGhlYWRlcnMuZ2V0KCJzZWMtd2Vic29ja2V0LXByb3RvY29sIik7CisgICAgbV9zZXRDb29raWUg
PSBoZWFkZXJzLmdldCgic2V0LWNvb2tpZSIpOworICAgIG1fc2V0Q29va2llMiA9IGhlYWRlcnMu
Z2V0KCJzZXQtY29va2llMiIpOwogfQogCiBib29sIFdlYlNvY2tldEhhbmRzaGFrZTo6Y2hlY2tS
ZXNwb25zZUhlYWRlcnMoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tl
dEhhbmRzaGFrZS5oIGIvV2ViQ29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZS5oCmlu
ZGV4IDNlMGM2NmE2YTQ4YzY4YzY3OWQxNzQ1NDBlNGNlZmI4N2IxMWU2NDcuLmE1YjQyNjA4NWQ3
M2NjMmVkYTAyNDNmMTA4YTBiZDkyODFjNWUzNjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd2Vic29j
a2V0cy9XZWJTb2NrZXRIYW5kc2hha2UuaAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29j
a2V0SGFuZHNoYWtlLmgKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIktVUkwuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIldlYlNvY2tldEhhbmRzaGFrZVJl
cXVlc3QuaCIKKyNpbmNsdWRlICJXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFz
cyBIVFRQSGVhZGVyTWFwOwogICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKICAg
ICBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2UgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtODYs
MTIgKzg2LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiBz
ZXJ2ZXJTZXRDb29raWUyKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U2VydmVyU2V0Q29va2ll
Mihjb25zdCBTdHJpbmcmIHNldENvb2tpZTIpOwogCisgICAgICAgIGNvbnN0IFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlJiBzZXJ2ZXJIYW5kc2hha2VSZXNwb25zZSgpIGNvbnN0OworCiAgICAg
cHJpdmF0ZToKICAgICAgICAgS1VSTCBodHRwVVJMRm9yQXV0aGVudGljYXRpb25BbmRDb29raWVz
KCkgY29uc3Q7CiAKKyAgICAgICAgaW50IHJlYWRTdGF0dXNMaW5lKGNvbnN0IGNoYXIqIGhlYWRl
ciwgc2l6ZV90IGhlYWRlckxlbmd0aCwgaW50JiBzdGF0dXNDb2RlLCBTdHJpbmcmIHN0YXR1c1Rl
eHQpOworCiAgICAgICAgIC8vIFJlYWRzIGFsbCBoZWFkZXJzIGV4Y2VwdCBmb3IgdGhlIHR3byBw
cmVkZWZpbmVkIG9uZXMuCi0gICAgICAgIGNvbnN0IGNoYXIqIHJlYWRIVFRQSGVhZGVycyhjb25z
dCBjaGFyKiBzdGFydCwgY29uc3QgY2hhciogZW5kLCBIVFRQSGVhZGVyTWFwKiBoZWFkZXJzKTsK
LSAgICAgICAgYm9vbCBwcm9jZXNzSGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJz
KTsKKyAgICAgICAgY29uc3QgY2hhciogcmVhZEhUVFBIZWFkZXJzKGNvbnN0IGNoYXIqIHN0YXJ0
LCBjb25zdCBjaGFyKiBlbmQpOworICAgICAgICB2b2lkIHByb2Nlc3NIZWFkZXJzKCk7CiAgICAg
ICAgIGJvb2wgY2hlY2tSZXNwb25zZUhlYWRlcnMoKTsKIAogICAgICAgICBLVVJMIG1fdXJsOwpA
QCAtMTExLDYgKzExNSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1f
c2VjV2ViU29ja2V0S2V5MjsKICAgICAgICAgdW5zaWduZWQgY2hhciBtX2tleTNbOF07CiAgICAg
ICAgIHVuc2lnbmVkIGNoYXIgbV9leHBlY3RlZENoYWxsZW5nZVJlc3BvbnNlWzE2XTsKKworICAg
ICAgICBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZSBtX3Jlc3BvbnNlOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd2Vic29ja2V0cy9XZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZS5jcHAgYi9XZWJDb3JlL3dlYnNvY2tldHMvV2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc1M2NlY2Y1NDYyMTIwYmVkM2UwYmE1
ZGU4ZTMzMDFhZmYyNWJiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dlYnNvY2tldHMv
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuY3BwCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIEVOQUJMRShXRUJfU09DS0VUUykKKworI2luY2x1ZGUgIldlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlLmgiCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpDaGFsbGVuZ2VS
ZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UoKQoreworICAgIG1lbXNldCh2YWx1ZSwgMCwgc2l6
ZW9mKHZhbHVlKSk7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OkNoYWxs
ZW5nZVJlc3BvbnNlOjpzZXQoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25zZVsx
Nl0pCit7CisgICAgbWVtY3B5KHZhbHVlLCBjaGFsbGVuZ2VSZXNwb25zZSwgc2l6ZW9mKHZhbHVl
KSk7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpXZWJTb2NrZXRIYW5kc2hha2VS
ZXNwb25zZSgpCit7Cit9CisKK1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjp+V2ViU29ja2V0
SGFuZHNoYWtlUmVzcG9uc2UoKQoreworfQorCitpbnQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9u
c2U6OnN0YXR1c0NvZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3N0YXR1c0NvZGU7Cit9CisK
K3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldFN0YXR1c0NvZGUoaW50IHN0YXR1
c0NvZGUpCit7CisgICAgQVNTRVJUKHN0YXR1c0NvZGUgPj0gMTAwICYmIHN0YXR1c0NvZGUgPCA2
MDApOworICAgIG1fc3RhdHVzQ29kZSA9IHN0YXR1c0NvZGU7Cit9CisKK2NvbnN0IFN0cmluZyYg
V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnN0YXR1c1RleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3N0YXR1c1RleHQ7Cit9CisKK3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6
OnNldFN0YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KQoreworICAgIG1fc3RhdHVz
VGV4dCA9IHN0YXR1c1RleHQ7Cit9CisKK2NvbnN0IEhUVFBIZWFkZXJNYXAmIFdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlOjpoZWFkZXJGaWVsZHMoKSBjb25zdAoreworICAgIHJldHVybiBtX2hl
YWRlckZpZWxkczsKK30KKwordm9pZCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6YWRkSGVh
ZGVyRmllbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIG1faGVhZGVyRmllbGRzLmFkZChuYW1lLCB2YWx1ZSk7Cit9CisKK3ZvaWQgV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2U6OmNsZWFySGVhZGVyRmllbGRzKCkKK3sKKyAgICBtX2hlYWRl
ckZpZWxkcy5jbGVhcigpOworfQorCitjb25zdCBXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZTo6
Q2hhbGxlbmdlUmVzcG9uc2UmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlOjpjaGFsbGVuZ2VS
ZXNwb25zZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY2hhbGxlbmdlUmVzcG9uc2U7Cit9CisK
K3ZvaWQgV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2U6OnNldENoYWxsZW5nZVJlc3BvbnNlKGNv
bnN0IHVuc2lnbmVkIGNoYXIgY2hhbGxlbmdlUmVzcG9uc2VbMTZdKQoreworICAgIG1fY2hhbGxl
bmdlUmVzcG9uc2Uuc2V0KGNoYWxsZW5nZVJlc3BvbnNlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQl9TT0NLRVRTKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmggYi9XZWJDb3JlL3dl
YnNvY2tldHMvV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMzg1YTFi
NzBmNGM0N2YwMmZlZGJmMjE3ODEzNDliMmFjMWQ3MWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS93ZWJzb2NrZXRzL1dlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlLmgKQEAgLTAsMCArMSw3
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gKKyNkZWZpbmUgV2ViU29j
a2V0SGFuZHNoYWtlUmVzcG9uc2VfaAorCisjaWYgRU5BQkxFKFdFQl9TT0NLRVRTKQorCisjaW5j
bHVkZSAiSFRUUEhlYWRlck1hcC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nOworCitjbGFzcyBXZWJTb2Nr
ZXRIYW5kc2hha2VSZXNwb25zZSB7CitwdWJsaWM6CisgICAgV2ViU29ja2V0SGFuZHNoYWtlUmVz
cG9uc2UoKTsKKyAgICB+V2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2UoKTsKKworICAgIGludCBz
dGF0dXNDb2RlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRTdGF0dXNDb2RlKGludCBzdGF0dXNDb2Rl
KTsKKyAgICBjb25zdCBTdHJpbmcmIHN0YXR1c1RleHQoKSBjb25zdDsKKyAgICB2b2lkIHNldFN0
YXR1c1RleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNUZXh0KTsKKyAgICBjb25zdCBIVFRQSGVhZGVy
TWFwJiBoZWFkZXJGaWVsZHMoKSBjb25zdDsKKyAgICB2b2lkIGFkZEhlYWRlckZpZWxkKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CisgICAgdm9pZCBjbGVh
ckhlYWRlckZpZWxkcygpOworCisgICAgc3RydWN0IENoYWxsZW5nZVJlc3BvbnNlIHsKKyAgICAg
ICAgdW5zaWduZWQgY2hhciB2YWx1ZVsxNl07CisKKyAgICAgICAgQ2hhbGxlbmdlUmVzcG9uc2Uo
KTsKKyAgICAgICAgdm9pZCBzZXQoY29uc3QgdW5zaWduZWQgY2hhciBjaGFsbGVuZ2VSZXNwb25z
ZVsxNl0pOworICAgIH07CisgICAgY29uc3QgQ2hhbGxlbmdlUmVzcG9uc2UmIGNoYWxsZW5nZVJl
c3BvbnNlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDaGFsbGVuZ2VSZXNwb25zZShjb25zdCB1bnNp
Z25lZCBjaGFyIGNoYWxsZW5nZVJlc3BvbnNlWzE2XSk7CisKK3ByaXZhdGU6CisgICAgaW50IG1f
c3RhdHVzQ29kZTsKKyAgICBTdHJpbmcgbV9zdGF0dXNUZXh0OworICAgIEhUVFBIZWFkZXJNYXAg
bV9oZWFkZXJGaWVsZHM7CisgICAgQ2hhbGxlbmdlUmVzcG9uc2UgbV9jaGFsbGVuZ2VSZXNwb25z
ZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShXRUJf
U09DS0VUUykKKworI2VuZGlmIC8vIFdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlX2gK
</data>
<flag name="review"
          id="46163"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>