<?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>220038</bug_id>
          
          <creation_ts>2020-12-19 09:50:16 -0800</creation_ts>
          <short_desc>Unable to postMessage a WebAssembly module to a worklet</short_desc>
          <delta_ts>2022-11-18 13:31:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Audio</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=237144</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>220627</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Richard Newman">rnewman</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>Ian.kettlewell</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>letz</cc>
    
    <cc>lolwebkitbugtracker</cc>
    
    <cc>philipj</cc>
    
    <cc>rniwa</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>smoley</cc>
    
    <cc>tibor.klajnscek</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1715906</commentid>
    <comment_count>0</comment_count>
    <who name="Richard Newman">rnewman</who>
    <bug_when>2020-12-19 09:50:16 -0800</bug_when>
    <thetext>WebAssembly modules can be sent between workers and pages via postMessage.

Both Firefox and Chrome also allow WebAssembly modules to be sent from a page to an AudioWorklet via its MessagePort:

  https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletNode/port

E.g.,

```
  this.port.postMessage({ message: &apos;hey&apos;, module });
```

in Safari Technology Preview (117, WebKit 15611.1.7.2), this throws 

```
  DataCloneError: The object can not be cloned.
```

(FWIW, adding `module` to the transfer list doesn&apos;t help; I guess Safari doesn&apos;t support transfer lists either?)

The lack of this capability prevents a common code loading approach for AudioWorklets, where some large chunk of WebAssembly is loaded in a worker and sent via the page down to the AudioWorklet via the MessagePort. 

I have not yet verified whether there&apos;s a workaround by posting a multi-megabyte ArrayBuffer and compiling it inside the worklet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716314</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-22 12:28:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/72596556&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716899</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-30 21:47:06 -0800</bug_when>
    <thetext>Currently, MessagePort postMessage w/ WebAssembly.Module is not supported.

We need to know the notion of the followings.

1. This pair of MessagePorts are in the same process so that we can send SerializedScriptValue without using IPC back-and-force
2. This pair of MessagePorts are in the different process so that we should just throw an onmessageerror exception.

Chris, do you know about MessagePort&apos;s remote/not-remote flags? Is it specified?

Note: https://bugzilla.mozilla.org/show_bug.cgi?id=1605566</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716900</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-30 22:05:13 -0800</bug_when>
    <thetext>Note that LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/window-messagechannel-success.html covers this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717325</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 08:48:39 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; Currently, MessagePort postMessage w/ WebAssembly.Module is not supported.
&gt; 
&gt; We need to know the notion of the followings.
&gt; 
&gt; 1. This pair of MessagePorts are in the same process so that we can send
&gt; SerializedScriptValue without using IPC back-and-force
&gt; 2. This pair of MessagePorts are in the different process so that we should
&gt; just throw an onmessageerror exception.
&gt; 
&gt; Chris, do you know about MessagePort&apos;s remote/not-remote flags? Is it
&gt; specified?
&gt; 
&gt; Note: https://bugzilla.mozilla.org/show_bug.cgi?id=1605566

@Yusuke: I don&apos;t quite understand the need for &quot;different-process&quot;. Our worklets always run in process.

The only case where we use message port cross-process is with service workers, which are different from worklets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717352</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 09:47:04 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)
&gt; (In reply to Yusuke Suzuki from comment #2)
&gt; &gt; Currently, MessagePort postMessage w/ WebAssembly.Module is not supported.
&gt; &gt; 
&gt; &gt; We need to know the notion of the followings.
&gt; &gt; 
&gt; &gt; 1. This pair of MessagePorts are in the same process so that we can send
&gt; &gt; SerializedScriptValue without using IPC back-and-force
&gt; &gt; 2. This pair of MessagePorts are in the different process so that we should
&gt; &gt; just throw an onmessageerror exception.
&gt; &gt; 
&gt; &gt; Chris, do you know about MessagePort&apos;s remote/not-remote flags? Is it
&gt; &gt; specified?
&gt; &gt; 
&gt; &gt; Note: https://bugzilla.mozilla.org/show_bug.cgi?id=1605566
&gt; 
&gt; @Yusuke: I don&apos;t quite understand the need for &quot;different-process&quot;. Our
&gt; worklets always run in process.
&gt; 
&gt; The only case where we use message port cross-process is with service
&gt; workers, which are different from worklets.

Based on the error, it looks like nobody implemented the serialization of modules in SerializedScriptValue? If so, sending the module to an iframe via postMessage would fail too (has this been tested?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717357</commentid>
    <comment_count>6</comment_count>
    <who name="Richard Newman">rnewman</who>
    <bug_when>2021-01-05 09:55:59 -0800</bug_when>
    <thetext>I have not tested iframe messaging.

Web worker to page seems to work correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717361</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 09:59:44 -0800</bug_when>
    <thetext>(In reply to Richard Newman from comment #6)
&gt; I have not tested iframe messaging.
&gt; 
&gt; Web worker to page seems to work correctly.

Oh I see. If worker to page works then I would imagine iframe messaging would work too. This must be specific to worklets somehow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717367</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 10:05:01 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Richard Newman from comment #6)
&gt; &gt; I have not tested iframe messaging.
&gt; &gt; 
&gt; &gt; Web worker to page seems to work correctly.
&gt; 
&gt; Oh I see. If worker to page works then I would imagine iframe messaging
&gt; would work too. This must be specific to worklets somehow.

In SerializedScriptValue:

                if (m_context != SerializationContext::WorkerPostMessage) {
                    code = SerializationReturnCode::DataCloneError;
                    return true;
                }

When encoding wasm modules. We are likely not using the WorkerPostMessage SerializationContext when messaging audio worklets?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717369</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 10:08:27 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; (In reply to Richard Newman from comment #6)
&gt; &gt; &gt; I have not tested iframe messaging.
&gt; &gt; &gt; 
&gt; &gt; &gt; Web worker to page seems to work correctly.
&gt; &gt; 
&gt; &gt; Oh I see. If worker to page works then I would imagine iframe messaging
&gt; &gt; would work too. This must be specific to worklets somehow.
&gt; 
&gt; In SerializedScriptValue:
&gt; 
&gt;                 if (m_context != SerializationContext::WorkerPostMessage) {
&gt;                     code = SerializationReturnCode::DataCloneError;
&gt;                     return true;
&gt;                 }
&gt; 
&gt; When encoding wasm modules. We are likely not using the WorkerPostMessage
&gt; SerializationContext when messaging audio worklets?

MessagePort::postMessage() seems to use the default serialization context, no matter in which context the message port is used:

===
ExceptionOr&lt;void&gt; MessagePort::postMessage(JSC::JSGlobalObject&amp; state, JSC::JSValue messageValue, PostMessageOptions&amp;&amp; options)
{
    LOG(MessagePorts, &quot;Attempting to post message to port %s (to be received by port %s)&quot;, m_identifier.logString().utf8().data(), m_remoteIdentifier.logString().utf8().data());

    registerLocalActivity();

    Vector&lt;RefPtr&lt;MessagePort&gt;&gt; ports;
    auto messageData = SerializedScriptValue::create(state, messageValue, WTFMove(options.transfer), ports);
===</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717439</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-05 12:52:16 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; &gt; (In reply to Richard Newman from comment #6)
&gt; &gt; &gt; &gt; I have not tested iframe messaging.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Web worker to page seems to work correctly.
&gt; &gt; &gt; 
&gt; &gt; &gt; Oh I see. If worker to page works then I would imagine iframe messaging
&gt; &gt; &gt; would work too. This must be specific to worklets somehow.
&gt; &gt; 
&gt; &gt; In SerializedScriptValue:
&gt; &gt; 
&gt; &gt;                 if (m_context != SerializationContext::WorkerPostMessage) {
&gt; &gt;                     code = SerializationReturnCode::DataCloneError;
&gt; &gt;                     return true;
&gt; &gt;                 }
&gt; &gt; 
&gt; &gt; When encoding wasm modules. We are likely not using the WorkerPostMessage
&gt; &gt; SerializationContext when messaging audio worklets?
&gt; 
&gt; MessagePort::postMessage() seems to use the default serialization context,
&gt; no matter in which context the message port is used:
&gt; 
&gt; ===
&gt; ExceptionOr&lt;void&gt; MessagePort::postMessage(JSC::JSGlobalObject&amp; state,
&gt; JSC::JSValue messageValue, PostMessageOptions&amp;&amp; options)
&gt; {
&gt;     LOG(MessagePorts, &quot;Attempting to post message to port %s (to be received
&gt; by port %s)&quot;, m_identifier.logString().utf8().data(),
&gt; m_remoteIdentifier.logString().utf8().data());
&gt; 
&gt;     registerLocalActivity();
&gt; 
&gt;     Vector&lt;RefPtr&lt;MessagePort&gt;&gt; ports;
&gt;     auto messageData = SerializedScriptValue::create(state, messageValue,
&gt; WTFMove(options.transfer), ports);
&gt; ===

I changed it to WorkerPostMessage serialization context, and it didn&apos;t work because MessagePort always serialize (via IPC encoder) SerializedScriptValue and deserialized it even though both ports are used by the workers/worklets in the same process.
The problem is that we do not support full serialization of WebAssembly.Module.

1. It becomes super huge size
2. It is really complicated
3. Serialize and deserialize it will double memory size while WebAssembly.Module can be shared between multiple threads safely (it is designed to be a thread-safe).

So, we need a notion of &quot;MessageChannel is not used among different processes&quot;, and we should avoid using IPC encoder / decoder to serialize SerializedScriptValue for MessagePort. And I think this is what gecko is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717563</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-05 17:48:19 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #10)
&gt; (In reply to Chris Dumez from comment #9)
&gt; &gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; &gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; &gt; &gt; (In reply to Richard Newman from comment #6)
&gt; &gt; &gt; &gt; &gt; I have not tested iframe messaging.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Web worker to page seems to work correctly.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Oh I see. If worker to page works then I would imagine iframe messaging
&gt; &gt; &gt; &gt; would work too. This must be specific to worklets somehow.
&gt; &gt; &gt; 
&gt; &gt; &gt; In SerializedScriptValue:
&gt; &gt; &gt; 
&gt; &gt; &gt;                 if (m_context != SerializationContext::WorkerPostMessage) {
&gt; &gt; &gt;                     code = SerializationReturnCode::DataCloneError;
&gt; &gt; &gt;                     return true;
&gt; &gt; &gt;                 }
&gt; &gt; &gt; 
&gt; &gt; &gt; When encoding wasm modules. We are likely not using the WorkerPostMessage
&gt; &gt; &gt; SerializationContext when messaging audio worklets?
&gt; &gt; 
&gt; &gt; MessagePort::postMessage() seems to use the default serialization context,
&gt; &gt; no matter in which context the message port is used:
&gt; &gt; 
&gt; &gt; ===
&gt; &gt; ExceptionOr&lt;void&gt; MessagePort::postMessage(JSC::JSGlobalObject&amp; state,
&gt; &gt; JSC::JSValue messageValue, PostMessageOptions&amp;&amp; options)
&gt; &gt; {
&gt; &gt;     LOG(MessagePorts, &quot;Attempting to post message to port %s (to be received
&gt; &gt; by port %s)&quot;, m_identifier.logString().utf8().data(),
&gt; &gt; m_remoteIdentifier.logString().utf8().data());
&gt; &gt; 
&gt; &gt;     registerLocalActivity();
&gt; &gt; 
&gt; &gt;     Vector&lt;RefPtr&lt;MessagePort&gt;&gt; ports;
&gt; &gt;     auto messageData = SerializedScriptValue::create(state, messageValue,
&gt; &gt; WTFMove(options.transfer), ports);
&gt; &gt; ===
&gt; 
&gt; I changed it to WorkerPostMessage serialization context, and it didn&apos;t work
&gt; because MessagePort always serialize (via IPC encoder) SerializedScriptValue
&gt; and deserialized it even though both ports are used by the workers/worklets
&gt; in the same process.
&gt; The problem is that we do not support full serialization of
&gt; WebAssembly.Module.
&gt; 
&gt; 1. It becomes super huge size
&gt; 2. It is really complicated
&gt; 3. Serialize and deserialize it will double memory size while
&gt; WebAssembly.Module can be shared between multiple threads safely (it is
&gt; designed to be a thread-safe).
&gt; 
&gt; So, we need a notion of &quot;MessageChannel is not used among different
&gt; processes&quot;, and we should avoid using IPC encoder / decoder to serialize
&gt; SerializedScriptValue for MessagePort. And I think this is what gecko is
&gt; doing.

From MessagePort, you can query identifier() and remoteIdentifier(). Each returns a MessagePortIdentifier which is a struct that contains both a processIdentifier and a portIdentifier. It should therefore be trivial to figure out if the local and remote ports are hosted in the same process check comparing identifier().processIdentifier and remoteIdentifier().processIdentifier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719636</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-14 10:31:08 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #11)
&gt; (In reply to Yusuke Suzuki from comment #10)
&gt; &gt; (In reply to Chris Dumez from comment #9)
&gt; &gt; &gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; &gt; &gt; (In reply to Chris Dumez from comment #7)
&gt; &gt; &gt; &gt; &gt; (In reply to Richard Newman from comment #6)
&gt; &gt; &gt; &gt; &gt; &gt; I have not tested iframe messaging.
&gt; &gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; &gt; Web worker to page seems to work correctly.
&gt; &gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &gt; Oh I see. If worker to page works then I would imagine iframe messaging
&gt; &gt; &gt; &gt; &gt; would work too. This must be specific to worklets somehow.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; In SerializedScriptValue:
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt;                 if (m_context != SerializationContext::WorkerPostMessage) {
&gt; &gt; &gt; &gt;                     code = SerializationReturnCode::DataCloneError;
&gt; &gt; &gt; &gt;                     return true;
&gt; &gt; &gt; &gt;                 }
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; When encoding wasm modules. We are likely not using the WorkerPostMessage
&gt; &gt; &gt; &gt; SerializationContext when messaging audio worklets?
&gt; &gt; &gt; 
&gt; &gt; &gt; MessagePort::postMessage() seems to use the default serialization context,
&gt; &gt; &gt; no matter in which context the message port is used:
&gt; &gt; &gt; 
&gt; &gt; &gt; ===
&gt; &gt; &gt; ExceptionOr&lt;void&gt; MessagePort::postMessage(JSC::JSGlobalObject&amp; state,
&gt; &gt; &gt; JSC::JSValue messageValue, PostMessageOptions&amp;&amp; options)
&gt; &gt; &gt; {
&gt; &gt; &gt;     LOG(MessagePorts, &quot;Attempting to post message to port %s (to be received
&gt; &gt; &gt; by port %s)&quot;, m_identifier.logString().utf8().data(),
&gt; &gt; &gt; m_remoteIdentifier.logString().utf8().data());
&gt; &gt; &gt; 
&gt; &gt; &gt;     registerLocalActivity();
&gt; &gt; &gt; 
&gt; &gt; &gt;     Vector&lt;RefPtr&lt;MessagePort&gt;&gt; ports;
&gt; &gt; &gt;     auto messageData = SerializedScriptValue::create(state, messageValue,
&gt; &gt; &gt; WTFMove(options.transfer), ports);
&gt; &gt; &gt; ===
&gt; &gt; 
&gt; &gt; I changed it to WorkerPostMessage serialization context, and it didn&apos;t work
&gt; &gt; because MessagePort always serialize (via IPC encoder) SerializedScriptValue
&gt; &gt; and deserialized it even though both ports are used by the workers/worklets
&gt; &gt; in the same process.
&gt; &gt; The problem is that we do not support full serialization of
&gt; &gt; WebAssembly.Module.
&gt; &gt; 
&gt; &gt; 1. It becomes super huge size
&gt; &gt; 2. It is really complicated
&gt; &gt; 3. Serialize and deserialize it will double memory size while
&gt; &gt; WebAssembly.Module can be shared between multiple threads safely (it is
&gt; &gt; designed to be a thread-safe).
&gt; &gt; 
&gt; &gt; So, we need a notion of &quot;MessageChannel is not used among different
&gt; &gt; processes&quot;, and we should avoid using IPC encoder / decoder to serialize
&gt; &gt; SerializedScriptValue for MessagePort. And I think this is what gecko is
&gt; &gt; doing.
&gt; 
&gt; From MessagePort, you can query identifier() and remoteIdentifier(). Each
&gt; returns a MessagePortIdentifier which is a struct that contains both a
&gt; processIdentifier and a portIdentifier. It should therefore be trivial to
&gt; figure out if the local and remote ports are hosted in the same process
&gt; check comparing identifier().processIdentifier and
&gt; remoteIdentifier().processIdentifier.

Indeed, it seems we are going to the NetworkProcess via IPC even though the source and destination processes are identical. This is definitely suboptimal in general and breaking for Wasm modules since those are currently not IPC-encoded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719650</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-14 11:49:31 -0800</bug_when>
    <thetext>With the WIP patch at Bug 220627 (to avoid IPC when both MessagePorts are in the same process) and with a change to MessagePort::postMessage() to use SerializationContext::WorkerPostMessage when necessary, LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/window-messagechannel-success.html starts to PASS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719668</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-01-14 12:42:06 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #13)
&gt; With the WIP patch at Bug 220627 (to avoid IPC when both MessagePorts are in
&gt; the same process) and with a change to MessagePort::postMessage() to use
&gt; SerializationContext::WorkerPostMessage when necessary,
&gt; LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/window-
&gt; messagechannel-success.html starts to PASS.

Perfect!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723553</commentid>
    <comment_count>15</comment_count>
      <attachid>418682</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-28 17:06:09 -0800</bug_when>
    <thetext>Created attachment 418682
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1723558</commentid>
    <comment_count>16</comment_count>
      <attachid>418682</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-01-28 17:18:02 -0800</bug_when>
    <thetext>Comment on attachment 418682
WIP Patch

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

&gt; Source/WebCore/dom/MessagePort.cpp:141
&gt; +    // FIXME: At the time of serialization, we don&apos;t know if the target is a window, a worker or something else. We will only know at the time of

@Yusuke: Not sure how to best deal with this. Passing SerializationContext::WorkerPostMessage unconditionally here is a hack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724146</commentid>
    <comment_count>17</comment_count>
      <attachid>418682</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-01 02:03:23 -0800</bug_when>
    <thetext>Comment on attachment 418682
WIP Patch

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

&gt; LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/window-messagechannel-success-expected.txt:2
&gt; +PASS postMessaging to a dedicated worker via MessageChannel allows them to instantiate

Can we have a test case that is posting wasm module to message-ports tied to the different process and getting an error in deserialization side?
Ideally, we should throw an error, and we should report onmessageerror since we failed deserialization.
Maybe, we should add a test for checking that error, and after that, we should file a bug for `onmessageerror` handler invocation and implement it.
https://developer.mozilla.org/en-US/docs/Web/API/Worker/onmessageerror
https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/onmessageerror

&gt;&gt; Source/WebCore/dom/MessagePort.cpp:141
&gt;&gt; +    // FIXME: At the time of serialization, we don&apos;t know if the target is a window, a worker or something else. We will only know at the time of
&gt; 
&gt; @Yusuke: Not sure how to best deal with this. Passing SerializationContext::WorkerPostMessage unconditionally here is a hack.

This hack looks OK to me! If we attempt to deserialize non-sharable-between-processes objects, then we will get an error at deserialization (not causing catastrophic crash) since our SerializedScriptValue&apos;s deserialization is robust enough against that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783855</commentid>
    <comment_count>18</comment_count>
      <attachid>435429</attachid>
    <who name="">letz</who>
    <bug_when>2021-08-12 09:39:46 -0700</bug_when>
    <thetext>Created attachment 435429
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783856</commentid>
    <comment_count>19</comment_count>
    <who name="">letz</who>
    <bug_when>2021-08-12 09:42:17 -0700</bug_when>
    <thetext>Note that WebAssembly modules should be serialisable to be used in processorOptions at construction time between an AudioWorkletNote and and AudioWorkletProcessor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785216</commentid>
    <comment_count>20</comment_count>
      <attachid>418682</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-18 14:10:06 -0700</bug_when>
    <thetext>Comment on attachment 418682
WIP Patch

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

&gt;&gt; LayoutTests/imported/w3c/web-platform-tests/wasm/serialization/module/window-messagechannel-success-expected.txt:2
&gt;&gt; +PASS postMessaging to a dedicated worker via MessageChannel allows them to instantiate
&gt; 
&gt; Can we have a test case that is posting wasm module to message-ports tied to the different process and getting an error in deserialization side?
&gt; Ideally, we should throw an error, and we should report onmessageerror since we failed deserialization.
&gt; Maybe, we should add a test for checking that error, and after that, we should file a bug for `onmessageerror` handler invocation and implement it.
&gt; https://developer.mozilla.org/en-US/docs/Web/API/Worker/onmessageerror
&gt; https://developer.mozilla.org/en-US/docs/Web/API/MessagePort/onmessageerror

WebKit currently doesn&apos;t support onmessageerror AFAIK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785221</commentid>
    <comment_count>21</comment_count>
      <attachid>435798</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-18 14:39:25 -0700</bug_when>
    <thetext>Created attachment 435798
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785226</commentid>
    <comment_count>22</comment_count>
      <attachid>435799</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-18 14:45:03 -0700</bug_when>
    <thetext>Created attachment 435799
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785263</commentid>
    <comment_count>23</comment_count>
      <attachid>435812</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-18 16:09:52 -0700</bug_when>
    <thetext>Created attachment 435812
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785289</commentid>
    <comment_count>24</comment_count>
      <attachid>435820</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-18 17:18:06 -0700</bug_when>
    <thetext>Created attachment 435820
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785443</commentid>
    <comment_count>25</comment_count>
      <attachid>435860</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-19 08:25:04 -0700</bug_when>
    <thetext>Created attachment 435860
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785450</commentid>
    <comment_count>26</comment_count>
      <attachid>435862</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-19 08:42:54 -0700</bug_when>
    <thetext>Created attachment 435862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785462</commentid>
    <comment_count>27</comment_count>
      <attachid>435865</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-19 08:59:22 -0700</bug_when>
    <thetext>Created attachment 435865
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785516</commentid>
    <comment_count>28</comment_count>
      <attachid>435882</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-19 10:40:38 -0700</bug_when>
    <thetext>Created attachment 435882
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786425</commentid>
    <comment_count>29</comment_count>
      <attachid>436196</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-23 08:11:05 -0700</bug_when>
    <thetext>Created attachment 436196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786463</commentid>
    <comment_count>30</comment_count>
      <attachid>436207</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-08-23 10:21:14 -0700</bug_when>
    <thetext>Created attachment 436207
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1825353</commentid>
    <comment_count>31</comment_count>
    <who name="Ian Kettlewell">Ian.kettlewell</who>
    <bug_when>2021-12-18 09:59:52 -0800</bug_when>
    <thetext>A key detail worth noting: It looks like WebAssembly.Memory objects cannot be sent between workers via postMessage either.

An important use for postMessaging WebAssembly modules / memory is to use an Audio Worklet in a way similar to how a non-web dedicated audio thread would work. The Audio Worklet runs a Wasm instance backed by a SharedArrayBuffer that communicates with the main thread via Wasm atomics. That flow makes it *much* easier to for things like game engines to share audio backend code between non-web and web.

I think (but haven&apos;t verified) the module being un-postMessageable can be worked around by postMessaging the code and re-instantiating the module on the Worklet.

However as far as I&apos;m aware the WebAssembly.Memory object being non-postMessagable does not have a workaround. That blocks the use-case I&apos;ve described here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834449</commentid>
    <comment_count>32</comment_count>
    <who name="">letz</who>
    <bug_when>2022-01-27 01:01:17 -0800</bug_when>
    <thetext>Any news on this issue? Any expected date for a proper fix to appear? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849629</commentid>
    <comment_count>33</comment_count>
    <who name="Tibor Klajnscek">tibor.klajnscek</who>
    <bug_when>2022-03-09 04:20:29 -0800</bug_when>
    <thetext>+1 for a status update - this is blocking us from using our audio worklet backend which is critical to consistent and crackle-free audio in our products.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1862481</commentid>
    <comment_count>34</comment_count>
    <who name="Attila Haraszti">lolwebkitbugtracker</who>
    <bug_when>2022-04-19 03:16:37 -0700</bug_when>
    <thetext>This is currently a blocker for us, a fix would be highly appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1885936</commentid>
    <comment_count>35</comment_count>
    <who name="Tibor Klajnscek">tibor.klajnscek</who>
    <bug_when>2022-07-22 03:46:39 -0700</bug_when>
    <thetext>This seems to work in the latest Safari dev preview, but I haven&apos;t found any release notes mentioning it. 

Is it just a fluke or has it been fixed? And if so, will it make it into Safari 16?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1902354</commentid>
    <comment_count>36</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-09-30 08:15:36 -0700</bug_when>
    <thetext>@Chris - it seems this patch passes all tests and only have &quot;style&quot; issues? Is it something on your radar and &quot;see also&quot; bug is also fixed? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913239</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-11-17 11:05:20 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/6596</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1913547</commentid>
    <comment_count>38</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-11-18 13:31:52 -0800</bug_when>
    <thetext>Committed 256853@main (a9d61c9d9e2e): &lt;https://commits.webkit.org/256853@main&gt;

Reviewed commits have been landed. Closing PR #6596 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418682</attachid>
            <date>2021-01-28 17:06:09 -0800</date>
            <delta_ts>2021-08-18 14:39:25 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>220038_wip.patch</filename>
            <type>text/plain</type>
            <size>9076</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNi4uMGFjZTFlNmY2MjkzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFs
aXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9z
ZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRl
ZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkRhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIKK1BBU1MgcG9zdE1lc3Nh
Z2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVt
IHRvIGluc3RhbnRpYXRlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IDIxZGQ1
ZjBiN2FkMS4uYzk2YjExZGNkMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAg
LTEzOCw3ICsxMzgsMTAgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNz
YWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU0M6OkpTVmEKICAgICByZWdpc3Rlckxv
Y2FsQWN0aXZpdHkoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsK
LSAgICBhdXRvIG1lc3NhZ2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3Rh
dGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMpOworICAg
IC8vIEZJWE1FOiBBdCB0aGUgdGltZSBvZiBzZXJpYWxpemF0aW9uLCB3ZSBkb24ndCBrbm93IGlm
IHRoZSB0YXJnZXQgaXMgYSB3aW5kb3csIGEgd29ya2VyIG9yIHNvbWV0aGluZyBlbHNlLiBXZSB3
aWxsIG9ubHkga25vdyBhdCB0aGUgdGltZSBvZgorICAgIC8vIGRlc2VyaWFsaXphdGlvbi4gVGhp
cyBpcyBhbiBpc3N1ZSBzaW5jZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpIHdpbGwg
cmV0dXJuIGFuIGV4Y2VwdGlvbiBpZiBXYXNtIG1vZHVsZXMgLyBtZW1vcnkgaGFuZGxlcyBhcmUg
cHJlc2VudCBhbmQgdGhlIGNvbnRleHQKKyAgICAvLyBpcyBub3QgV29ya2VyUG9zdE1lc3NhZ2Uu
CisgICAgYXV0byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJp
YWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOwogICAgIGlmIChtZXNzYWdlRGF0
YS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG1lc3NhZ2VEYXRhLnJlbGVhc2VFeGNl
cHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmNwcAppbmRleCA2YmVlMWE4Y2MwMWEuLmZkZTg1
NWRkOGYzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5jcHAKQEAgLTI4LDQgKzI4LDExIEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM6Ok1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgbWVzc2FnZSwgVHJh
bnNmZXJyZWRNZXNzYWdlUG9ydEFycmF5JiYgdHJhbnNmZXJyZWRQb3J0cykKKyAgICA6IGlkZW50
aWZpZXIoeyBQcm9jZXNzOjppZGVudGlmaWVyKCksIElkZW50aWZpZXI6Ok1lc3NhZ2VJZGVudGlm
aWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKSB9KQorICAgICwgbWVzc2FnZShXVEZNb3ZlKG1lc3Nh
Z2UpKQorICAgICwgdHJhbnNmZXJyZWRQb3J0cyhXVEZNb3ZlKHRyYW5zZmVycmVkUG9ydHMpKQor
eworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKaW5kZXggZWEx
OGY5M2Q2NjY4Li5lZDk2ZGUzNWVmYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmgKQEAgLTM3LDYgKzM3
LDIwIEBAIHVzaW5nIFRyYW5zZmVycmVkTWVzc2FnZVBvcnQgPSBzdGQ6OnBhaXI8V2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyLCBXZWJDb3JlCiB1c2luZyBUcmFuc2ZlcnJlZE1lc3NhZ2VQ
b3J0QXJyYXkgPSBWZWN0b3I8VHJhbnNmZXJyZWRNZXNzYWdlUG9ydD47CiAKIHN0cnVjdCBNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyB7CisgICAgc3RydWN0IElkZW50aWZpZXIgeworICAgICAgICBQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICAgICAgZW51bSBJZGVudGlm
aWVyVHlwZSB7IH07CisgICAgICAgIHVzaW5nIE1lc3NhZ2VJZGVudGlmaWVyID0gT2JqZWN0SWRl
bnRpZmllcjxJZGVudGlmaWVyVHlwZT47CisgICAgICAgIE1lc3NhZ2VJZGVudGlmaWVyIG1lc3Nh
Z2VJZGVudGlmaWVyOworCisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIE9wdGlvbmFsPElkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7CisgICAgfTsKKworICAg
IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzKCkgPSBkZWZhdWx0OworICAgIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYsIFRyYW5zZmVycmVkTWVz
c2FnZVBvcnRBcnJheSYmKTsKKworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKICAgICBSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlOwogICAgIFRyYW5zZmVycmVkTWVzc2Fn
ZVBvcnRBcnJheSB0cmFuc2ZlcnJlZFBvcnRzOwogCkBAIC00OSw3ICs2Myw3IEBAIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+CiB2b2lkIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOjplbmNvZGUoRW5j
b2RlciYgZW5jb2RlcikgY29uc3QKIHsKICAgICBBU1NFUlQobWVzc2FnZSk7Ci0gICAgZW5jb2Rl
ciA8PCAqbWVzc2FnZSA8PCB0cmFuc2ZlcnJlZFBvcnRzOworICAgIGVuY29kZXIgPDwgaWRlbnRp
ZmllciA8PCAqbWVzc2FnZSA8PCB0cmFuc2ZlcnJlZFBvcnRzOwogfQogCiB0ZW1wbGF0ZTxjbGFz
cyBEZWNvZGVyPgpAQCAtNTcsNiArNzEsOSBAQCBPcHRpb25hbDxNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cz4gTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM6OmRlY29kZShEZWNvZGVyJiBkZWNvZAogewog
ICAgIE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIHJlc3VsdDsKIAorICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
CiAgICAgcmVzdWx0Lm1lc3NhZ2UgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShkZWNv
ZGVyKTsKICAgICBpZiAoIXJlc3VsdC5tZXNzYWdlKQogICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwpAQCAtNjcsNCArODQsMjYgQEAgT3B0aW9uYWw8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2QKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0czo6SWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCBtZXNzYWdlSWRlbnRpZmll
cjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK09wdGlvbmFsPE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzOjpJZGVudGlmaWVyPiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czo6SWRlbnRpZmll
cjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgT3B0aW9uYWw8UHJvY2Vzc0lkZW50
aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZp
ZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPE9iamVjdElkZW50aWZpZXI8SWRlbnRpZmllclR5cGU+PiBt
ZXNzYWdlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IG1lc3NhZ2VJZGVudGlmaWVyOworICAg
IGlmICghbWVzc2FnZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7IFdURk1vdmUoKnByb2Nlc3NJZGVudGlmaWVyKSwgV1RGTW92ZSgqbWVz
c2FnZUlkZW50aWZpZXIpIH0gfTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5kZXggOTdlZWNlMjJh
NDJmLi41NjI2MmYzNDRlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcApAQCAtNzgsNyArNzgsMTQgQEAgdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWUK
IAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9y
UG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OlRha2VBbGxNZXNzYWdlc0ZvclBvcnQgeyBwb3J0IH0sIFtjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgbWVzc2FnZXMsIHVpbnQ2NF90
IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzQ29u
bmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlRha2VBbGxNZXNzYWdlc0ZvclBvcnQgeyBwb3J0IH0sIFt0aGlzLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiYgbWVzc2Fn
ZXMsIHVpbnQ2NF90IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpIG11dGFibGUgeworICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBt
ZXNzYWdlcykgeworICAgICAgICAgICAgaWYgKG1lc3NhZ2UuaWRlbnRpZmllci5wcm9jZXNzSWRl
bnRpZmllciAhPSBQcm9jZXNzOjppZGVudGlmaWVyKCkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBpZiAoYXV0byBjYWNoZWRNZXNzYWdlID0gbV9jYWNoZWRNZXNzYWdl
cy50YWtlKG1lc3NhZ2UuaWRlbnRpZmllci5tZXNzYWdlSWRlbnRpZmllcikpCisgICAgICAgICAg
ICAgICAgbWVzc2FnZS5tZXNzYWdlID0gV1RGTW92ZShjYWNoZWRNZXNzYWdlKTsKKyAgICAgICAg
fQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2VzKSwgW21lc3NhZ2VC
YXRjaElkZW50aWZpZXJdIHsKICAgICAgICAgICAgIG5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEaWREZWxpdmVy
TWVzc2FnZVBvcnRNZXNzYWdlcyB7IG1lc3NhZ2VCYXRjaElkZW50aWZpZXIgfSwgMCk7CiAgICAg
ICAgIH0pOwpAQCAtODcsNiArOTQsMTQgQEAgdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW4KIAogdm9p
ZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcmVtb3RlVGFyZ2V0KQogeworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAg
QVNTRVJUKG1lc3NhZ2UuaWRlbnRpZmllci5wcm9jZXNzSWRlbnRpZmllciA9PSBQcm9jZXNzOjpp
ZGVudGlmaWVyKCkpOworICAgIEFTU0VSVCghbV9jYWNoZWRNZXNzYWdlcy5jb250YWlucyhtZXNz
YWdlLmlkZW50aWZpZXIubWVzc2FnZUlkZW50aWZpZXIpKTsKKyAgICBtX2NhY2hlZE1lc3NhZ2Vz
LmFkZChtZXNzYWdlLmlkZW50aWZpZXIubWVzc2FnZUlkZW50aWZpZXIsIG1lc3NhZ2UubWVzc2Fn
ZSk7CisKKyAgICAvLyBGSVhNRTogQWRkIGEgY29tcGxldGlvbiBoYW5kbGVyIGZvciB0aGlzIElQ
QyB0aGF0IHdpbGwgZ2V0IGNhbGxlZCBvbmNlIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHBvcnRlZCB0
byB0aGUgcmVtb3RlIHBvcnQuCisgICAgLy8gV2UnbGwgdXNlIHRoaXMgY29tcGxldGlvbiBoYW5k
bGVyIHRvIHJlbW92ZSB0aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGZyb20gbV9jYWNoZWRNZXNz
YWdlcyBpbiBjYXNlIHRoZSBtZXNzYWdlIGVuZHMKKyAgICAvLyB1cCBnZXR0aW5nIGRlbGl2ZXJl
ZCB0byBhbm90aGVyIHByb2Nlc3MuCiAgICAgbmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlBvc3RNZXNzYWdlVG9S
ZW1vdGUgeyBtZXNzYWdlLCByZW1vdGVUYXJnZXQgfSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggYjBlODcxM2QyNjBmLi4wZjhmNjU0
YWYyYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBA
IC0yNiw2ICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJDb3JlL01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKK30KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKQEAgLTQ1LDYgKzUxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOwogICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1Jl
bW90ZShXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7CiAgICAgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYg
Y2FsbGJhY2spIGZpbmFsOworCisgICAgSGFzaE1hcDxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0czo6SWRlbnRpZmllcjo6TWVzc2FnZUlkZW50aWZpZXIsIFJlZlB0cjxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBtX2NhY2hlZE1lc3NhZ2VzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>435429</attachid>
            <date>2021-08-12 09:39:46 -0700</date>
            <delta_ts>2021-08-18 16:10:09 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>Archive.zip</filename>
            <type>application/zip</type>
            <size>89372</size>
            <attacher>letz</attacher>
            
              <data encoding="base64">UEsDBBQACAAIAGOSDFMAAAAAAAAAADbfBAAIACAAb3NjLmh0bWxVVA0AB/tJFWGjShVh+0kVYXV4
CwABBPUBAAAEFAAAAMS9+Z7bxrE/+vfNU5CwzwgQezhD2c5JwIF4ZdmKnXg7kRInh0P5g40kONyG
5GjxkOdZ7rPcJ7v1repuNEBwpCQnv+tlCDR67+rqquparqa7xfzpb66meZzRzyLfxa10Gm+2+S7y
/vLqxfnvPEre7t7P89bu/TqPvF3+bneRbreUnqyy96373/xfSZzeTDaru2V2nq7mq03Y+uSS/+n/
5vCb31w8bv389Zd/+vZV6/HFb1CairRa52/z5KbYne9Wd+n0PI3n89XdLmwtV8u873y+2+ab820+
z1P34w16feLbYvXrqS/b5g8NidTt7ji+2+7OMa71+TxO8jmGOl4td+fjeFHM34etZ5sinqvWX/NN
Fi9j1fomn7/Jd0VKj9t4ue3r7Nvi1zxs9T5bv0NKMZ+Hrc0kif3e73+ver+/VL3fPlGX3d8GbrO7
1Wq+K9bner7+5XbLmpO73W61/PeMiMbyuyfqyRefHY/n3ziPp1v9P9zcm3h+l/9vLFlP2kTK27yY
TAkuk9U8c/vhUx/+8/f0n/RgHe+mlX3VDNQbev1Qtof2UHOt9F9abFJCER/uAWYnnK7e5BvOnN5t
tkAYWU5TON/ZsZgZTVbvOB/G3Qpbb6fFjjuy3W1WNzmlJHNCPvViGw3kBHTUklsBZq73BZavp+g3
+Pi6pvEym1fqmmzy9yfKY551+el2XmQ0E4Ra9Zh18bvN3P9kutoUv9I6x/OXnO175PrDJs6KfLkL
TtXVOK7Yf/I71XvyW8IpjE++qA7uCHZ/f7L646E29vUbzuZ09kNT8ebBqSCQwIb4qIl489ET0fqn
ZuLNwzNR7eo/PA/TJN5MNvGazr27zS4ulnUIfXKp+L9TdV1ctGwdLZ7NbSuNl8vVrpXk2EvFMs9a
b4q49fzlS0pKqVk6v6d5sWm9LbLddNuiPnM1jF7odUPl3i8JW6Unuvoh+P0yxnKtp/WF+yBQ/KuT
0VjXwyD2z/Y1nebpDaGk838OLdni/OBWoLN/qP0ldXPzvt46D215t8g3GNvXyPKX9YdG5XRL17pa
55t4V6xkAR7uiMaJTR2RTx/oQKtanaYOmqrbxckf8PHDI5Ij6IMnANe6We1oqMvJl5zraAOfqi1b
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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435798</attachid>
            <date>2021-08-18 14:39:25 -0700</date>
            <delta_ts>2021-08-18 14:45:03 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>220038_wip.patch</filename>
            <type>text/plain</type>
            <size>19738</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNi4uMGFjZTFlNmY2MjkzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFs
aXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9z
ZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRl
ZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkRhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIKK1BBU1MgcG9zdE1lc3Nh
Z2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVt
IHRvIGluc3RhbnRpYXRlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2Vydmlj
ZXdvcmtlci1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ct
c2VydmljZXdvcmtlci1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAwYjk3ZmUxMjE1
YjMuLjBhZGFhYTYxOWUwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3dpbmRvdy1zZXJ2aWNl
d29ya2VyLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5k
b3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMg
QEAKIAotRkFJTCBXZWJBc3NlbWJseS5Nb2R1bGUgY2Fubm90IGNyb3NzIGFnZW50IGNsdXN0ZXJz
LCBzZXJ2aWNlIHdvcmtlciBlZGl0aW9uIGFzc2VydF91bnJlYWNoZWQ6IEdvdCBhbiB1bmV4cGVj
dGVkIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmljZSB3b3JrZXI6IHdvcmtlciBvbm1lc3NhZ2Ugd2Fz
IHJlYWNoZWQgd2hlbiBpbiBzdGF0ZSAid2UgYXJlIGV4cGVjdGluZyBhIG1lc3NhZ2VlcnJvciBk
dWUgdG8gdGhlIHdpbmRvdyBzZW5kaW5nIHVzIGEgV2ViQXNzZW1ibHkuTW9kdWxlIiBhbmQgZGF0
YSBudWxsIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBXZWJBc3NlbWJseS5Nb2R1bGUg
Y2Fubm90IGNyb3NzIGFnZW50IGNsdXN0ZXJzLCBzZXJ2aWNlIHdvcmtlciBlZGl0aW9uIGFzc2Vy
dF91bnJlYWNoZWQ6IEdvdCBhbiB1bmV4cGVjdGVkIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmljZSB3
b3JrZXI6IHdvcmtlciBvbm1lc3NhZ2Ugd2FzIHJlYWNoZWQgd2hlbiBpbiBzdGF0ZSAid2UgYXJl
IGV4cGVjdGluZyBhIG1lc3NhZ2VlcnJvciBkdWUgdG8gdGhlIHdpbmRvdyBzZW5kaW5nIHVzIGEg
V2ViQXNzZW1ibHkuTW9kdWxlIiBhbmQgZGF0YSBbb2JqZWN0IFdlYkFzc2VtYmx5Lk1vZHVsZV0g
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2
ZDRjMS4uOWQxMmI0ZGUyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5MCw2ICsyOTAsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmgKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorICAgIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaAogICAgIGJpbmRpbmdzL2pzL1N0
cmluZ0FkYXB0b3JzLmgKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0aW9ucy5oCiAg
ICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NGM3ZGVm
NzZiN2EuLjNiNGFiNGNjOGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4NSw2ICsxMjg1LDcgQEAKIAkJNDY3MkFBOTgy
NkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzJBQTk2MjZCMDk0MjEwMEU2
RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8q
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxv
YWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdV
bmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CisJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVC
RiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwNjAwQzI2Q0RBOEE1MDBBMUE1QkYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5
Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI5NCw2ICs4Mjk1LDcgQEAK
IAkJNDY3MkFBOTYyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3
IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVt
ZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDYwMEMyNkNEQThBNTAw
QTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1
RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzAxOCw2ICsyNzAyMCw3IEBACiAJCQkJMTQwMEQ3QTcx
NzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVF
NDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJ
CQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8s
CisJCQkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlk
ZW50aWZpZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAwRjA2OEIgLyogU3RyaW5nQWRh
cHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENs
b25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENs
b25lLmggKi8sCkBAIC0zMzk1OSw2ICszMzk2Miw3IEBACiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAw
QTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkw
NTgxNEU5QzI5OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlw
dFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDUxNkMwM0MwODAw
MzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0MwRTAwMzMxNkJEIC8q
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
NTA0Nzg1Yzk2ZDhmLi4wMzA5MTk3NGE2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtODksNyArODksOSBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4K
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KQEAgLTExMCw3ICsx
MTIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0gNDAwMDA7Citjb25zdGV4cHIgdW5zaWduZWQg
bWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOworY29uc3RleHByIFNlY29uZHMgY2FjaGVk
U2VyaWFsaXplZFNjcmlwdFZhbHVlTGlmZXRpbWUgeyAzMF9zIH07CiAKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTM4
OTUsMTggKzM4OTgsMjggQEAgZXJyb3I6CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSgpID0gZGVmYXVsdDsKIAorc3RhdGljIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6SWRlbnRpZmllciBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHJldHVybiB7Cisg
ICAgICAgIFByb2Nlc3M6OmlkZW50aWZpZXIoKSwKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpJZGVudGlmaWVyOjpWYWx1ZUlkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpCisg
ICAgfTsKK30KKwogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkK
KyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0YShX
VEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNvc3Qo
KTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQorU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8dWlu
dDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+
JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgICAg
ICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscwogI2VuZGlmCiAgICAgICAgICkKLSAgICA6IG1fZGF0YShXVEZN
b3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGF0
YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZN
b3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAg
LCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5l
bHMpKQpAQCAtMzkyNyw3ICszOTQwLDggQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICAgICAg
ICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5SGFu
ZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVy
KSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0
YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZN
b3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX3NoYXJlZEJ1ZmZlckNvbnRl
bnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5KSkKICAgICAsIG1fYmFj
a2luZ1N0b3JlcyhXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpKQpAQCAtNDQxMiw0ICs0NDI2LDQ3IEBA
IElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4
ZWREQlN5bmNocm9ub3VzbHkoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorYXV0byBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OkNhY2hlOjpzaW5nbGV0b24oKSAtPiBDYWNoZSYKK3sKKyAgICBzdGF0
aWMgTGF6eU5ldmVyRGVzdHJveWVkPENhY2hlPiBjYWNoZTsKKyAgICBzdGF0aWMgc3RkOjpvbmNl
X2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFsmXSAoKSB7Cisg
ICAgICAgIGNhY2hlLmNvbnN0cnVjdCgpOworICAgIH0pOworICAgIHJldHVybiBjYWNoZTsKK30K
KworU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGUoKSA9IGRlZmF1bHQ7CitTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjp+Q2FjaGUoKSA9IGRlZmF1bHQ7CisKK1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1ZShSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHZhbHVlKQorICAgIDogbV9leHBpcmF0aW9uVGltZXIoKnRo
aXMsICZDYWNoZWRWYWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3ZhbHVlKFdU
Rk1vdmUodmFsdWUpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9leHBp
cmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNhY2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0
aW1lKTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3ZhbHVlcy5hZGQoc2VyaWFsaXplZFNjcmlw
dFZhbHVlLT5pZGVudGlmaWVyKCksIG1ha2VVbmlxdWU8Q2FjaGVkVmFsdWU+KFdURk1vdmUoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjp0YWtlKElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gY2FjaGVkVmFsdWUg
PSBtX3ZhbHVlcy50YWtlKGlkZW50aWZpZXIpOworICAgIHJldHVybiBjYWNoZWRWYWx1ZSA/IGNh
Y2hlZFZhbHVlLT50YWtlVmFsdWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWU6OmV4cGlyYXRpb25UaW1lckZpcmVkKCkKK3sK
KyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVtb3ZlZFZh
bHVlID0gQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UobV92YWx1ZS0+aWRlbnRpZmllcigpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRWYWx1ZSwgcmVtb3ZlZFZhbHVlKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLjRjZWJkNmMxZGRlYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJEZXRh
Y2hlZFJUQ0RhdGFDaGFubmVsLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRl
ICJQcm9jZXNzSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+
CisjaW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0Nv
bnRleHRSZWY7CkBAIC0xMTUsOSArMTE5LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAorICAgIHVzaW5nIElkZW50aWZpZXIgPSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyOworCisgICAgSWRlbnRpZmllciBpZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
KTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2ln
bmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYK
KyAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciwgVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRz
QXJyYXk+JiYKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCiAjZW5kaWYKQEAgLTEzNiw4ICsxNDQs
MzcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICApOwogCisgICAgY2xhc3MgQ2FjaGUgewor
ICAgIHB1YmxpYzoKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhY2hlJiBzaW5nbGV0
b24oKTsKKyAgICAgICAgfkNhY2hlKCk7CisKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
ZGQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJik7CisgICAgICAgIFdFQkNPUkVfRVhQ
T1JUIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHRha2UoSWRlbnRpZmllcik7CisKKyAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTGF6eU5ldmVyRGVzdHJveWVkPENhY2hl
PjsKKyAgICAgICAgQ2FjaGUoKTsKKworICAgICAgICBjbGFzcyBDYWNoZWRWYWx1ZSB7CisgICAg
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICAgICAgcHVibGljOgorICAgICAg
ICAgICAgQ2FjaGVkVmFsdWUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJik7CisgICAg
ICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB0YWtlVmFsdWUoKSB7IHJldHVy
biBzdGQ6OmV4Y2hhbmdlKG1fdmFsdWUsIG51bGxwdHIpOyB9CisKKyAgICAgICAgcHJpdmF0ZToK
KyAgICAgICAgICAgIHZvaWQgZXhwaXJhdGlvblRpbWVyRmlyZWQoKTsKKworICAgICAgICAgICAg
VGltZXIgbV9leHBpcmF0aW9uVGltZXI7CisgICAgICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiBtX3ZhbHVlOworICAgICAgICB9OworCisgICAgICAgIEhhc2hNYXA8SWRlbnRp
Zmllciwgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFZhbHVlPj4gbV92YWx1ZXM7CisgICAgfTsKKwog
ICAgIHNpemVfdCBjb21wdXRlTWVtb3J5Q29zdCgpIGNvbnN0OwogCisgICAgSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVyQ29udGVu
dHNBcnJheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBt
X3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXk7CkBAIC0xNzcsNiArMjE0LDkgQEAgdm9pZCBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGZv
ciAoY29uc3QgYXV0byAmY2hhbm5lbCA6IG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCiAgICAg
ICAgIGVuY29kZXIgPDwgKmNoYW5uZWw7CiAjZW5kaWYKKworICAgIENhY2hlOjpzaW5nbGV0b24o
KS5hZGQoY29uc3RfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0aGlzKSk7CisgICAgZW5j
b2RlciA8PCBtX2lkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0y
MzAsMTIgKzI3MCwyMCBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoZGF0
YSksIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KQorICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFdlIGFyZSBub3QgYWJsZSB0byBzZXJpYWxpemUgdGhp
bmdzIGxpa2UgV0FTTSBtb2R1bGVzIHNvIHJldXNlIHRoZSBleGlzdGluZyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgaWYgc3RpbGwgYWxpdmUKKyAgICAvLyB1cG9uIGRlc2VyaWFsaXphdGlvbiBpbnN0
ZWFkIG9mIGNvbnN0cnVjdGluZyBhIG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZnJvbSBkZXNl
cmlhbGl6ZWQgZGF0YS4KKyAgICBpZiAoYXV0byBleGlzdGluZ1ZhbHVlID0gQ2FjaGU6OnNpbmds
ZXRvbigpLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBleGlzdGluZ1ZhbHVlLnJl
bGVhc2VOb25OdWxsKCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoaWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgICAgICwgV1RGTW92ZShkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscykKICNlbmRpZgogICAgICAgICApKTsKIH0KIAotCi19Cit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDMzYmY2MTJlZmEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlm
aWVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlm
aWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyIHsKKyAgICBQcm9jZXNzSWRl
bnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKworICAgIGVudW0gVmFsdWVJZGVudGlmaWVyVHlw
ZSB7IH07CisgICAgdXNpbmcgVmFsdWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxWYWx1
ZUlkZW50aWZpZXJUeXBlPjsKKyAgICBWYWx1ZUlkZW50aWZpZXIgdmFsdWVJZGVudGlmaWVyOwor
CisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJ
ZGVudGlmaWVyLnRvVUludDY0KCksIHZhbHVlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsgfQorCisg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitpbmxpbmUg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGEs
IGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJu
IGEucHJvY2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiBhLnZhbHVlSWRl
bnRpZmllciA9PSBiLnZhbHVlSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4KK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCB2
YWx1ZUlkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlv
bmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9u
YWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4g
cHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVJZGVudGlmaWVy
PiB2YWx1ZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB2YWx1ZUlkZW50aWZpZXI7CisgICAg
aWYgKCF2YWx1ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7ICpwcm9jZXNzSWRlbnRpZmllciwgKnZhbHVlSWRlbnRpZmllciB9IH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVk
IGhhc2goY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYga2V5
KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9Cisg
ICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVl
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWVJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisK
KyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnByb2Nl
c3NJZGVudGlmaWVyKSBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURl
bGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90
LnByb2Nlc3NJZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK3Rl
bXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUlkZW50aWZpZXI+IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllckhhc2ggeyB9Owor
Cit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IGMx
YzVkYzk4NmFjYi4uOTBmOTViOWM5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAK
QEAgLTEzOSw3ICsxMzksMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RN
ZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU0M6OkpTVmEKICAgICByZWdpc3Rl
ckxvY2FsQWN0aXZpdHkoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0
czsKLSAgICBhdXRvIG1lc3NhZ2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUo
c3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMpOwor
CisgICAgLy8gRklYTUU6IEF0IHRoZSB0aW1lIG9mIHNlcmlhbGl6YXRpb24sIHdlIGRvbid0IGtu
b3cgaWYgdGhlIHRhcmdldCBpcyBhIHdpbmRvdywgYSB3b3JrZXIgb3Igc29tZXRoaW5nIGVsc2Uu
IFdlIHdpbGwgb25seSBrbm93IGF0IHRoZSB0aW1lIG9mCisgICAgLy8gZGVzZXJpYWxpemF0aW9u
LiBUaGlzIGlzIGFuIGlzc3VlIHNpbmNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkg
d2lsbCByZXR1cm4gYW4gZXhjZXB0aW9uIGlmIFdhc20gbW9kdWxlcyAvIG1lbW9yeSBoYW5kbGVz
IGFyZSBwcmVzZW50IGFuZCB0aGUgY29udGV4dAorICAgIC8vIGlzIG5vdCBXb3JrZXJQb3N0TWVz
c2FnZS4KKyAgICBhdXRvIG1lc3NhZ2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoc3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMs
IFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CiAgICAgaWYgKG1lc3Nh
Z2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbWVzc2FnZURhdGEucmVsZWFz
ZUV4Y2VwdGlvbigpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435799</attachid>
            <date>2021-08-18 14:45:03 -0700</date>
            <delta_ts>2021-08-18 16:10:18 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>220038_wip.patch</filename>
            <type>text/plain</type>
            <size>19617</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNi4uMGFjZTFlNmY2MjkzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFs
aXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9z
ZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRl
ZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkRhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIKK1BBU1MgcG9zdE1lc3Nh
Z2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVt
IHRvIGluc3RhbnRpYXRlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2Vydmlj
ZXdvcmtlci1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ct
c2VydmljZXdvcmtlci1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dAppbmRleCAwYjk3ZmUxMjE1
YjMuLjBhZGFhYTYxOWUwOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3dpbmRvdy1zZXJ2aWNl
d29ya2VyLWZhaWx1cmUuaHR0cHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5k
b3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMg
QEAKIAotRkFJTCBXZWJBc3NlbWJseS5Nb2R1bGUgY2Fubm90IGNyb3NzIGFnZW50IGNsdXN0ZXJz
LCBzZXJ2aWNlIHdvcmtlciBlZGl0aW9uIGFzc2VydF91bnJlYWNoZWQ6IEdvdCBhbiB1bmV4cGVj
dGVkIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmljZSB3b3JrZXI6IHdvcmtlciBvbm1lc3NhZ2Ugd2Fz
IHJlYWNoZWQgd2hlbiBpbiBzdGF0ZSAid2UgYXJlIGV4cGVjdGluZyBhIG1lc3NhZ2VlcnJvciBk
dWUgdG8gdGhlIHdpbmRvdyBzZW5kaW5nIHVzIGEgV2ViQXNzZW1ibHkuTW9kdWxlIiBhbmQgZGF0
YSBudWxsIFJlYWNoZWQgdW5yZWFjaGFibGUgY29kZQorRkFJTCBXZWJBc3NlbWJseS5Nb2R1bGUg
Y2Fubm90IGNyb3NzIGFnZW50IGNsdXN0ZXJzLCBzZXJ2aWNlIHdvcmtlciBlZGl0aW9uIGFzc2Vy
dF91bnJlYWNoZWQ6IEdvdCBhbiB1bmV4cGVjdGVkIG1lc3NhZ2UgZnJvbSB0aGUgc2VydmljZSB3
b3JrZXI6IHdvcmtlciBvbm1lc3NhZ2Ugd2FzIHJlYWNoZWQgd2hlbiBpbiBzdGF0ZSAid2UgYXJl
IGV4cGVjdGluZyBhIG1lc3NhZ2VlcnJvciBkdWUgdG8gdGhlIHdpbmRvdyBzZW5kaW5nIHVzIGEg
V2ViQXNzZW1ibHkuTW9kdWxlIiBhbmQgZGF0YSBbb2JqZWN0IFdlYkFzc2VtYmx5Lk1vZHVsZV0g
UmVhY2hlZCB1bnJlYWNoYWJsZSBjb2RlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hl
YWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2
ZDRjMS4uOWQxMmI0ZGUyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5MCw2ICsyOTAsNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMv
U2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVz
LmgKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorICAgIGJpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaAogICAgIGJpbmRpbmdzL2pzL1N0
cmluZ0FkYXB0b3JzLmgKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0aW9ucy5oCiAg
ICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NGM3ZGVm
NzZiN2EuLjNiNGFiNGNjOGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4NSw2ICsxMjg1LDcgQEAKIAkJNDY3MkFBOTgy
NkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzJBQTk2MjZCMDk0MjEwMEU2
RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8q
IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxv
YWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdV
bmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CisJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVC
RiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwNjAwQzI2Q0RBOEE1MDBBMUE1QkYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBT
dG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBC
Nzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hh
bm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5
Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI5NCw2ICs4Mjk1LDcgQEAK
IAkJNDY3MkFBOTYyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmln
aW5PcGVuZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3
IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVt
ZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDYwMEMyNkNEQThBNTAw
QTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlh
bHNQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1
RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01S
ZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzAxOCw2ICsyNzAyMCw3IEBACiAJCQkJMTQwMEQ3QTcx
NzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVF
NDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJ
CQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8s
CisJCQkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlk
ZW50aWZpZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAwRjA2OEIgLyogU3RyaW5nQWRh
cHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENs
b25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENs
b25lLmggKi8sCkBAIC0zMzk1OSw2ICszMzk2Miw3IEBACiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAw
QTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkw
NTgxNEU5QzI5OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlw
dFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDUxNkMwM0MwODAw
MzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyOTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVz
aXNWb2ljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0MwRTAwMzMxNkJEIC8q
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXgg
NTA0Nzg1Yzk2ZDhmLi5kZmUyYTcyMzdmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtODksNyArODksOSBAQAog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4K
ICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0
cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KQEAgLTExMCw3ICsx
MTIsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKLXN0YXRpYyBjb25zdCB1bnNp
Z25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0gNDAwMDA7Citjb25zdGV4cHIgdW5zaWduZWQg
bWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOworY29uc3RleHByIFNlY29uZHMgY2FjaGVk
U2VyaWFsaXplZFNjcmlwdFZhbHVlTGlmZXRpbWUgeyAzMF9zIH07CiAKIGVudW0gY2xhc3MgU2Vy
aWFsaXphdGlvblJldHVybkNvZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTM4
OTUsMTggKzM4OTgsMjggQEAgZXJyb3I6CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZSgpID0gZGVmYXVsdDsKIAorc3RhdGljIFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6SWRlbnRpZmllciBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHJldHVybiB7Cisg
ICAgICAgIFByb2Nlc3M6OmlkZW50aWZpZXIoKSwKKyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpJZGVudGlmaWVyOjpWYWx1ZUlkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpCisg
ICAgfTsKK30KKwogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkK
KyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0YShX
VEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNvc3Qo
KTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQorU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8dWlu
dDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+
JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgICAg
ICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscwogI2VuZGlmCiAgICAgICAgICkKLSAgICA6IG1fZGF0YShXVEZN
b3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGF0
YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZN
b3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAg
LCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5l
bHMpKQpAQCAtMzkyNyw3ICszOTQwLDggQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICAgICAg
ICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5SGFu
ZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVy
KSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0
YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZN
b3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX3NoYXJlZEJ1ZmZlckNvbnRl
bnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5KSkKICAgICAsIG1fYmFj
a2luZ1N0b3JlcyhXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpKQpAQCAtNDQxMiw0ICs0NDI2LDQzIEBA
IElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4
ZWREQlN5bmNocm9ub3VzbHkoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorYXV0byBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OkNhY2hlOjpzaW5nbGV0b24oKSAtPiBDYWNoZSYKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+IGNhY2hlOworICAgIHJldHVybiBjYWNoZTsKK30KKwor
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGUoKSA9IGRlZmF1bHQ7CitTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OkNhY2hlOjp+Q2FjaGUoKSA9IGRlZmF1bHQ7CisKK1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1ZShSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmIHZhbHVlKQorICAgIDogbV9leHBpcmF0aW9uVGltZXIoKnRoaXMs
ICZDYWNoZWRWYWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3ZhbHVlKFdURk1v
dmUodmFsdWUpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9leHBpcmF0
aW9uVGltZXIuc3RhcnRPbmVTaG90KGNhY2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0aW1l
KTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3ZhbHVlcy5hZGQoc2VyaWFsaXplZFNjcmlwdFZh
bHVlLT5pZGVudGlmaWVyKCksIG1ha2VVbmlxdWU8Q2FjaGVkVmFsdWU+KFdURk1vdmUoc2VyaWFs
aXplZFNjcmlwdFZhbHVlKSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjp0YWtlKElkZW50aWZpZXIgaWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gY2FjaGVkVmFsdWUgPSBt
X3ZhbHVlcy50YWtlKGlkZW50aWZpZXIpOworICAgIHJldHVybiBjYWNoZWRWYWx1ZSA/IGNhY2hl
ZFZhbHVlLT50YWtlVmFsdWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWU6OmV4cGlyYXRpb25UaW1lckZpcmVkKCkKK3sKKyAg
ICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVtb3ZlZFZhbHVl
ID0gQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UobV92YWx1ZS0+aWRlbnRpZmllcigpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlbW92ZWRWYWx1ZSwgcmVtb3ZlZFZhbHVlKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLjJjZDhmODNlZDUyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgK
QEAgLTI5LDEyICsyOSwxNiBAQAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNsdWRlICJEZXRhY2hl
ZFJUQ0RhdGFDaGFubmVsLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlICJQ
cm9jZXNzSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Fy
cmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0dpZ2FjYWdlLmg+Cisj
aW5jbHVkZSA8d3RmL09iamVjdElkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRl
eHRSZWY7CkBAIC0xMTUsOSArMTE5LDEzIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAorICAgIHVzaW5nIElkZW50aWZpZXIgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyOworCisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciwgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+JiYKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCiAjZW5kaWYKQEAgLTEzNiw4ICsxNDQsMzcg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICApOwogCisgICAgY2xhc3MgQ2FjaGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhY2hlJiBzaW5nbGV0b24o
KTsKKyAgICAgICAgfkNhY2hlKCk7CisKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGQo
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHRha2UoSWRlbnRpZmllcik7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+OworICAg
ICAgICBDYWNoZSgpOworCisgICAgICAgIGNsYXNzIENhY2hlZFZhbHVlIHsKKyAgICAgICAgICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBD
YWNoZWRWYWx1ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICAgICAgICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHRha2VWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UobV92YWx1ZSwgbnVsbHB0cik7IH0KKworICAgICAgICBwcml2YXRlOgorICAgICAg
ICAgICAgdm9pZCBleHBpcmF0aW9uVGltZXJGaXJlZCgpOworCisgICAgICAgICAgICBUaW1lciBt
X2V4cGlyYXRpb25UaW1lcjsKKyAgICAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fdmFsdWU7CisgICAgICAgIH07CisKKyAgICAgICAgSGFzaE1hcDxJZGVudGlmaWVyLCBz
dGQ6OnVuaXF1ZV9wdHI8Q2FjaGVkVmFsdWU+PiBtX3ZhbHVlczsKKyAgICB9OworCiAgICAgc2l6
ZV90IGNvbXB1dGVNZW1vcnlDb3N0KCkgY29uc3Q7CiAKKyAgICBJZGVudGlmaWVyIG1faWRlbnRp
ZmllcjsKICAgICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVk
QnVmZmVyQ29udGVudHNBcnJheTsKQEAgLTE3Nyw2ICsyMTQsOSBAQCB2b2lkIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZm9yIChjb25z
dCBhdXRvICZjaGFubmVsIDogbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscykKICAgICAgICAgZW5j
b2RlciA8PCAqY2hhbm5lbDsKICNlbmRpZgorCisgICAgQ2FjaGU6OnNpbmdsZXRvbigpLmFkZChj
b25zdF9jYXN0PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSo+KHRoaXMpKTsKKyAgICBlbmNvZGVyIDw8
IG1faWRlbnRpZmllcjsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTIzMCwxMiAr
MjcwLDIwIEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgLy8gV2UgYXJlIG5vdCBhYmxlIHRvIHNlcmlhbGl6ZSB0aGluZ3MgbGlr
ZSBXQVNNIG1vZHVsZXMgc28gcmV1c2UgdGhlIGV4aXN0aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBpZiBzdGlsbCBhbGl2ZQorICAgIC8vIHVwb24gZGVzZXJpYWxpemF0aW9uIGluc3RlYWQgb2Yg
Y29uc3RydWN0aW5nIGEgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIGRlc2VyaWFsaXpl
ZCBkYXRhLgorICAgIGlmIChhdXRvIGV4aXN0aW5nVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCku
dGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVmFsdWUucmVsZWFzZU5v
bk51bGwoKTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSkKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkUlRD
RGF0YUNoYW5uZWxzKQogI2VuZGlmCiAgICAgICAgICkpOwogfQogCi0KLX0KK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLmZkMzNiZjYxMmVmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaApA
QCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
KgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlmaWVy
IHByb2Nlc3NJZGVudGlmaWVyOworCisgICAgZW51bSBWYWx1ZUlkZW50aWZpZXJUeXBlIHsgfTsK
KyAgICB1c2luZyBWYWx1ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFZhbHVlSWRlbnRp
ZmllclR5cGU+OworICAgIFZhbHVlSWRlbnRpZmllciB2YWx1ZUlkZW50aWZpZXI7CisKKyAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZUhhc2gocHJvY2Vzc0lkZW50aWZp
ZXIudG9VSW50NjQoKSwgdmFsdWVJZGVudGlmaWVyLnRvVUludDY0KCkpOyB9CisKKyAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVt
cGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFNjcmlw
dFZhbHVlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3Qg
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYikKK3sKKyAgICByZXR1cm4gYS5wcm9j
ZXNzSWRlbnRpZmllciA9PSBiLnByb2Nlc3NJZGVudGlmaWVyICYmIGEudmFsdWVJZGVudGlmaWVy
ID09IGIudmFsdWVJZGVudGlmaWVyOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9p
ZCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHByb2Nlc3NJZGVudGlmaWVyIDw8IHZhbHVlSWRl
bnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
Zmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxQcm9j
ZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNz
SWRlbnRpZmllcjsKKyAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZUlkZW50aWZpZXI+IHZhbHVl
SWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHZhbHVlSWRlbnRpZmllcjsKKyAgICBpZiAoIXZh
bHVlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVy
biB7IHsgKnByb2Nlc3NJZGVudGlmaWVyLCAqdmFsdWVJZGVudGlmaWVyIH0gfTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChj
b25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBrZXkpIHsgcmV0
dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBhLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0
aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJZGVudGlmaWVyIGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKworICAgIHN0
YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QucHJvY2Vzc0lkZW50
aWZpZXIpIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZh
bHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3QucHJvY2Vz
c0lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
Zmllcj4gOiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVySGFzaCB7IH07CisKK30gLy8g
bmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYzFjNWRjOTg2
YWNiLi45MGY5NWI5Yzk5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdl
UG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTM5
LDcgKzEzOSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2Uo
SlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEpTQzo6SlNWYQogICAgIHJlZ2lzdGVyTG9jYWxB
Y3Rpdml0eSgpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAg
IGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwg
bWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cyk7CisKKyAgICAv
LyBGSVhNRTogQXQgdGhlIHRpbWUgb2Ygc2VyaWFsaXphdGlvbiwgd2UgZG9uJ3Qga25vdyBpZiB0
aGUgdGFyZ2V0IGlzIGEgd2luZG93LCBhIHdvcmtlciBvciBzb21ldGhpbmcgZWxzZS4gV2Ugd2ls
bCBvbmx5IGtub3cgYXQgdGhlIHRpbWUgb2YKKyAgICAvLyBkZXNlcmlhbGl6YXRpb24uIFRoaXMg
aXMgYW4gaXNzdWUgc2luY2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSB3aWxsIHJl
dHVybiBhbiBleGNlcHRpb24gaWYgV2FzbSBtb2R1bGVzIC8gbWVtb3J5IGhhbmRsZXMgYXJlIHBy
ZXNlbnQgYW5kIHRoZSBjb250ZXh0CisgICAgLy8gaXMgbm90IFdvcmtlclBvc3RNZXNzYWdlLgor
ICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0
ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cywgU2VyaWFs
aXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKICAgICBpZiAobWVzc2FnZURhdGEu
aGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBtZXNzYWdlRGF0YS5yZWxlYXNlRXhjZXB0
aW9uKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435812</attachid>
            <date>2021-08-18 16:09:52 -0700</date>
            <delta_ts>2021-08-18 17:18:06 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>220038_wip.patch</filename>
            <type>text/plain</type>
            <size>30518</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNi4uMGFjZTFlNmY2MjkzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFs
aXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9z
ZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRl
ZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkRhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIKK1BBU1MgcG9zdE1lc3Nh
Z2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVt
IHRvIGluc3RhbnRpYXRlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2ZDRjMS4uOWQx
MmI0ZGUyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5MCw2ICsyOTAsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3Jh
cHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKICAgICBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorICAgIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaAogICAgIGJpbmRpbmdzL2pzL1N0cmluZ0FkYXB0
b3JzLmgKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0aW9ucy5oCiAgICAgYmluZGlu
Z3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NGM3ZGVmNzZiN2EuLjNi
NGFiNGNjOGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTI4NSw2ICsxMjg1LDcgQEAKIAkJNDY3MkFBOTgyNkIwOTQzMzAw
RTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzJBQTk2MjZCMDk0MjEwMEU2RUMzOCAvKiBD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudElu
Y3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3Vu
dEluY3JlbWVudGVyLmggKi87IH07CisJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVCRiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwNjAwQzI2Q0RBOEE1MDBBMUE1QkYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlE
MDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI5NCw2ICs4Mjk1LDcgQEAKIAkJNDY3MkFB
OTYyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVC
IC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNzAxOCw2ICsyNzAyMCw3IEBACiAJCQkJMTQwMEQ3QTcxNzEzNkVBNzAw
NzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVFNDk3NTEwNzUy
QUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJCQlBNzVFNDk3
NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJCQkJNDY4
MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIu
aCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAwRjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAq
LywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAq
LywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi8s
CkBAIC0zMzk1OSw2ICszMzk2Miw3IEBACiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8q
IFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTgxNEU5QzI5
OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDUxNkMwM0MwODAwMzMxNkJEIC8q
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0MwRTAwMzMxNkJEIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggNTA0Nzg1Yzk2
ZDhmLi4wMzEzMmJlMTM0NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtODksNyArODksOSBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1lhcnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KQEAgLTExMCw3ICsxMTIsOCBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElG
SUVSKFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSk7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhp
bXVtRmlsdGVyUmVjdXJzaW9uID0gNDAwMDA7Citjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bUZp
bHRlclJlY3Vyc2lvbiA9IDQwMDAwOworY29uc3RleHByIFNlY29uZHMgY2FjaGVkU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlTGlmZXRpbWUgeyAzMF9zIH07CiAKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlv
blJldHVybkNvZGUgewogICAgIFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTIzNSw2ICsyMzgs
MTkgQEAgc3RhdGljIHVuc2lnbmVkIHR5cGVkQXJyYXlFbGVtZW50U2l6ZShBcnJheUJ1ZmZlclZp
ZXdTdWJ0YWcgdGFnKQogICAgIH0KIH0KIAorc3RhdGljIFN0cmluZyBjbHVzdGVySURGcm9tR2xv
YmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgaWYgKCFnbG9i
YWxPYmplY3QuaW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdC52bSgpKSkK
KyAgICAgICAgcmV0dXJuIG51bGxTdHJpbmcoKTsKKyAgICBhdXRvIGRvbUdsb2JhbE9iamVjdCA9
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBk
b21HbG9iYWxPYmplY3QtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSA/IGRvbUdsb2JhbE9iamVj
dC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5jbHVzdGVySUQoKSA6IG51bGxTdHJpbmcoKTsK
K30KKworc3RhdGljIFN0cmluZyBjbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdCA/IGNsdXN0ZXJJ
REZyb21HbG9iYWxPYmplY3QoKmdsb2JhbE9iamVjdCkgOiBudWxsU3RyaW5nKCk7Cit9CisKIGVu
dW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2VUYWcgOiB1aW50OF90IHsKICAgICBTUkdCID0g
MAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQpAQCAtMjA2
Miw3ICsyMDc4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RyOwogICAgIH0KIAotICAg
IHN0YXRpYyBEZXNlcmlhbGl6YXRpb25SZXN1bHQgZGVzZXJpYWxpemUoSlNHbG9iYWxPYmplY3Qq
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBWZWN0b3I8c3RkOjpv
cHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKKyAgICBzdGF0aWMg
RGVzZXJpYWxpemF0aW9uUmVzdWx0IGRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcm
IGNsdXN0ZXJJRCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+JiBtZXNzYWdlUG9y
dHMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0
b3JlcwogI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICwg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgZGV0YWNo
ZWRPZmZzY3JlZW5DYW52YXNlcwogI2VuZGlmCkBAIC0yMDc4LDcgKzIwOTQsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBpZiAoIWJ1ZmZlci5zaXplKCkpCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoanNOdWxsKCksIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlOjpVbnNwZWNp
ZmllZEVycm9yKTsKLSAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVzZXJpYWxpemVyKGxleGlj
YWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgbWVzc2FnZVBvcnRzLCBhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXksIGJ1ZmZlciwgYmxvYlVSTHMsIGJsb2JGaWxlUGF0aHMsIHNoYXJlZEJ1ZmZl
cnMsIFdURk1vdmUoYmFja2luZ1N0b3JlcykKKyAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgZGVz
ZXJpYWxpemVyKGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgY2x1c3RlcklELCBt
ZXNzYWdlUG9ydHMsIGFycmF5QnVmZmVyQ29udGVudHNBcnJheSwgYnVmZmVyLCBibG9iVVJMcywg
YmxvYkZpbGVQYXRocywgc2hhcmVkQnVmZmVycywgV1RGTW92ZShiYWNraW5nU3RvcmVzKQogI2lm
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICAgICAsIFdURk1v
dmUoZGV0YWNoZWRPZmZzY3JlZW5DYW52YXNlcykKICNlbmRpZgpAQCAtMjEzNSw3ICsyMTUxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgc2l6ZV90IG1faW5kZXg7CiAgICAgfTsKIAotICAgIENsb25l
RGVzZXJpYWxpemVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4m
IG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRl
bnRzLCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdT
dG9yZXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyCisgICAgQ2xvbmVEZXNlcmlhbGl6
ZXIoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgY2x1c3RlcklELCBjb25zdCBWZWN0b3I8UmVmUHRy
PE1lc3NhZ2VQb3J0Pj4mIG1lc3NhZ2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBh
cnJheUJ1ZmZlckNvbnRlbnRzLCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJpdG1hcEJhY2tp
bmc+PiYmIGJhY2tpbmdTdG9yZXMsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgYnVmZmVyCiAjaWYg
RU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09SS0VSUykKICAgICAgICAgLCBWZWN0b3I8c3Rk
Ojp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVuQ2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVl
bkNhbnZhc2VzID0geyB9CiAjZW5kaWYKQEAgLTIxNTAsNiArMjE2Niw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIDogQ2xvbmVCYXNlKGxleGljYWxHbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9nbG9i
YWxPYmplY3QoZ2xvYmFsT2JqZWN0KQogICAgICAgICAsIG1faXNET01HbG9iYWxPYmplY3QoZ2xv
YmFsT2JqZWN0LT5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgp
KSkKKyAgICAgICAgLCBtX2NsdXN0ZXJJRChjbHVzdGVySUQpCiAgICAgICAgICwgbV9jYW5DcmVh
dGVET01PYmplY3QobV9pc0RPTUdsb2JhbE9iamVjdCAmJiAhZ2xvYmFsT2JqZWN0LT5pbmhlcml0
czxKU0lEQlNlcmlhbGl6YXRpb25HbG9iYWxPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKSkpCiAg
ICAgICAgICwgbV9wdHIoYnVmZmVyLmRhdGEoKSkKICAgICAgICAgLCBtX2VuZChidWZmZXIuZGF0
YSgpICsgYnVmZmVyLnNpemUoKSkKQEAgLTIxNzYsNyArMjE5Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICBtX3ZlcnNpb24gPSAweEZGRkZGRkZGOwogICAgIH0KIAotICAgIENsb25lRGVzZXJp
YWxpemVyKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4mIG1lc3Nh
Z2VQb3J0cywgQXJyYXlCdWZmZXJDb250ZW50c0FycmF5KiBhcnJheUJ1ZmZlckNvbnRlbnRzLCBj
b25zdCBWZWN0b3I8dWludDhfdD4mIGJ1ZmZlciwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JV
UkxzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiBibG9iRmlsZVBhdGhzLCBBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkqIHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPEltYWdlQml0bWFw
QmFja2luZz4+JiYgYmFja2luZ1N0b3JlcworICAgIENsb25lRGVzZXJpYWxpemVyKEpTR2xvYmFs
T2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBjb25zdCBTdHJpbmcmIGNsdXN0ZXJJRCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+JiBtZXNzYWdlUG9ydHMsIEFycmF5QnVmZmVyQ29udGVudHNBcnJheSogYXJyYXlCdWZmZXJD
b250ZW50cywgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBidWZmZXIsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBibG9iVVJMcywgY29uc3QgVmVjdG9yPFN0cmluZz4gYmxvYkZpbGVQYXRocywgQXJyYXlC
dWZmZXJDb250ZW50c0FycmF5KiBzaGFyZWRCdWZmZXJzLCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJ
bWFnZUJpdG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKICNpZiBFTkFCTEUoT0ZGU0NSRUVO
X0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRPZmZzY3JlZW5DYW52YXM+PiYmIGRldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMKICNlbmRp
ZgpAQCAtMjE5MSw2ICsyMjA4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgOiBDbG9uZUJhc2UobGV4
aWNhbEdsb2JhbE9iamVjdCkKICAgICAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3Qp
CiAgICAgICAgICwgbV9pc0RPTUdsb2JhbE9iamVjdChnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpT
RE9NR2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3QtPnZtKCkpKQorICAgICAgICAsIG1fY2x1c3Rl
cklEKGNsdXN0ZXJJRCkKICAgICAgICAgLCBtX2NhbkNyZWF0ZURPTU9iamVjdChtX2lzRE9NR2xv
YmFsT2JqZWN0ICYmICFnbG9iYWxPYmplY3QtPmluaGVyaXRzPEpTSURCU2VyaWFsaXphdGlvbkds
b2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpKSkKICAgICAgICAgLCBtX3B0cihidWZmZXIu
ZGF0YSgpKQogICAgICAgICAsIG1fZW5kKGJ1ZmZlci5kYXRhKCkgKyBidWZmZXIuc2l6ZSgpKQpA
QCAtMzUwMCw3ICszNTE4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBXYXNtTW9kdWxlVGFn
OiB7CiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleDsKICAgICAgICAgICAgIGJvb2wgaW5kZXhT
dWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7Ci0gICAgICAgICAgICBpZiAoIWluZGV4U3Vj
Y2Vzc2Z1bGx5UmVhZCB8fCAhbV93YXNtTW9kdWxlcyB8fCBpbmRleCA+PSBtX3dhc21Nb2R1bGVz
LT5zaXplKCkpIHsKKyAgICAgICAgICAgIGlmICghaW5kZXhTdWNjZXNzZnVsbHlSZWFkIHx8ICFt
X3dhc21Nb2R1bGVzIHx8IGluZGV4ID49IG1fd2FzbU1vZHVsZXMtPnNpemUoKSB8fCBtX2NsdXN0
ZXJJRCAhPSBjbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KG1fZ2xvYmFsT2JqZWN0KSkgewogICAg
ICAgICAgICAgICAgIGZhaWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwog
ICAgICAgICAgICAgfQpAQCAtMzUxNiw3ICszNTM0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2Fz
ZSBXYXNtTWVtb3J5VGFnOiB7CiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleDsKICAgICAgICAg
ICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7Ci0gICAgICAgICAg
ICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCAhbV93YXNtTWVtb3J5SGFuZGxlcyB8fCBp
bmRleCA+PSBtX3dhc21NZW1vcnlIYW5kbGVzLT5zaXplKCkpIHsKKyAgICAgICAgICAgIGlmICgh
aW5kZXhTdWNjZXNzZnVsbHlSZWFkIHx8ICFtX3dhc21NZW1vcnlIYW5kbGVzIHx8IGluZGV4ID49
IG1fd2FzbU1lbW9yeUhhbmRsZXMtPnNpemUoKSB8fCBtX2NsdXN0ZXJJRCAhPSBjbHVzdGVySURG
cm9tR2xvYmFsT2JqZWN0KG1fZ2xvYmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGZhaWwo
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICAgICAgfQpAQCAt
MzYwOCw3ICszNjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEpT
VmFsdWUgY3J5cHRvS2V5OwogICAgICAgICAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+
IGR1bW15TWVzc2FnZVBvcnRzOwotICAgICAgICAgICAgQ2xvbmVEZXNlcmlhbGl6ZXIgcmF3S2V5
RGVzZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVjdCwgbV9nbG9iYWxPYmplY3QsIGR1bW15
TWVzc2FnZVBvcnRzLCBudWxscHRyLCB7IH0sIHNlcmlhbGl6ZWRLZXkpOworICAgICAgICAgICAg
Q2xvbmVEZXNlcmlhbGl6ZXIgcmF3S2V5RGVzZXJpYWxpemVyKG1fbGV4aWNhbEdsb2JhbE9iamVj
dCwgbV9nbG9iYWxPYmplY3QsIG1fY2x1c3RlcklELCBkdW1teU1lc3NhZ2VQb3J0cywgbnVsbHB0
ciwgeyB9LCBzZXJpYWxpemVkS2V5KTsKICAgICAgICAgICAgIGlmICghcmF3S2V5RGVzZXJpYWxp
emVyLnJlYWRDcnlwdG9LZXkoY3J5cHRvS2V5KSkgewogICAgICAgICAgICAgICAgIGZhaWwoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpAQCAtMzY2OCw2ICszNjg2LDcgQEAg
cHJpdmF0ZToKIAogICAgIEpTR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsKICAgICBib29s
IG1faXNET01HbG9iYWxPYmplY3Q7CisgICAgU3RyaW5nIG1fY2x1c3RlcklEOwogICAgIGJvb2wg
bV9jYW5DcmVhdGVET01PYmplY3Q7CiAgICAgY29uc3QgdWludDhfdCogbV9wdHI7CiAgICAgY29u
c3QgdWludDhfdCogbV9lbmQ7CkBAIC0zODk1LDE4ICszOTE0LDI5IEBAIGVycm9yOgogCiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAK
K3N0YXRpYyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OklkZW50aWZpZXIgZ2VuZXJhdGVJZGVudGlm
aWVyKCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBQcm9jZXNzOjppZGVudGlmaWVyKCksCisg
ICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6SWRlbnRpZmllcjo6VmFsdWVJZGVudGlmaWVy
OjpnZW5lcmF0ZVRocmVhZFNhZmUoKQorICAgIH07Cit9CisKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICA6
IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVu
dGlmaWVyKCkpCisgICAgLCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogewogICAgIG1fbWVtb3J5
Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKElkZW50aWZp
ZXIgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBjbHVzdGVySUQsIFZlY3Rvcjx1aW50OF90PiYm
IGJ1ZmZlciwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJiBhcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXkKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmIGRldGFjaGVkUlRD
RGF0YUNoYW5uZWxzCiAjZW5kaWYKICAgICAgICAgKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVm
ZmVyKSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9jbHVzdGVySUQo
Y2x1c3RlcklEKQorICAgICwgbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fYXJyYXlC
dWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkKICNp
ZiBFTkFCTEUoV0VCX1JUQykKICAgICAsIG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMoV1RGTW92
ZShkZXRhY2hlZFJUQ0RhdGFDaGFubmVscykpCkBAIC0zOTE1LDcgKzM5NDUsNyBAQCBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBi
dWZmZXIsIHN0ZDo6dW5pcQogICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7
CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rv
cjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFu
ZGxlcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5
PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3RkOjpvcHRpb25hbDxJbWFnZUJp
dG1hcEJhY2tpbmc+PiYmIGJhY2tpbmdTdG9yZXMKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0cmluZyYgY2x1c3RlcklELCBWZWN0b3I8dWludDhf
dD4mJiBidWZmZXIsIGNvbnN0IFZlY3RvcjxCbG9iVVJMSGFuZGxlPiYgYmxvYkhhbmRsZXMsIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVk
QnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNr
aW5nPj4mJiBiYWNraW5nU3RvcmVzCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVNfSU5fV09S
S0VSUykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkT2Zmc2NyZWVu
Q2FudmFzPj4mJiBkZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzCiAjZW5kaWYKQEAgLTM5MjcsNyAr
Mzk1Nyw5IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZl
Y3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAgICAgICAgICwgc3RkOjp1bmlxdWVf
cHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1lbW9yeUhhbmRsZXNBcnJheQogI2VuZGlm
CiAgICAgICAgICkKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50
aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAgLCBtX2NsdXN0ZXJJRChjbHVzdGVySUQp
CisgICAgLCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9zaGFy
ZWRCdWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSkp
CiAgICAgLCBtX2JhY2tpbmdTdG9yZXMoV1RGTW92ZShiYWNraW5nU3RvcmVzKSkKQEAgLTQxMDQs
NyArNDEzNiw5IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6Y3JlYXRlKEpTR2xvYmFsT2JqZWN0JiBsZXhpCiAgICAgaWYgKGNvZGUgIT0gU2Vy
aWFsaXphdGlvblJldHVybkNvZGU6OlN1Y2Nlc3NmdWxseUNvbXBsZXRlZCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoV1RGTW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVsbHB0ciwgbnVsbHB0ciwgeyB9
KSk7CisgICAgYXV0byBjbHVzdGVySUQgPSBjbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KGxleGlj
YWxHbG9iYWxPYmplY3QpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNj
cmlwdFZhbHVlKGNsdXN0ZXJJRCwgV1RGTW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgbnVsbHB0
ciwgbnVsbHB0ciwgeyB9KSk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRhaW5zRHVwbGljYXRlcyhj
b25zdCBWZWN0b3I8UmVmUHRyPEltYWdlQml0bWFwPj4mIGltYWdlQml0bWFwcykKQEAgLTQyNTYs
NyArNDI5MCw4IEBAIEV4Y2VwdGlvbk9yPFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+PiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShKU0dsb2JhbE9iCiAgICAgICAgIGRldGFjaGVkUlRD
RGF0YUNoYW5uZWxzLmFwcGVuZChjaGFubmVsLT5kZXRhY2goKSk7CiAjZW5kaWYKIAotICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShXVEZNb3ZlKGJ1ZmZlciks
IGJsb2JIYW5kbGVzLCBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkucmVsZWFzZVJldHVyblZhbHVl
KCksIGNvbnRleHQgPT0gU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlID8g
V1RGTW92ZShzaGFyZWRCdWZmZXJzKSA6IG51bGxwdHIsIFdURk1vdmUoYmFja2luZ1N0b3JlcykK
KyAgICBhdXRvIGNsdXN0ZXJJRCA9IGNsdXN0ZXJJREZyb21HbG9iYWxPYmplY3QobGV4aWNhbEds
b2JhbE9iamVjdCk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZh
bHVlKGNsdXN0ZXJJRCwgV1RGTW92ZShidWZmZXIpLCBibG9iSGFuZGxlcywgYXJyYXlCdWZmZXJD
b250ZW50c0FycmF5LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjb250ZXh0ID09IFNlcmlhbGl6YXRp
b25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSA/IFdURk1vdmUoc2hhcmVkQnVmZmVycykgOiBu
dWxscHRyLCBXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpCiAjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVNfSU5fV09SS0VSUykKICAgICAgICAgICAgICAgICAsIFdURk1vdmUoZGV0YWNoZWRDYW52YXNl
cykKICNlbmRpZgpAQCAtNDMxNiw3ICs0MzUxLDcgQEAgSlNWYWx1ZSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OmRlc2VyaWFsaXplKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LAog
CiBKU1ZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVzZXJpYWxpemUoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiYgbWVzc2FnZVBvcnRzLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgYmxvYlVSTHMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBibG9iRmlsZVBhdGhz
LCBTZXJpYWxpemF0aW9uRXJyb3JNb2RlIHRocm93RXhjZXB0aW9ucykKIHsKLSAgICBEZXNlcmlh
bGl6YXRpb25SZXN1bHQgcmVzdWx0ID0gQ2xvbmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIG1lc3NhZ2VQb3J0cywgV1RGTW92ZSht
X2JhY2tpbmdTdG9yZXMpCisgICAgRGVzZXJpYWxpemF0aW9uUmVzdWx0IHJlc3VsdCA9IENsb25l
RGVzZXJpYWxpemVyOjpkZXNlcmlhbGl6ZSgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LCBtX2NsdXN0ZXJJRCwgbWVzc2FnZVBvcnRzLCBXVEZNb3ZlKG1fYmFja2luZ1N0b3JlcykK
ICNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBU19JTl9XT1JLRVJTKQogICAgICAgICAsIFdURk1v
dmUobV9kZXRhY2hlZE9mZnNjcmVlbkNhbnZhc2VzKQogI2VuZGlmCkBAIC00NDEyLDQgKzQ0NDcs
NDMgQEAgSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0ZUJsb2JzVG9EaXNrRm9y
SW5kZXhlZERCU3luY2hyb25vdXNseSgpCiAgICAgcmV0dXJuIHZhbHVlOwogfQogCithdXRvIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbigpIC0+IENhY2hlJgoreworICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYWNoZT4gY2FjaGU7CisgICAgcmV0dXJuIGNhY2hlOwor
fQorCitTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZSgpID0gZGVmYXVsdDsKK1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6On5DYWNoZSgpID0gZGVmYXVsdDsKKworU2VyaWFs
aXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWU6OkNhY2hlZFZhbHVlKFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgdmFsdWUpCisgICAgOiBtX2V4cGlyYXRpb25UaW1lcigq
dGhpcywgJkNhY2hlZFZhbHVlOjpleHBpcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fdmFsdWUo
V1RGTW92ZSh2YWx1ZSkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2V4
cGlyYXRpb25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkU2VyaWFsaXplZFNjcmlwdFZhbHVlTGlm
ZXRpbWUpOworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OmFkZChSZWZQ
dHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fdmFsdWVzLmFkZChzZXJpYWxpemVkU2Ny
aXB0VmFsdWUtPmlkZW50aWZpZXIoKSwgbWFrZVVuaXF1ZTxDYWNoZWRWYWx1ZT4oV1RGTW92ZShz
ZXJpYWxpemVkU2NyaXB0VmFsdWUpKSk7Cit9CisKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OnRha2UoSWRlbnRpZmllciBpZGVudGlm
aWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byBjYWNoZWRWYWx1
ZSA9IG1fdmFsdWVzLnRha2UoaWRlbnRpZmllcik7CisgICAgcmV0dXJuIGNhY2hlZFZhbHVlID8g
Y2FjaGVkVmFsdWUtPnRha2VWYWx1ZSgpIDogbnVsbHB0cjsKK30KKwordm9pZCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQor
eworICAgIGlmICghbV92YWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZW1vdmVk
VmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFrZShtX3ZhbHVlLT5pZGVudGlmaWVyKCkpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFZhbHVlLCByZW1vdmVkVmFsdWUpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNi4uYTEyNjBiMGNjY2VkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWUuaApAQCAtMjksMTIgKzI5LDE2IEBACiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRl
dGFjaGVkUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1
ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25nLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvR2lnYWNhZ2Uu
aD4KKyNpbmNsdWRlIDx3dGYvT2JqZWN0SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpT
Q29udGV4dFJlZjsKQEAgLTExNSwxNSArMTE5LDIwIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVf
RVhQT1JUIH5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKTsKIAorICAgIHVzaW5nIElkZW50aWZpZXIg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyOworCisgICAgSWRlbnRpZmllciBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29uc3QgU3RyaW5n
JiBjbHVzdGVySUQoKSBjb25zdCB7IHJldHVybiBtX2NsdXN0ZXJJRDsgfQorCiBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQg
Y2hhcj4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5PiYmCisgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKElkZW50aWZp
ZXIsIGNvbnN0IFN0cmluZyYgY2x1c3RlcklELCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgogI2lmIEVOQUJMRShXRUJf
UlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hh
bm5lbD4+JiYKICNlbmRpZgogICAgICAgICApOwogCi0gICAgU2VyaWFsaXplZFNjcmlwdFZhbHVl
KFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBjb25zdCBWZWN0b3I8QmxvYlVSTEhhbmRsZT4mIGJs
b2JIYW5kbGVzLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Piwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVkQnVmZmVycywgVmVj
dG9yPHN0ZDo6b3B0aW9uYWw8SW1hZ2VCaXRtYXBCYWNraW5nPj4mJiBiYWNraW5nU3RvcmVzCisg
ICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlKGNvbnN0IFN0cmluZyYgY2x1c3RlcklELCBWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJiwgY29uc3QgVmVjdG9yPEJsb2JVUkxIYW5kbGU+JiBibG9iSGFuZGxl
cywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4sIHN0ZDo6dW5pcXVl
X3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IHNoYXJlZEJ1ZmZlcnMsIFZlY3RvcjxzdGQ6
Om9wdGlvbmFsPEltYWdlQml0bWFwQmFja2luZz4+JiYgYmFja2luZ1N0b3JlcwogI2lmIEVOQUJM
RShPRkZTQ1JFRU5fQ0FOVkFTX0lOX1dPUktFUlMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxEZXRhY2hlZE9mZnNjcmVlbkNhbnZhcz4+JiYgPSB7IH0KICNlbmRpZgpAQCAtMTM2
LDggKzE0NSwzOCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICk7CiAKKyAgICBjbGFzcyBD
YWNoZSB7CisgICAgcHVibGljOgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2FjaGUm
IHNpbmdsZXRvbigpOworICAgICAgICB+Q2FjaGUoKTsKKworICAgICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGFkZChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICAgICAgV0VC
Q09SRV9FWFBPUlQgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdGFrZShJZGVudGlmaWVy
KTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxD
YWNoZT47CisgICAgICAgIENhY2hlKCk7CisKKyAgICAgICAgY2xhc3MgQ2FjaGVkVmFsdWUgewor
ICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgICAgIHB1YmxpYzoKKyAg
ICAgICAgICAgIENhY2hlZFZhbHVlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOwor
ICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdGFrZVZhbHVlKCkgeyBy
ZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZhbHVlLCBudWxscHRyKTsgfQorCisgICAgICAgIHByaXZh
dGU6CisgICAgICAgICAgICB2b2lkIGV4cGlyYXRpb25UaW1lckZpcmVkKCk7CisKKyAgICAgICAg
ICAgIFRpbWVyIG1fZXhwaXJhdGlvblRpbWVyOworICAgICAgICAgICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbV92YWx1ZTsKKyAgICAgICAgfTsKKworICAgICAgICBIYXNoTWFwPElk
ZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRWYWx1ZT4+IG1fdmFsdWVzOworICAgIH07
CisKICAgICBzaXplX3QgY29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdDsKIAorICAgIElkZW50aWZp
ZXIgbV9pZGVudGlmaWVyOworICAgIFN0cmluZyBtX2NsdXN0ZXJJRDsKICAgICBWZWN0b3I8dW5z
aWduZWQgY2hhcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheTsK
QEAgLTE3Nyw2ICsyMTYsMTAgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGZvciAoY29uc3QgYXV0byAmY2hhbm5lbCA6IG1f
ZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCiAgICAgICAgIGVuY29kZXIgPDwgKmNoYW5uZWw7CiAj
ZW5kaWYKKworICAgIENhY2hlOjpzaW5nbGV0b24oKS5hZGQoY29uc3RfY2FzdDxTZXJpYWxpemVk
U2NyaXB0VmFsdWUqPih0aGlzKSk7CisgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CisgICAg
ZW5jb2RlciA8PCBtX2NsdXN0ZXJJRDsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAg
LTIzMCwxMiArMjczLDI0IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogI2VuZGlmCiAK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShk
YXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCisgICAgSWRlbnRpZmllciBp
ZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgU3RyaW5nIGNsdXN0ZXJJRDsKKyAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKGNsdXN0ZXJJRCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8g
V2UgYXJlIG5vdCBhYmxlIHRvIHNlcmlhbGl6ZSB0aGluZ3MgbGlrZSBXQVNNIG1vZHVsZXMgc28g
cmV1c2UgdGhlIGV4aXN0aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpZiBzdGlsbCBhbGl2ZQor
ICAgIC8vIHVwb24gZGVzZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIGEgbmV3
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIGRlc2VyaWFsaXplZCBkYXRhLgorICAgIGlmIChh
dXRvIGV4aXN0aW5nVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFrZShpZGVudGlmaWVyKSkK
KyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVmFsdWUucmVsZWFzZU5vbk51bGwoKTsKKworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShpZGVudGlmaWVyLCBjbHVz
dGVySUQsIFdURk1vdmUoZGF0YSksIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KQog
I2lmIEVOQUJMRShXRUJfUlRDKQogICAgICAgICAsIFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hh
bm5lbHMpCiAjZW5kaWYKICAgICAgICAgKSk7CiB9CiAKLQotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uZmQzM2JmNjEyZWZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCkBAIC0wLDAg
KzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJQcm9jZXNzSWRlbnRpZmllci5oIgorI2luY2x1
ZGUgPHd0Zi9IYXNoZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciB7CisgICAgUHJvY2Vzc0lkZW50aWZpZXIgcHJvY2Vz
c0lkZW50aWZpZXI7CisKKyAgICBlbnVtIFZhbHVlSWRlbnRpZmllclR5cGUgeyB9OworICAgIHVz
aW5nIFZhbHVlSWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8VmFsdWVJZGVudGlmaWVyVHlw
ZT47CisgICAgVmFsdWVJZGVudGlmaWVyIHZhbHVlSWRlbnRpZmllcjsKKworICAgIHVuc2lnbmVk
IGhhc2goKSBjb25zdCB7IHJldHVybiBjb21wdXRlSGFzaChwcm9jZXNzSWRlbnRpZmllci50b1VJ
bnQ2NCgpLCB2YWx1ZUlkZW50aWZpZXIudG9VSW50NjQoKSk7IH0KKworICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
ZGVudGlmaWVyPiBkZWNvZGUoRGVjb2RlciYpOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBhLCBjb25zdCBTZXJpYWxp
emVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBiKQoreworICAgIHJldHVybiBhLnByb2Nlc3NJZGVu
dGlmaWVyID09IGIucHJvY2Vzc0lkZW50aWZpZXIgJiYgYS52YWx1ZUlkZW50aWZpZXIgPT0gYi52
YWx1ZUlkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAoreworICAgIGVuY29kZXIgPDwgcHJvY2Vzc0lkZW50aWZpZXIgPDwgdmFsdWVJZGVudGlmaWVy
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxTZXJpYWxpemVk
U2NyaXB0VmFsdWVJZGVudGlmaWVyPiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFByb2Nlc3NJZGVu
dGlmaWVyPiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHByb2Nlc3NJZGVudGlm
aWVyOworICAgIGlmICghcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFZhbHVlSWRlbnRpZmllcj4gdmFsdWVJZGVudGlm
aWVyOworICAgIGRlY29kZXIgPj4gdmFsdWVJZGVudGlmaWVyOworICAgIGlmICghdmFsdWVJZGVu
dGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeyAq
cHJvY2Vzc0lkZW50aWZpZXIsICp2YWx1ZUlkZW50aWZpZXIgfSB9OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgeworCitzdHJ1Y3QgU2VyaWFsaXplZFNjcmlw
dFZhbHVlSWRlbnRpZmllckhhc2ggeworICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFdl
YkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGtleSkgeyByZXR1cm4ga2V5
Lmhhc2goKTsgfQorICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGEsIGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUlkZW50aWZpZXImIGIpIHsgcmV0dXJuIGEgPT0gYjsgfQorICAgIHN0YXRpYyBjb25z
dCBib29sIHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKK307CisKK3RlbXBs
YXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRl
bnRpZmllcj4gOiBHZW5lcmljSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyPiB7CisgICAgc3RhdGljIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUlkZW50aWZpZXIgZW1wdHlWYWx1ZSgpIHsgcmV0dXJuIHsgfTsgfQorCisgICAgc3RhdGljIHZv
aWQgY29uc3RydWN0RGVsZXRlZFZhbHVlKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlk
ZW50aWZpZXImIHNsb3QpIHsgbmV3IChOb3ROdWxsLCAmc2xvdC5wcm9jZXNzSWRlbnRpZmllcikg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWUpOyB9
CisgICAgc3RhdGljIGJvb2wgaXNEZWxldGVkVmFsdWUoY29uc3QgV2ViQ29yZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgc2xvdCkgeyByZXR1cm4gc2xvdC5wcm9jZXNzSWRlbnRp
Zmllci5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyPiA6
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXJIYXNoIHsgfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCBjMWM1ZGM5ODZhY2IuLjkw
Zjk1YjljOTk5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0xMzksNyArMTM5
LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNDOjpKU1ZhCiAgICAgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5
KCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7Ci0gICAgYXV0byBt
ZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdl
VmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzKTsKKworICAgIC8vIEZJWE1F
OiBBdCB0aGUgdGltZSBvZiBzZXJpYWxpemF0aW9uLCB3ZSBkb24ndCBrbm93IGlmIHRoZSB0YXJn
ZXQgaXMgYSB3aW5kb3csIGEgd29ya2VyIG9yIHNvbWV0aGluZyBlbHNlLiBXZSB3aWxsIG9ubHkg
a25vdyBhdCB0aGUgdGltZSBvZgorICAgIC8vIGRlc2VyaWFsaXphdGlvbi4gVGhpcyBpcyBhbiBp
c3N1ZSBzaW5jZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpIHdpbGwgcmV0dXJuIGFu
IGV4Y2VwdGlvbiBpZiBXYXNtIG1vZHVsZXMgLyBtZW1vcnkgaGFuZGxlcyBhcmUgcHJlc2VudCBh
bmQgdGhlIGNvbnRleHQKKyAgICAvLyBpcyBub3QgV29ya2VyUG9zdE1lc3NhZ2UuCisgICAgYXV0
byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNz
YWdlVmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9u
Q29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOwogICAgIGlmIChtZXNzYWdlRGF0YS5oYXNFeGNl
cHRpb24oKSkKICAgICAgICAgcmV0dXJuIG1lc3NhZ2VEYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCmluZGV4
IGJhZTkxMTIyZjNkMC4uMDEyMzExZWRmZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiTmF2
aWdhdG9yLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlB1YmxpY1VSTE1hbmFnZXIu
aCIKKyNpbmNsdWRlICJQcm9jZXNzSWRlbnRpZmllci5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJv
bWlzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJT
V0NsaWVudENvbm5lY3Rpb24uaCIKQEAgLTc3LDYgKzc4LDcgQEAKICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKQEAgLTYzNSw0
ICs2MzcsMTAgQEAgYm9vbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Ojpwb3N0VGFza1RvKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyIGlkZW50aWYKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorU3RyaW5nIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNsdXN0ZXJJRCgpIGNvbnN0Cit7Cisg
ICAgYm9vbCBpc1NlcnZpY2VXb3JrZXIgPSBpczxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCp0
aGlzKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgIi0iLCBpc1NlcnZpY2VXb3JrZXIgPyAic3ciIDogIm5vbnN3Iik7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRF
eGVjdXRpb25Db250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCmluZGV4IGQ0YmI4ZTE5YWU3OC4uZWY1NWFhZDNiMzFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTI3Niw2ICsyNzYsNyBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJvb2wgcG9zdFRhc2tUbyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0SWRlbnRpZmllciwgVGFzayYmKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRJZGVudGlmaWVyIGNvbnRleHRJZGVudGlmaWVyKCkgY29uc3Q7CisgICAgU3RyaW5nIGNs
dXN0ZXJJRCgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgY2xhc3MgQWRkQ29uc29sZU1lc3Nh
Z2VUYXNrIDogcHVibGljIFRhc2sgewo=
</data>
<flag name="commit-queue"
          id="458716"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435820</attachid>
            <date>2021-08-18 17:18:06 -0700</date>
            <delta_ts>2021-08-19 08:25:04 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>220038_postMessage_WASM_Module2_wip.patch</filename>
            <type>text/plain</type>
            <size>23653</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3Mt
ZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNi4uMGFjZTFlNmY2MjkzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFs
aXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9z
ZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3Rl
ZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRl
ZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlIHBy
b21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkRhdGFD
bG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIKK1BBU1MgcG9zdE1lc3Nh
Z2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVt
IHRvIGluc3RhbnRpYXRlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2ZDRjMS4uOWQx
MmI0ZGUyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5MCw2ICsyOTAsNyBAQCBzZXQoV2Vi
Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgYmluZGluZ3MvanMvU2NyaXB0V3Jh
cHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFwcGFibGVJbmxpbmVzLmgKICAgICBi
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAorICAgIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaAogICAgIGJpbmRpbmdzL2pzL1N0cmluZ0FkYXB0
b3JzLmgKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3BlcmF0aW9ucy5oCiAgICAgYmluZGlu
Z3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4NGM3ZGVmNzZiN2EuLjNi
NGFiNGNjOGRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTI4NSw2ICsxMjg1LDcgQEAKIAkJNDY3MkFBOTgyNkIwOTQzMzAw
RTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzJBQTk2MjZCMDk0MjEwMEU2RUMzOCAvKiBD
cm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENyb3NzT3Jp
Z2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xp
Y3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0
NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudElu
Y3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3Vu
dEluY3JlbWVudGVyLmggKi87IH07CisJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVCRiAvKiBTZXJp
YWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwNjAwQzI2Q0RBOEE1MDBBMUE1QkYgLyogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4
MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyog
RE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlE
MDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODI5NCw2ICs4Mjk1LDcgQEAKIAkJNDY3MkFB
OTYyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQ
b2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8q
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVC
IC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yNzAxOCw2ICsyNzAyMCw3IEBACiAJCQkJMTQwMEQ3QTcxNzEzNkVBNzAw
NzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVFNDk3NTEwNzUy
QUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJCQlBNzVFNDk3
NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJCQkJNDY4
MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIu
aCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAwRjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAq
LywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAq
LywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi8s
CkBAIC0zMzk1OSw2ICszMzk2Miw3IEBACiAJCQkJOTM1QzQ3NjkwOUFDNEQ0MzAwQTZBQUI0IC8q
IFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU5ODkwNTgxNEU5QzI5
OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNF
QzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2NyZWVuLmggaW4gSGVhZGVycyAqLywK
KwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRl
bnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDUxNkMwM0MwODAwMzMxNkJEIC8q
IFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQky
OTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNWb2ljZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0MwRTAwMzMxNkJEIC8qIFBsYXRmb3Jt
U3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IDkxNmQzM2Q5ZGU3NC4uMzdm
Y2Q3NmRlMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCkBAIC00Niw5ICs0NiwxMSBAQAogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2lu
ZG93LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV29y
a2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNs
dWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxvYWRlci5oIgorI2luY2x1ZGUgIlNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZWRDbG9uZS5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxT
Y29wZS5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNVHJh
cHNJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2FzbVN0cmVhbWluZ0NvbXBp
bGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAtNTQ4LDYgKzU1MSwxOSBAQCBKU0M6
OkpTT2JqZWN0KiBKU0RPTUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0
YVByb3BlcnRpZXMoSlNDOjpKUwogICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9i
YWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVy
ZSgpKTsKIH0KIAorU3RyaW5nIEpTRE9NR2xvYmFsT2JqZWN0OjpkZWZhdWx0QWdlbnRDbHVzdGVy
SUQoKQoreworICAgIHJldHVybiBtYWtlU3RyaW5nKFByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJ
bnQ2NCgpLCAiLWRlZmF1bHQiKTsKK30KKworU3RyaW5nIEpTRE9NR2xvYmFsT2JqZWN0OjphZ2Vu
dENsdXN0ZXJJRCgpIGNvbnN0Cit7CisgICAgLy8gU2VydmljZSB3b3JrZXJzIG1heSBydW4gaW4g
cHJvY2VzcyBidXQgdGhleSBuZWVkIHRvIGJlIGluIGEgc2VwYXJhdGUgYWdlbnQgY2x1c3Rlci4K
KyAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhQcm9jZXNzOjppZGVudGlmaWVyKCku
dG9VSW50NjQoKSwgIi1zZXJ2aWNld29ya2VyIik7CisgICAgcmV0dXJuIGRlZmF1bHRBZ2VudENs
dXN0ZXJJRCgpOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RPTUdsb2JhbE9iamVjdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01XcmFwcGVyV29ybGQmIHdvcmxkKQog
ewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBmOTIzNWQ2YjE2MzkuLjAyOGVmNDY5
ZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5oCkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgU3RyaW5nIGFnZW50Q2x1c3Rl
cklEKCkgY29uc3Q7CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QWdlbnRDbHVzdGVySUQoKTsK
KwogICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDUwNDc4NWM5NmQ4Zi4uMzIzZTg1MjExMjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTU4LDYgKzU4LDcg
QEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgog
I2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQmlnSW50T2JqZWN0Lmg+CkBA
IC04OSw3ICs5MCw5IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9y
ZS5oPgpAQCAtMTEwLDcgKzExMyw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIERFRklORV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIAot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKK2Nv
bnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0gNDAwMDA7Citjb25zdGV4
cHIgU2Vjb25kcyBjYWNoZWRTZXJpYWxpemVkU2NyaXB0VmFsdWVMaWZldGltZSB7IDMwX3MgfTsK
IAogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgU3VjY2Vzc2Z1bGx5
Q29tcGxldGVkLApAQCAtMjM1LDYgKzIzOSwxMyBAQCBzdGF0aWMgdW5zaWduZWQgdHlwZWRBcnJh
eUVsZW1lbnRTaXplKEFycmF5QnVmZmVyVmlld1N1YnRhZyB0YWcpCiAgICAgfQogfQogCitzdGF0
aWMgU3RyaW5nIGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdChKU0dsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQoreworICAgIGlmICghZ2xvYmFsT2JqZWN0LmluaGVyaXRzPEpTRE9NR2xv
YmFsT2JqZWN0PihnbG9iYWxPYmplY3Qudm0oKSkpCisgICAgICAgIHJldHVybiBKU0RPTUdsb2Jh
bE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklEKCk7CisgICAgcmV0dXJuIGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5hZ2VudENsdXN0ZXJJRCgpOworfQorCiBl
bnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlVGFnIDogdWludDhfdCB7CiAgICAgU1JHQiA9
IDAKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKQEAgLTMy
Miw3ICszMzMsNyBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VC
aXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFz
dE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1h
Z2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBDdXJyZW50VmVyc2lvbiA9IDg7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNp
b24gPSA5Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZG
Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ1Bvb2xUYWcgPSAweEZGRkZGRkZFOwogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIE5vbkluZGV4UHJvcGVydGllc1RhZyA9IDB4RkZGRkZGRkQ7CkBA
IC0xMzQ4LDYgKzEzNTksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVpbnQzMl90IGlu
ZGV4ID0gbV93YXNtTW9kdWxlcy5zaXplKCk7IAogICAgICAgICAgICAgICAgIG1fd2FzbU1vZHVs
ZXMuYXBwZW5kKG1ha2VSZWYobW9kdWxlLT5tb2R1bGUoKSkpOwogICAgICAgICAgICAgICAgIHdy
aXRlKFdhc21Nb2R1bGVUYWcpOworICAgICAgICAgICAgICAgIHdyaXRlKGFnZW50Q2x1c3RlcklE
RnJvbUdsb2JhbE9iamVjdCgqbV9sZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAg
ICAgd3JpdGUoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQpAQCAtMTM2Myw2ICsxMzc1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1aW50
MzJfdCBpbmRleCA9IG1fd2FzbU1lbW9yeUhhbmRsZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAg
IG1fd2FzbU1lbW9yeUhhbmRsZXMuYXBwZW5kKG1ha2VSZWYobWVtb3J5LT5tZW1vcnkoKS5oYW5k
bGUoKSkpOwogICAgICAgICAgICAgICAgIHdyaXRlKFdhc21NZW1vcnlUYWcpOworICAgICAgICAg
ICAgICAgIHdyaXRlKGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9sZXhpY2FsR2xv
YmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMzQ5OCw2ICszNTExLDE1IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGNhc2Ug
V2FzbU1vZHVsZVRhZzogeworICAgICAgICAgICAgaWYgKG1fdmVyc2lvbiA+PSA5KSB7CisgICAg
ICAgICAgICAgICAgLy8gaHR0cHM6Ly93ZWJhc3NlbWJseS5naXRodWIuaW8vc3BlYy93ZWItYXBp
L2luZGV4Lmh0bWwjc2VyaWFsaXphdGlvbgorICAgICAgICAgICAgICAgIENhY2hlZFN0cmluZ1Jl
ZiBhZ2VudENsdXN0ZXJJRDsKKyAgICAgICAgICAgICAgICBib29sIGFnZW50Q2x1c3RlcklEU3Vj
Y2Vzc2Z1bGx5UmVhZCA9IHJlYWRTdHJpbmdEYXRhKGFnZW50Q2x1c3RlcklEKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWFnZW50Q2x1c3RlcklEU3VjY2Vzc2Z1bGx5UmVhZCB8fCBhZ2VudENsdXN0
ZXJJRC0+c3RyaW5nKCkgIT0gYWdlbnRDbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KCptX2dsb2Jh
bE9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4OwogICAgICAgICAgICAgYm9vbCBpbmRleFN1Y2Nl
c3NmdWxseVJlYWQgPSByZWFkKGluZGV4KTsKICAgICAgICAgICAgIGlmICghaW5kZXhTdWNjZXNz
ZnVsbHlSZWFkIHx8ICFtX3dhc21Nb2R1bGVzIHx8IGluZGV4ID49IG1fd2FzbU1vZHVsZXMtPnNp
emUoKSkgewpAQCAtMzUxNCw2ICszNTM2LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2FzbU1lbW9yeVRhZzogeworICAg
ICAgICAgICAgaWYgKG1fdmVyc2lvbiA+PSA5KSB7CisgICAgICAgICAgICAgICAgQ2FjaGVkU3Ry
aW5nUmVmIGFnZW50Q2x1c3RlcklEOworICAgICAgICAgICAgICAgIGJvb2wgYWdlbnRDbHVzdGVy
SURTdWNjZXNzZnVsbHlSZWFkID0gcmVhZFN0cmluZ0RhdGEoYWdlbnRDbHVzdGVySUQpOworICAg
ICAgICAgICAgICAgIGlmICghYWdlbnRDbHVzdGVySURTdWNjZXNzZnVsbHlSZWFkIHx8IGFnZW50
Q2x1c3RlcklELT5zdHJpbmcoKSAhPSBhZ2VudENsdXN0ZXJJREZyb21HbG9iYWxPYmplY3QoKm1f
Z2xvYmFsT2JqZWN0KSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQogICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CiAgICAgICAgICAgICBib29sIGluZGV4
U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpbmRleFN1
Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93YXNt
TWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7CkBAIC0zODk1LDE4ICszOTI1LDI4IEBAIGVycm9yOgog
CiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1
bHQ7CiAKK3N0YXRpYyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OklkZW50aWZpZXIgZ2VuZXJhdGVJ
ZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4geworICAgICAgICBQcm9jZXNzOjppZGVudGlmaWVy
KCksCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6SWRlbnRpZmllcjo6VmFsdWVJZGVu
dGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKQorICAgIH07Cit9CisKIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikK
LSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJh
dGVJZGVudGlmaWVyKCkpCisgICAgLCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogewogICAgIG1f
bWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJiBhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKElk
ZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eQogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKICNlbmRp
ZgogICAgICAgICApCi0gICAgOiBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQorICAgIDogbV9pZGVu
dGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogICAgICwg
bV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkpKQogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgICwgbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVs
cyhXVEZNb3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKSkKQEAgLTM5MjcsNyArMzk2Nyw4IEBA
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50
OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21N
ZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1lbW9yeUhhbmRsZXNBcnJheQogI2VuZGlmCiAgICAgICAg
ICkKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoZ2Vu
ZXJhdGVJZGVudGlmaWVyKCkpCisgICAgLCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogICAgICwg
bV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkpKQogICAgICwgbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5KFdURk1vdmUoc2hhcmVkQnVm
ZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX2JhY2tpbmdTdG9yZXMoV1RGTW92ZShiYWNraW5n
U3RvcmVzKSkKQEAgLTQ0MTIsNCArNDQ1Myw1MyBAQCBJREJWYWx1ZSBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCkKICAgICBy
ZXR1cm4gdmFsdWU7CiB9CiAKK2F1dG8gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6c2lu
Z2xldG9uKCkgLT4gQ2FjaGUmCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlPiBj
YWNoZTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK2NsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICBDYWNoZWRWYWx1ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsK
KyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB0YWtlVmFsdWUoKSB7IHJldHVybiBz
dGQ6OmV4Y2hhbmdlKG1fdmFsdWUsIG51bGxwdHIpOyB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBl
eHBpcmF0aW9uVGltZXJGaXJlZCgpOworCisgICAgVGltZXIgbV9leHBpcmF0aW9uVGltZXI7Cisg
ICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV92YWx1ZTsKK307CisKK1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1ZShSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHZhbHVlKQorICAgIDogbV9leHBpcmF0aW9uVGltZXIoKnRo
aXMsICZDYWNoZWRWYWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpCisgICAgLCBtX3ZhbHVlKFdU
Rk1vdmUodmFsdWUpKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgbV9leHBp
cmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNhY2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0
aW1lKTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVkU2NyaXB0VmFsdWUpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3ZhbHVlcy5hZGQoc2VyaWFsaXplZFNjcmlw
dFZhbHVlLT5pZGVudGlmaWVyKCksIG1ha2VVbmlxdWU8Q2FjaGVkVmFsdWU+KFdURk1vdmUoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlKSkpOworfQorCitSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVl
PiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjp0YWtlKElkZW50aWZpZXIgaWRlbnRpZmll
cikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIGF1dG8gY2FjaGVkVmFsdWUg
PSBtX3ZhbHVlcy50YWtlKGlkZW50aWZpZXIpOworICAgIHJldHVybiBjYWNoZWRWYWx1ZSA/IGNh
Y2hlZFZhbHVlLT50YWtlVmFsdWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWU6OmV4cGlyYXRpb25UaW1lckZpcmVkKCkKK3sK
KyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gcmVtb3ZlZFZh
bHVlID0gQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UobV92YWx1ZS0+aWRlbnRpZmllcigpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRWYWx1ZSwgcmVtb3ZlZFZhbHVlKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0ZjYuLjU0ODcyZDY3YWU4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRGV0YWNo
ZWRSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5o
PgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpAQCAtMTE1LDkgKzExNiwxMiBA
QCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7
CiAKKyAgICB1c2luZyBJZGVudGlmaWVyID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmll
cjsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgorICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZShJZGVudGlmaWVyLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlx
dWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgogI2lmIEVOQUJMRShXRUJfUlRDKQog
ICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+
JiYKICNlbmRpZgpAQCAtMTM2LDggKzE0MCwyNCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAg
ICk7CiAKKyAgICBjbGFzcyBDYWNoZSB7CisgICAgcHVibGljOgorICAgICAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgQ2FjaGUmIHNpbmdsZXRvbigpOworCisgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgYWRkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOworICAgICAgICBXRUJD
T1JFX0VYUE9SVCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB0YWtlKElkZW50aWZpZXIp
OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPENh
Y2hlPjsKKyAgICAgICAgQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgY2xhc3MgQ2FjaGVk
VmFsdWU7CisgICAgICAgIEhhc2hNYXA8SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENhY2hl
ZFZhbHVlPj4gbV92YWx1ZXM7CisgICAgfTsKKwogICAgIHNpemVfdCBjb21wdXRlTWVtb3J5Q29z
dCgpIGNvbnN0OwogCisgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXk7
CkBAIC0xNzcsNiArMTk3LDkgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGZvciAoY29uc3QgYXV0byAmY2hhbm5lbCA6IG1f
ZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCiAgICAgICAgIGVuY29kZXIgPDwgKmNoYW5uZWw7CiAj
ZW5kaWYKKworICAgIENhY2hlOjpzaW5nbGV0b24oKS5hZGQoY29uc3RfY2FzdDxTZXJpYWxpemVk
U2NyaXB0VmFsdWUqPih0aGlzKSk7CisgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiB9CiAK
IHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0yMzAsNyArMjUzLDE2IEBAIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJp
YWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkpCisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gV2Ug
YXJlIG5vdCBhYmxlIHRvIHNlcmlhbGl6ZSB0aGluZ3MgbGlrZSBXQVNNIG1vZHVsZXMgc28gcmV1
c2UgdGhlIGV4aXN0aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpZiBzdGlsbCBhbGl2ZQorICAg
IC8vIHVwb24gZGVzZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIGEgbmV3IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIGRlc2VyaWFsaXplZCBkYXRhLgorICAgIGlmIChhdXRv
IGV4aXN0aW5nVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFrZShpZGVudGlmaWVyKSkKKyAg
ICAgICAgcmV0dXJuIGV4aXN0aW5nVmFsdWUucmVsZWFzZU5vbk51bGwoKTsKKworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShpZGVudGlmaWVyLCBXVEZNb3Zl
KGRhdGEpLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKICNpZiBFTkFCTEUoV0VC
X1JUQykKICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi5mZDMzYmY2MTJlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw5
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8
d3RmL0hhc2hlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTZXJpYWxpemVk
U2NyaXB0VmFsdWVJZGVudGlmaWVyIHsKKyAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRl
bnRpZmllcjsKKworICAgIGVudW0gVmFsdWVJZGVudGlmaWVyVHlwZSB7IH07CisgICAgdXNpbmcg
VmFsdWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxWYWx1ZUlkZW50aWZpZXJUeXBlPjsK
KyAgICBWYWx1ZUlkZW50aWZpZXIgdmFsdWVJZGVudGlmaWVyOworCisgICAgdW5zaWduZWQgaGFz
aCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCksIHZhbHVlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNz
IERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGEsIGNvbnN0IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEucHJvY2Vzc0lkZW50aWZp
ZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiBhLnZhbHVlSWRlbnRpZmllciA9PSBiLnZhbHVl
SWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCB2YWx1ZUlkZW50aWZpZXI7Cit9
CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUlkZW50aWZpZXI+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI6OmRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZp
ZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7
CisgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVJZGVudGlmaWVyPiB2YWx1ZUlkZW50aWZpZXI7
CisgICAgZGVjb2RlciA+PiB2YWx1ZUlkZW50aWZpZXI7CisgICAgaWYgKCF2YWx1ZUlkZW50aWZp
ZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpwcm9j
ZXNzSWRlbnRpZmllciwgKnZhbHVlSWRlbnRpZmllciB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFz
aCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlm
aWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlk
ZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRl
bnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisKKyAgICBzdGF0aWMgdm9pZCBj
b25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
ZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnByb2Nlc3NJZGVudGlmaWVyKSBXZWJD
b3JlOjpQcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAg
ICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LnByb2Nlc3NJZGVudGlmaWVy
LmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IERl
ZmF1bHRIYXNoPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IDogU2Vy
aWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllckhhc2ggeyB9OworCit9IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IGMxYzVkYzk4NmFjYi4uOTBmOTVi
OWM5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTEzOSw3ICsxMzksMTEg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6SlNHbG9i
YWxPYmplY3QmIHN0YXRlLCBKU0M6OkpTVmEKICAgICByZWdpc3RlckxvY2FsQWN0aXZpdHkoKTsK
IAogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBwb3J0czsKLSAgICBhdXRvIG1lc3Nh
Z2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIG1lc3NhZ2VWYWx1
ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMpOworCisgICAgLy8gRklYTUU6IEF0
IHRoZSB0aW1lIG9mIHNlcmlhbGl6YXRpb24sIHdlIGRvbid0IGtub3cgaWYgdGhlIHRhcmdldCBp
cyBhIHdpbmRvdywgYSB3b3JrZXIgb3Igc29tZXRoaW5nIGVsc2UuIFdlIHdpbGwgb25seSBrbm93
IGF0IHRoZSB0aW1lIG9mCisgICAgLy8gZGVzZXJpYWxpemF0aW9uLiBUaGlzIGlzIGFuIGlzc3Vl
IHNpbmNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKCkgd2lsbCByZXR1cm4gYW4gZXhj
ZXB0aW9uIGlmIFdhc20gbW9kdWxlcyAvIG1lbW9yeSBoYW5kbGVzIGFyZSBwcmVzZW50IGFuZCB0
aGUgY29udGV4dAorICAgIC8vIGlzIG5vdCBXb3JrZXJQb3N0TWVzc2FnZS4KKyAgICBhdXRvIG1l
c3NhZ2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoc3RhdGUsIG1lc3NhZ2VW
YWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMsIFNlcmlhbGl6YXRpb25Db250
ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CiAgICAgaWYgKG1lc3NhZ2VEYXRhLmhhc0V4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gbWVzc2FnZURhdGEucmVsZWFzZUV4Y2VwdGlvbigpOwogCg==
</data>
<flag name="commit-queue"
          id="458724"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435860</attachid>
            <date>2021-08-19 08:25:04 -0700</date>
            <delta_ts>2021-08-19 08:52:36 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>220038_postMessage_WASM_Module2_wip.patch</filename>
            <type>text/plain</type>
            <size>24130</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12
YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZh
bHVlLmh0bWwKaW5kZXggZWIxNjYzZmIwMGM0Li41NTRhMDJkZjE3YWQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBA
IC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJy
ZW50VmVyc2lvbiA9IDB4MDg7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7CiAKIC8vIEhl
cmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0
byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVz
c2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1l
c3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNi4uMGFj
ZTFlNmY2MjkzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVs
LXN1Y2Nlc3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNo
YW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSwzIEBACiAKLUZBSUwgcG9zdE1l
c3NhZ2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0
aGVtIHRvIGluc3RhbnRpYXRlIHByb21pc2VfdGVzdDogVW5oYW5kbGVkIHJlamVjdGlvbiB3aXRo
IHZhbHVlOiBvYmplY3QgIkRhdGFDbG9uZUVycm9yOiBUaGUgb2JqZWN0IGNhbiBub3QgYmUgY2xv
bmVkLiIKK1BBU1MgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1lc3Nh
Z2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmlu
ZGV4IDYyYjZlZTE2ZDRjMS4uOWQxMmI0ZGUyMWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKQEAgLTI5
MCw2ICsyOTAsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAg
YmluZGluZ3MvanMvU2NyaXB0V3JhcHBhYmxlLmgKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGVJbmxpbmVzLmgKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAor
ICAgIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaAogICAgIGJp
bmRpbmdzL2pzL1N0cmluZ0FkYXB0b3JzLmgKICAgICBiaW5kaW5ncy9qcy9XZWJDb3JlSklUT3Bl
cmF0aW9ucy5oCiAgICAgYmluZGluZ3MvanMvV2ViQ29yZVR5cGVkQXJyYXlDb250cm9sbGVyLmgK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBmNjQ4Yjg0ZTEwYzYuLjdhYWE0YjNlN2JlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI4Nyw2ICsxMjg3LDcgQEAK
IAkJNDY3MkFBOTgyNkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3ku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2NzJBQTk2
MjZCMDk0MjEwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3MkFBOTkyNkIwOTQz
RjAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzggLyog
Q3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0IzNTcgLyogSWdub3JlT3Bl
bnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBCQ0IzNTcgLyogSWdub3Jl
T3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07CisJCTQ2ODA2MDBFMjZD
REE4QjUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgwNjAwQzI2Q0RBOEE1
MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODJEMjAwMUY3OTc4MzAw
MEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVCIC8qIERPTVJlY3RMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjgzNDRE
RTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQwMjFDMDA2RTAzMTQgLyog
QnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtODMwNCw2
ICs4MzA1LDcgQEAKIAkJNDY3MkFBOTYyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luRW1i
ZWRkZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcyQUE5NzI2QjA5NDIxMDBFNkVDMzgg
LyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY3MzAyMDExQzRF
RkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVPcGVuc0R1cmluZ1VubG9h
ZENvdW50SW5jcmVtZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDY4MDYw
MEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFGRjFGNzk3ODIzMDBDODYzREIgLyogU3RvcmVk
Q3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDY4
MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01SZWN0TGlz
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NEREMUVEREZBNUYwMEI3
Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01SZWN0TGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzAzNiw2ICsyNzAzOCw3IEBACiAJ
CQkJMTQwMEQ3QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCAq
LywKIAkJCQlBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCAqLywKIAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmggKi8sCisJCQkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFGMUIwMkZDMDAwRjA2OEIg
LyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRGMEQ5MDA3N0VCRTMgLyog
U3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRGMEQ5MDA3N0VCRTMgLyog
U3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zMzk3Nyw2ICszMzk4MCw3IEBACiAJCQkJOTM1QzQ3
NjkwOUFDNEQ0MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQzU5ODkwNTgxNEU5QzI5OTAwRThEMThCIC8qIFBsYXRmb3JtUGFzdGVib2FyZC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNFQzAxRDcwQzI3NEVCNDAwOUY0RUM5IC8qIFBsYXRmb3JtU2Ny
ZWVuLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2Vy
aWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUz
RDUxNkMwM0MwODAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyOTdCRTNENjE2QzAzQzBCMDAzMzE2QkQgLyogUGxhdGZvcm1T
cGVlY2hTeW50aGVzaXNWb2ljZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk3QkUzRDcxNkMwM0Mw
RTAwMzMxNkJEIC8qIFBsYXRmb3JtU3BlZWNoU3ludGhlc2l6ZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDkxNmQzM2Q5ZGU3NC4uMzdmY2Q3NmRlMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00Niw5ICs0NiwxMSBAQAogI2lu
Y2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlNjcmlwdE1vZHVsZUxv
YWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
IlN0cnVjdHVyZWRDbG9uZS5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNjMsNiArNjUsNyBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1ZNVHJhcHNJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvV2Vh
a0dDTWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVt
YmVycy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwpAQCAt
NTQ4LDYgKzU1MSwxOSBAQCBKU0M6OkpTT2JqZWN0KiBKU0RPTUdsb2JhbE9iamVjdDo6bW9kdWxl
TG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNDOjpKUwogICAgIHJldHVybiBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+bnVsbFBy
b3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKIH0KIAorU3RyaW5nIEpTRE9NR2xvYmFsT2JqZWN0
OjpkZWZhdWx0QWdlbnRDbHVzdGVySUQoKQoreworICAgIHJldHVybiBtYWtlU3RyaW5nKFByb2Nl
c3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAiLWRlZmF1bHQiKTsKK30KKworU3RyaW5nIEpT
RE9NR2xvYmFsT2JqZWN0OjphZ2VudENsdXN0ZXJJRCgpIGNvbnN0Cit7CisgICAgLy8gU2Vydmlj
ZSB3b3JrZXJzIG1heSBydW4gaW4gcHJvY2VzcyBidXQgdGhleSBuZWVkIHRvIGJlIGluIGEgc2Vw
YXJhdGUgYWdlbnQgY2x1c3Rlci4KKyAgICBpZiAoaXM8U2VydmljZVdvcmtlckdsb2JhbFNjb3Bl
PihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhQ
cm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50NjQoKSwgIi1zZXJ2aWNld29ya2VyIik7CisgICAg
cmV0dXJuIGRlZmF1bHRBZ2VudENsdXN0ZXJJRCgpOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCog
dG9KU0RPTUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01X
cmFwcGVyV29ybGQmIHdvcmxkKQogewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBm
OTIzNWQ2YjE2MzkuLjAyOGVmNDY5ZGMxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oCkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6CiAKICAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7
CiAKKyAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisg
ICAgU3RyaW5nIGFnZW50Q2x1c3RlcklEKCkgY29uc3Q7CisgICAgc3RhdGljIFN0cmluZyBkZWZh
dWx0QWdlbnRDbHVzdGVySUQoKTsKKwogICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRp
b24gZWFzaWVyLgogICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVy
biB0aGlzOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDUwNDc4NWM5NmQ4Zi4uMzIzZTg1MjExMjI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIK
KyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQmlnSW50T2JqZWN0Lmg+CkBAIC04OSw3ICs5MCw5IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvWWFyckZsYWdzLmg+CiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYv
TWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
aHJlYWRzL0JpbmFyeVNlbWFwaG9yZS5oPgpAQCAtMTEwLDcgKzExMyw4IEBAIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFs
aXplZFNjcmlwdFZhbHVlKTsKIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0ZXJS
ZWN1cnNpb24gPSA0MDAwMDsKK2NvbnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJz
aW9uID0gNDAwMDA7Citjb25zdGV4cHIgU2Vjb25kcyBjYWNoZWRTZXJpYWxpemVkU2NyaXB0VmFs
dWVMaWZldGltZSB7IDMwX3MgfTsKIAogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29k
ZSB7CiAgICAgU3VjY2Vzc2Z1bGx5Q29tcGxldGVkLApAQCAtMjM1LDYgKzIzOSwxMyBAQCBzdGF0
aWMgdW5zaWduZWQgdHlwZWRBcnJheUVsZW1lbnRTaXplKEFycmF5QnVmZmVyVmlld1N1YnRhZyB0
YWcpCiAgICAgfQogfQogCitzdGF0aWMgU3RyaW5nIGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9i
amVjdChKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3Qudm0oKSkpCisgICAg
ICAgIHJldHVybiBKU0RPTUdsb2JhbE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklEKCk7Cisg
ICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5hZ2Vu
dENsdXN0ZXJJRCgpOworfQorCiBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xvclNwYWNlVGFnIDog
dWludDhfdCB7CiAgICAgU1JHQiA9IDAKICNpZiBFTkFCTEUoREVTVElOQVRJT05fQ09MT1JfU1BB
Q0VfRElTUExBWV9QMykKQEAgLTMyMiw3ICszMzMsNyBAQCBzdGF0aWMgdW5zaWduZWQgY291bnRV
c2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lvbiA3LiBhZGRlZCBz
dXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAqIFZlcnNpb24gOC4g
YWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRyaWJ1dGUuCiAgKi8K
LXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDg7CitzdGF0aWMgY29uc3Qg
dW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSA5Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFRlcm1p
bmF0b3JUYWcgPSAweEZGRkZGRkZGOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cmluZ1Bvb2xU
YWcgPSAweEZGRkZGRkZFOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vbkluZGV4UHJvcGVydGll
c1RhZyA9IDB4RkZGRkZGRkQ7CkBAIC0xMzQ4LDYgKzEzNTksNyBAQCBwcml2YXRlOgogICAgICAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gbV93YXNtTW9kdWxlcy5zaXplKCk7IAogICAgICAg
ICAgICAgICAgIG1fd2FzbU1vZHVsZXMuYXBwZW5kKG1ha2VSZWYobW9kdWxlLT5tb2R1bGUoKSkp
OwogICAgICAgICAgICAgICAgIHdyaXRlKFdhc21Nb2R1bGVUYWcpOworICAgICAgICAgICAgICAg
IHdyaXRlKGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9sZXhpY2FsR2xvYmFsT2Jq
ZWN0KSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTM2Myw2ICsxMzc1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IG1fd2FzbU1lbW9yeUhhbmRsZXMuc2l6
ZSgpOwogICAgICAgICAgICAgICAgIG1fd2FzbU1lbW9yeUhhbmRsZXMuYXBwZW5kKG1ha2VSZWYo
bWVtb3J5LT5tZW1vcnkoKS5oYW5kbGUoKSkpOwogICAgICAgICAgICAgICAgIHdyaXRlKFdhc21N
ZW1vcnlUYWcpOworICAgICAgICAgICAgICAgIHdyaXRlKGFnZW50Q2x1c3RlcklERnJvbUdsb2Jh
bE9iamVjdCgqbV9sZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgd3JpdGUo
aW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAt
MzQ5OCw2ICszNTExLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiAgICAgICAgIGNhc2UgV2FzbU1vZHVsZVRhZzogeworICAgICAgICAgICAgaWYgKG1f
dmVyc2lvbiA+PSA5KSB7CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93ZWJhc3NlbWJseS5n
aXRodWIuaW8vc3BlYy93ZWItYXBpL2luZGV4Lmh0bWwjc2VyaWFsaXphdGlvbgorICAgICAgICAg
ICAgICAgIENhY2hlZFN0cmluZ1JlZiBhZ2VudENsdXN0ZXJJRDsKKyAgICAgICAgICAgICAgICBi
b29sIGFnZW50Q2x1c3RlcklEU3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWRTdHJpbmdEYXRhKGFnZW50
Q2x1c3RlcklEKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFnZW50Q2x1c3RlcklEU3VjY2Vzc2Z1
bGx5UmVhZCB8fCBhZ2VudENsdXN0ZXJJRC0+c3RyaW5nKCkgIT0gYWdlbnRDbHVzdGVySURGcm9t
R2xvYmFsT2JqZWN0KCptX2dsb2JhbE9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFp
bCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4OwogICAgICAg
ICAgICAgYm9vbCBpbmRleFN1Y2Nlc3NmdWxseVJlYWQgPSByZWFkKGluZGV4KTsKICAgICAgICAg
ICAgIGlmICghaW5kZXhTdWNjZXNzZnVsbHlSZWFkIHx8ICFtX3dhc21Nb2R1bGVzIHx8IGluZGV4
ID49IG1fd2FzbU1vZHVsZXMtPnNpemUoKSkgewpAQCAtMzUxNCw2ICszNTM2LDE0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
V2FzbU1lbW9yeVRhZzogeworICAgICAgICAgICAgaWYgKG1fdmVyc2lvbiA+PSA5KSB7CisgICAg
ICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGFnZW50Q2x1c3RlcklEOworICAgICAgICAgICAg
ICAgIGJvb2wgYWdlbnRDbHVzdGVySURTdWNjZXNzZnVsbHlSZWFkID0gcmVhZFN0cmluZ0RhdGEo
YWdlbnRDbHVzdGVySUQpOworICAgICAgICAgICAgICAgIGlmICghYWdlbnRDbHVzdGVySURTdWNj
ZXNzZnVsbHlSZWFkIHx8IGFnZW50Q2x1c3RlcklELT5zdHJpbmcoKSAhPSBhZ2VudENsdXN0ZXJJ
REZyb21HbG9iYWxPYmplY3QoKm1fZ2xvYmFsT2JqZWN0KSkgeworICAgICAgICAgICAgICAgICAg
ICBmYWlsKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7CiAg
ICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwogICAg
ICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1lbW9yeUhhbmRs
ZXMgfHwgaW5kZXggPj0gbV93YXNtTWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7CkBAIC0zODk1LDE4
ICszOTI1LDI4IEBAIGVycm9yOgogCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6On5TZXJpYWxpemVk
U2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAKK3N0YXRpYyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OklkZW50aWZpZXIgZ2VuZXJhdGVJZGVudGlmaWVyKCkKK3sKKyAgICByZXR1cm4geworICAgICAg
ICBQcm9jZXNzOjppZGVudGlmaWVyKCksCisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
SWRlbnRpZmllcjo6VmFsdWVJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNhZmUoKQorICAgIH07
Cit9CisKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rv
cjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisgICAg
OiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAgLCBtX2RhdGEoV1RGTW92
ZShidWZmZXIpKQogewogICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9
CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1
aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJh
eT4mJiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKElkZW50aWZpZXIgaWRlbnRpZmllciwgVmVjdG9yPHVpbnQ4X3Q+
JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFy
cmF5QnVmZmVyQ29udGVudHNBcnJheQogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgICAgICAsIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYgZGV0YWNoZWRS
VENEYXRhQ2hhbm5lbHMKICNlbmRpZgogICAgICAgICApCi0gICAgOiBtX2RhdGEoV1RGTW92ZShi
dWZmZXIpKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2RhdGEoV1RG
TW92ZShidWZmZXIpKQogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgICwgbV9k
ZXRhY2hlZFJUQ0RhdGFDaGFubmVscyhXVEZNb3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKSkK
QEAgLTM5MjcsNyArMzk2Nyw4IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAgICAgICAgICwg
c3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1lbW9yeUhhbmRsZXNB
cnJheQogI2VuZGlmCiAgICAgICAgICkKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisg
ICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAgLCBtX2RhdGEoV1RG
TW92ZShidWZmZXIpKQogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShh
cnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9zaGFyZWRCdWZmZXJDb250ZW50c0Fy
cmF5KFdURk1vdmUoc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX2JhY2tpbmdT
dG9yZXMoV1RGTW92ZShiYWNraW5nU3RvcmVzKSkKQEAgLTQ0MTIsNCArNDQ1Myw1MyBAQCBJREJW
YWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREJT
eW5jaHJvbm91c2x5KCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK2F1dG8gU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpDYWNoZTo6c2luZ2xldG9uKCkgLT4gQ2FjaGUmCit7CisgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPENhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGU7Cit9CisKK2NsYXNz
IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBDYWNoZWRWYWx1ZShSZWZQdHI8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB0
YWtlVmFsdWUoKSB7IHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fdmFsdWUsIG51bGxwdHIpOyB9CisK
K3ByaXZhdGU6CisgICAgdm9pZCBleHBpcmF0aW9uVGltZXJGaXJlZCgpOworCisgICAgVGltZXIg
bV9leHBpcmF0aW9uVGltZXI7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbV92
YWx1ZTsKK307CisKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpD
YWNoZWRWYWx1ZShSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHZhbHVlKQorICAgIDog
bV9leHBpcmF0aW9uVGltZXIoKnRoaXMsICZDYWNoZWRWYWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmly
ZWQpCisgICAgLCBtX3ZhbHVlKFdURk1vdmUodmFsdWUpKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgbV9leHBpcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNhY2hlZFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUxpZmV0aW1lKTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OkNhY2hlOjphZGQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiBzZXJpYWxpemVk
U2NyaXB0VmFsdWUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX3ZhbHVl
cy5hZGQoc2VyaWFsaXplZFNjcmlwdFZhbHVlLT5pZGVudGlmaWVyKCksIG1ha2VVbmlxdWU8Q2Fj
aGVkVmFsdWU+KFdURk1vdmUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSkpOworfQorCitSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjp0YWtl
KElkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIGF1dG8gY2FjaGVkVmFsdWUgPSBtX3ZhbHVlcy50YWtlKGlkZW50aWZpZXIpOworICAgIHJl
dHVybiBjYWNoZWRWYWx1ZSA/IGNhY2hlZFZhbHVlLT50YWtlVmFsdWUoKSA6IG51bGxwdHI7Cit9
CisKK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWU6OmV4cGly
YXRpb25UaW1lckZpcmVkKCkKK3sKKyAgICBpZiAoIW1fdmFsdWUpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gcmVtb3ZlZFZhbHVlID0gQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UobV92YWx1
ZS0+aWRlbnRpZmllcigpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWRWYWx1ZSwgcmVtb3Zl
ZFZhbHVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCBmYjc1N2E0ZDc0
ZjYuLjU0ODcyZDY3YWU4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCbG9i
LmgiCiAjaW5jbHVkZSAiRGV0YWNoZWRSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkV4Y2Vw
dGlvbk9yLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1N0cm9uZy5o
PgpAQCAtMTE1LDkgKzExNiwxMiBAQCBwdWJsaWM6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB+U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKKyAgICB1c2luZyBJZGVudGlmaWVyID0gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllcjsKKyAgICBJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25z
dCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJpdmF0ZToKICAgICBXRUJDT1JFX0VYUE9S
VCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpOwotICAgIFdF
QkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4m
Jiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgorICAgIFdFQkNP
UkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShJZGVudGlmaWVyLCBWZWN0b3I8dW5zaWdu
ZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4mJgog
I2lmIEVOQUJMRShXRUJfUlRDKQogICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0
YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYKICNlbmRpZgpAQCAtMTM2LDggKzE0MCwyNCBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgICAgICk7CiAKKyAgICBjbGFzcyBDYWNoZSB7CisgICAgcHVibGlj
OgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgQ2FjaGUmIHNpbmdsZXRvbigpOworCisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+JiYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiB0YWtlKElkZW50aWZpZXIpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIE5ldmVyRGVzdHJveWVkPENhY2hlPjsKKyAgICAgICAgQ2FjaGUoKSA9IGRlZmF1bHQ7CisK
KyAgICAgICAgY2xhc3MgQ2FjaGVkVmFsdWU7CisgICAgICAgIEhhc2hNYXA8SWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPENhY2hlZFZhbHVlPj4gbV92YWx1ZXM7CisgICAgfTsKKwogICAgIHNp
emVfdCBjb21wdXRlTWVtb3J5Q29zdCgpIGNvbnN0OwogCisgICAgSWRlbnRpZmllciBtX2lkZW50
aWZpZXI7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJh
eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX3NoYXJl
ZEJ1ZmZlckNvbnRlbnRzQXJyYXk7CkBAIC0xNzcsNiArMTk3LDkgQEAgdm9pZCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGZvciAoY29u
c3QgYXV0byAmY2hhbm5lbCA6IG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCiAgICAgICAgIGVu
Y29kZXIgPDwgKmNoYW5uZWw7CiAjZW5kaWYKKworICAgIENhY2hlOjpzaW5nbGV0b24oKS5hZGQo
Y29uc3RfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0aGlzKSk7CisgICAgZW5jb2RlciA8
PCBtX2lkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0yMzAsNyAr
MjUzLDE2IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgLy8gV2UgYXJlIG5vdCBhYmxlIHRvIHNlcmlhbGl6ZSB0aGluZ3MgbGlr
ZSBXQVNNIG1vZHVsZXMgc28gcmV1c2UgdGhlIGV4aXN0aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSBpZiBzdGlsbCBhbGl2ZQorICAgIC8vIHVwb24gZGVzZXJpYWxpemF0aW9uIGluc3RlYWQgb2Yg
Y29uc3RydWN0aW5nIGEgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIGRlc2VyaWFsaXpl
ZCBkYXRhLgorICAgIGlmIChhdXRvIGV4aXN0aW5nVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCku
dGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVmFsdWUucmVsZWFzZU5v
bk51bGwoKTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNB
cnJheSkKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkUlRD
RGF0YUNoYW5uZWxzKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mZDMzYmY2MTJlZmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NJZGVu
dGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyIHsKKyAgICBQcm9jZXNz
SWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKworICAgIGVudW0gVmFsdWVJZGVudGlmaWVy
VHlwZSB7IH07CisgICAgdXNpbmcgVmFsdWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxW
YWx1ZUlkZW50aWZpZXJUeXBlPjsKKyAgICBWYWx1ZUlkZW50aWZpZXIgdmFsdWVJZGVudGlmaWVy
OworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nl
c3NJZGVudGlmaWVyLnRvVUludDY0KCksIHZhbHVlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsgfQor
CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9OworCitpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIm
IGEsIGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGIpCit7CisgICAgcmV0
dXJuIGEucHJvY2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiBhLnZhbHVl
SWRlbnRpZmllciA9PSBiLnZhbHVlSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8
PCB2YWx1ZUlkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9w
dGlvbmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0
aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGRlY29kZXIg
Pj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVJZGVudGlm
aWVyPiB2YWx1ZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB2YWx1ZUlkZW50aWZpZXI7Cisg
ICAgaWYgKCF2YWx1ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICByZXR1cm4geyB7ICpwcm9jZXNzSWRlbnRpZmllciwgKnZhbHVlSWRlbnRpZmllciB9IH07
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVj
dCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2ln
bmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYg
a2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9
CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0
cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWVJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9
CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnBy
b2Nlc3NJZGVudGlmaWVyKSBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJs
ZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBX
ZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBz
bG90LnByb2Nlc3NJZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisK
K3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXI+IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllckhhc2ggeyB9
OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4
IGMxYzVkYzk4NmFjYi4uOTBmOTViOWM5OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKQEAgLTEzOSw3ICsxMzksMTEgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBv
c3RNZXNzYWdlKEpTQzo6SlNHbG9iYWxPYmplY3QmIHN0YXRlLCBKU0M6OkpTVmEKICAgICByZWdp
c3RlckxvY2FsQWN0aXZpdHkoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8TWVzc2FnZVBvcnQ+PiBw
b3J0czsKLSAgICBhdXRvIG1lc3NhZ2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVh
dGUoc3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9ydHMp
OworCisgICAgLy8gRklYTUU6IEF0IHRoZSB0aW1lIG9mIHNlcmlhbGl6YXRpb24sIHdlIGRvbid0
IGtub3cgaWYgdGhlIHRhcmdldCBpcyBhIHdpbmRvdywgYSB3b3JrZXIgb3Igc29tZXRoaW5nIGVs
c2UuIFdlIHdpbGwgb25seSBrbm93IGF0IHRoZSB0aW1lIG9mCisgICAgLy8gZGVzZXJpYWxpemF0
aW9uLiBUaGlzIGlzIGFuIGlzc3VlIHNpbmNlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KCkgd2lsbCByZXR1cm4gYW4gZXhjZXB0aW9uIGlmIFdhc20gbW9kdWxlcyAvIG1lbW9yeSBoYW5k
bGVzIGFyZSBwcmVzZW50IGFuZCB0aGUgY29udGV4dAorICAgIC8vIGlzIG5vdCBXb3JrZXJQb3N0
TWVzc2FnZS4KKyAgICBhdXRvIG1lc3NhZ2VEYXRhID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoc3RhdGUsIG1lc3NhZ2VWYWx1ZSwgV1RGTW92ZShvcHRpb25zLnRyYW5zZmVyKSwgcG9y
dHMsIFNlcmlhbGl6YXRpb25Db250ZXh0OjpXb3JrZXJQb3N0TWVzc2FnZSk7CiAgICAgaWYgKG1l
c3NhZ2VEYXRhLmhhc0V4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gbWVzc2FnZURhdGEucmVs
ZWFzZUV4Y2VwdGlvbigpOwogCg==
</data>
<flag name="commit-queue"
          id="458769"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435862</attachid>
            <date>2021-08-19 08:42:54 -0700</date>
            <delta_ts>2021-08-19 09:00:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220038-20210819084253.patch</filename>
            <type>text/plain</type>
            <size>31145</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkYWE5N2RlNGNkM2I5
NzMzNTU3NmZiNGQ2NzI0NDI1MmM1ZGZjMy4uZGVjN2VhMzNiNjhhNWY1NzhhOWM2ZjdhYTNmOTUx
NjQ0MDgzODhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVW5hYmxlIHRvIHBvc3RNZXNz
YWdlIGEgV2ViQXNzZW1ibHkgbW9kdWxlIHRvIGEgd29ya2xldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDM4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MjU5NjU1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCZWNhdXNlIG9mIHNlcnZpY2Ugd29ya2VyIHN1cHBvcnQsIGFuZCBiZWNhdXNlIHdl
IGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgICAgICAgd2hvIHRoZSBkZXN0aW5hdGlvbiBpcyB3aGVu
IGNhbGxpbmcgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKSwgZXZlcnkKKyAgICAgICAgbWVzc2Fn
ZSBnZXRzIHJvdXRlZCB2aWEgdGhlIG5ldHdvcmsgcHJvY2VzcywgZXZlbiBpZiB0aGUgZGVzdGlu
YXRpb24KKyAgICAgICAgZW5kcyB1cCBiZWluZyBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIGlz
IGFuIGlzc3VlIGJlY2F1c2Ugc29tZSBvZgorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJ3MgZGF0YSBtZW1iZXJzIGNhbm5vdCBiZSBzZXJpYWxpemVkIGFuZAorICAgICAgICBzZW50
IHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgYW4gaXNzdWUg
Zm9yCisgICAgICAgIFdBU00gbW9kdWxlcyBhbmQgbWVtb3J5IGhhbmRsZXMuCisKKyAgICAgICAg
dG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBJIGludHJvZHVjZWQgYSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgY2FjaGUuCisgICAgICAgIEVhY2ggU2VyaWFsaXplZFNjcmlwdFZhbHVlIGdldHMgYXNzaWdu
ZWQgYSBnbG9iYWxseSB1bmlxdWUKKyAgICAgICAgaWRlbnRpZmllciAodW5pcXVlIGFjcm9zcyBh
bGwgV2ViUHJvY2Vzc2VzKS4gV2hlbiBzZW5kaW5nIGEKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIHZpYSBJUEMsIHdlIGFsc28gc2VyaWFsaXplZCBpdHMgaWRlbnRpZmllcgorICAgICAg
ICBhbmQgYWRkIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGhlIGluLXByb2Nlc3MgY2Fj
aGUuIFVwb24KKyAgICAgICAgZGVzZXJpYWxpemF0aW9uIGZyb20gSVBDLCB3ZSBjaGVjayBpZiB0
aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGlzCisgICAgICAgIGluIHRoZSBjYWNoZSBieSB1c2lu
ZyBpdHMgZGVzZXJpYWxpemVkIGlkZW50aWZpZXIuIElmIGl0IGlzIGluIHRoZQorICAgICAgICBj
YWNoZSwgd2UgcmV1c2UgaXQgc28gdGhhdCB3ZSBkb24ndCBsb3NlIHRoZSBkYXRhIG1lbWJlcnMg
dGhhdAorICAgICAgICBjb3VsZG4ndCBiZSBzZXJpYWxpemVkIG92ZXIgSVBDLgorCisgICAgICAg
IFdoZW4gdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uIHByb2Nlc3MgYXJlIHRoZSBzYW1l
IChjb21tb24gY2FzZSksCisgICAgICAgIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb25seSBz
dGF5cyBpbiB0aGUgY2FjaGUgZm9yIGEgc2hvcnQgYW1vdW50IG9mCisgICAgICAgIHRpbWUgKGl0
IGdldHMgYWRkZWQgdG8gdGhlIGNhY2hlIG9uIHNlcmlhbGl6YXRpb24gYW5kIHJlbW92ZWQgdXBv
bgorICAgICAgICBkZXNlcmlhbGl6YXRpb24gYXQgdGhlIGRlc3RpbmF0aW9uKS4gSW4gY2FzZSB0
aGUgZGVzdGluYXRpb24gcHJvY2VzcworICAgICAgICBlbmRzIHVwIGJlaW5nIGEgZGlmZmVyZW50
IHByb2Nlc3MsIGNhY2hlZCBzZXJpYWxpemVkIHNjcmlwdCB2YWx1ZXMgb25seQorICAgICAgICBs
aXZlIGZvciAzMCBzZWNvbmRzIGF0IG1vc3QgaW4gdGhlIGNhY2hlLCB0byBhdm9pZCB3YXN0aW5n
IG1lbW9yeS4KKworICAgICAgICBOb3RlIHRoYXQsIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiwg
aXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvIHNlbmQKKyAgICAgICAgV0FTTSBtb2R1bGVzIC8g
bWVtb3J5IGhhbmRsZXMgYWNyb3NzIGFnZW50IGNsdXN0ZXJzIFsxXS4gSSBoYWQgdG8KKyAgICAg
ICAgaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IgaW4gb3JkZXIgdG8gbm90IHJlZ3Jlc3MgdGhlIGZv
bGxvd2luZyB0ZXN0OgorICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0
dHBzLmh0bWwKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2VydmljZSB3b3JrZXJzIHNob3VsZCBi
ZWxvbmcgdG8gYSBkaWZmZXJlbnQgYWdlbnQgY2x1c3RlciwKKyAgICAgICAgZXZlbiBpZiB0aGV5
IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzLgorCisgICAgICAgIFsxXSBodHRwczovL3RjMzkuZXMv
ZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgICAgIFsyXSBodHRwczovL3dlYmFzc2Vt
Ymx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlZmF1bHRBZ2VudENsdXN0ZXJJRCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRDbHVzdGVySUQgY29u
c3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6dGFrZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6dGFrZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRW
YWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllcjo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisKIDIwMjEtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uOjptX3RyYW5zY2Vp
dmVyU2V0IGRvZXMgbm90IG5lZWQgdG8gYmUgYWxsb2NhdGVkIHNlcGFyYXRlbHkgZnJvbSBpdHMg
UlRDUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2ZDRjMTA2ZWU3
OGUwNTEwNjQ2YmQ2OWRlYjJjMmNmY2YuLjlkMTJiNGRlMjFhNzBlMjk3ZTUwYzVkOTE4M2U1MDRl
Y2ZjOTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjkwLDYgKzI5MCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAogICAgIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisgICAgYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCiAgICAgYmluZGluZ3MvanMvU3RyaW5nQWRhcHRv
cnMuaAogICAgIGJpbmRpbmdzL2pzL1dlYkNvcmVKSVRPcGVyYXRpb25zLmgKICAgICBiaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2NDhiODRlMTBjNjRmOTNh
MTY5ZjlkOTMxMzYxNWYwYzEyMGJiOTguLjViNDcwOGE0Y2VkMDU5YmJhYjdiMTRhZThkMGQ0YzEy
ODg0MTYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyODcsNiArMTI4Nyw3IEBACiAJCTQ2NzJBQTk4MjZCMDk0MzMwMEU2
RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NjI2QjA5NDIxMDBFNkVDMzggLyogQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2NzJBQTk5MjZCMDk0M0YwMEU2RUMzOCAvKiBDcm9zc09yaWdp
bk9wZW5lclBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3MkFBOTcyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3
MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNy
ZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJ
bmNyZW1lbnRlci5oICovOyB9OworCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0
NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERP
TVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAy
MDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzMDQsNiArODMwNSw3IEBACiAJCTQ2NzJBQTk2
MjZCMDk0MjEwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3MkFBOTcyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA2MDBDMjZDREE4QTUwMEExQTVCRiAvKiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjcwMzYsNiArMjcwMzgsNyBAQAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3
Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFD
QjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCiAJCQkJQTc1RTQ5NzQx
MDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAorCQkJCTQ2ODA2
MDBDMjZDREE4QTUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJN0M1MjY2OTYxRjFCMDJGQzAwMEYwNjhCIC8qIFN0cmluZ0FkYXB0b3JzLmggKi8s
CiAJCQkJNDE0QjgyMDIxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8s
CiAJCQkJNDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oICovLApA
QCAtMzQ0OTgsNiArMzQ1MDEsNyBAQAogCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZEMUMx
RjIzRjZFQjVCMDBEOTVCMDYgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEOTNBRUUzMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAg
LyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggOTE2ZDMzZDlkZTc0ZjIyMTNk
YmUzMzQzZWZmM2QwMmEzYWMzNTNjZC4uMzdmY2Q3NmRlMDNmMGJlNzE2NmQ5YWUxNTQ4ZWIwNWRh
YzM0MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcApAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVkQ2xvbmUuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTVRyYXBz
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21TdHJlYW1pbmdDb21waWxl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTU0OCw2ICs1NTEsMTkgQEAgSlNDOjpK
U09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQ
cm9wZXJ0aWVzKEpTQzo6SlMKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUo
KSk7CiB9CiAKK1N0cmluZyBKU0RPTUdsb2JhbE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklE
KCkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmluZyhQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgIi1kZWZhdWx0Iik7Cit9CisKK1N0cmluZyBKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRD
bHVzdGVySUQoKSBjb25zdAoreworICAgIC8vIFNlcnZpY2Ugd29ya2VycyBtYXkgcnVuIGluIHBy
b2Nlc3MgYnV0IHRoZXkgbmVlZCB0byBiZSBpbiBhIHNlcGFyYXRlIGFnZW50IGNsdXN0ZXIuCisg
ICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoUHJvY2Vzczo6aWRlbnRpZmllcigpLnRv
VUludDY0KCksICItc2VydmljZXdvcmtlciIpOworICAgIHJldHVybiBkZWZhdWx0QWdlbnRDbHVz
dGVySUQoKTsKK30KKwogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZjkyMzVkNmIxNjM5OWYwN2Q0MGJjYWU3
OTI3MTE3NWZlYzljYmQ4Zi4uMDI4ZWY0NjlkYzE1NjA3MjE0NzIyMzA3ZTU1YTEwODU4ZDVmNWJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgU3RyaW5nIGFnZW50Q2x1c3RlcklE
KCkgY29uc3Q7CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QWdlbnRDbHVzdGVySUQoKTsKKwog
ICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDUwNDc4NWM5NmQ4ZjU2NDNhOTYxODI2ODU1OTU0ZGUwNjU3ZDZjYzUuLjMyM2U4NTIxMTIyNjQ4
OTFjMGQ0ZjI4MWY2ZDUwZTkyYjM1MWNkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CaWdJbnRPYmplY3QuaD4KQEAgLTg5
LDcgKzkwLDkgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyRmxhZ3MuaD4KICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CkBAIC0xMTAsNyArMTEzLDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogREVGSU5FX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCi1zdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOworY29uc3Rl
eHByIHVuc2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKK2NvbnN0ZXhwciBT
ZWNvbmRzIGNhY2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0aW1lIHsgMzBfcyB9OwogCiBl
bnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21w
bGV0ZWQsCkBAIC0yMzUsNiArMjM5LDEzIEBAIHN0YXRpYyB1bnNpZ25lZCB0eXBlZEFycmF5RWxl
bWVudFNpemUoQXJyYXlCdWZmZXJWaWV3U3VidGFnIHRhZykKICAgICB9CiB9CiAKK3N0YXRpYyBT
dHJpbmcgYWdlbnRDbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCit7CisgICAgaWYgKCFnbG9iYWxPYmplY3QuaW5oZXJpdHM8SlNET01HbG9iYWxP
YmplY3Q+KGdsb2JhbE9iamVjdC52bSgpKSkKKyAgICAgICAgcmV0dXJuIEpTRE9NR2xvYmFsT2Jq
ZWN0OjpkZWZhdWx0QWdlbnRDbHVzdGVySUQoKTsKKyAgICByZXR1cm4ganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPmFnZW50Q2x1c3RlcklEKCk7Cit9CisKIGVudW0g
Y2xhc3MgUHJlZGVmaW5lZENvbG9yU3BhY2VUYWcgOiB1aW50OF90IHsKICAgICBTUkdCID0gMAog
I2lmIEVOQUJMRShERVNUSU5BVElPTl9DT0xPUl9TUEFDRV9ESVNQTEFZX1AzKQpAQCAtMzIyLDcg
KzMzMyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1h
cCB1c2FnZXMpCiAgKiBWZXJzaW9uIDcuIGFkZGVkIHN1cHBvcnQgZm9yIEZpbGUncyBsYXN0TW9k
aWZpZWQgYXR0cmlidXRlLgogICogVmVyc2lvbiA4LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZURh
dGEncyBjb2xvclNwYWNlIGF0dHJpYnV0ZS4KICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1
cnJlbnRWZXJzaW9uID0gODsKK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9
IDk7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgVGVybWluYXRvclRhZyA9IDB4RkZGRkZGRkY7CiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RyaW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgTm9uSW5kZXhQcm9wZXJ0aWVzVGFnID0gMHhGRkZGRkZGRDsKQEAgLTEz
NDgsNiArMTM1OSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgg
PSBtX3dhc21Nb2R1bGVzLnNpemUoKTsgCiAgICAgICAgICAgICAgICAgbV93YXNtTW9kdWxlcy5h
cHBlbmQobWFrZVJlZihtb2R1bGUtPm1vZHVsZSgpKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUo
V2FzbU1vZHVsZVRhZyk7CisgICAgICAgICAgICAgICAgd3JpdGUoYWdlbnRDbHVzdGVySURGcm9t
R2xvYmFsT2JqZWN0KCptX2xleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICB3
cml0ZShpbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9
CkBAIC0xMzYzLDYgKzEzNzUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIHVpbnQzMl90
IGluZGV4ID0gbV93YXNtTWVtb3J5SGFuZGxlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgbV93
YXNtTWVtb3J5SGFuZGxlcy5hcHBlbmQobWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRsZSgp
KSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAgICAg
ICAgd3JpdGUoYWdlbnRDbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KCptX2xleGljYWxHbG9iYWxP
YmplY3QpKTsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0zNDk4LDYgKzM1MTEsMTUgQEAgcHJpdmF0
ZToKICAgICAgICAgfQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICAgICAgY2FzZSBXYXNt
TW9kdWxlVGFnOiB7CisgICAgICAgICAgICBpZiAobV92ZXJzaW9uID49IDkpIHsKKyAgICAgICAg
ICAgICAgICAvLyBodHRwczovL3dlYmFzc2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5k
ZXguaHRtbCNzZXJpYWxpemF0aW9uCisgICAgICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGFn
ZW50Q2x1c3RlcklEOworICAgICAgICAgICAgICAgIGJvb2wgYWdlbnRDbHVzdGVySURTdWNjZXNz
ZnVsbHlSZWFkID0gcmVhZFN0cmluZ0RhdGEoYWdlbnRDbHVzdGVySUQpOworICAgICAgICAgICAg
ICAgIGlmICghYWdlbnRDbHVzdGVySURTdWNjZXNzZnVsbHlSZWFkIHx8IGFnZW50Q2x1c3RlcklE
LT5zdHJpbmcoKSAhPSBhZ2VudENsdXN0ZXJJREZyb21HbG9iYWxPYmplY3QoKm1fZ2xvYmFsT2Jq
ZWN0KSkgeworICAgICAgICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAg
ICAgICAgICAgdWludDMyX3QgaW5kZXg7CiAgICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1
bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxs
eVJlYWQgfHwgIW1fd2FzbU1vZHVsZXMgfHwgaW5kZXggPj0gbV93YXNtTW9kdWxlcy0+c2l6ZSgp
KSB7CkBAIC0zNTE0LDYgKzM1MzYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtTWVtb3J5VGFnOiB7CisgICAgICAg
ICAgICBpZiAobV92ZXJzaW9uID49IDkpIHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTdHJpbmdS
ZWYgYWdlbnRDbHVzdGVySUQ7CisgICAgICAgICAgICAgICAgYm9vbCBhZ2VudENsdXN0ZXJJRFN1
Y2Nlc3NmdWxseVJlYWQgPSByZWFkU3RyaW5nRGF0YShhZ2VudENsdXN0ZXJJRCk7CisgICAgICAg
ICAgICAgICAgaWYgKCFhZ2VudENsdXN0ZXJJRFN1Y2Nlc3NmdWxseVJlYWQgfHwgYWdlbnRDbHVz
dGVySUQtPnN0cmluZygpICE9IGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9nbG9i
YWxPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleDsKICAgICAgICAgICAgIGJvb2wgaW5kZXhTdWNj
ZXNzZnVsbHlSZWFkID0gcmVhZChpbmRleCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4U3VjY2Vz
c2Z1bGx5UmVhZCB8fCAhbV93YXNtTWVtb3J5SGFuZGxlcyB8fCBpbmRleCA+PSBtX3dhc21NZW1v
cnlIYW5kbGVzLT5zaXplKCkpIHsKQEAgLTM4OTUsMTggKzM5MjUsMjggQEAgZXJyb3I6CiAKIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID0gZGVmYXVsdDsK
IAorc3RhdGljIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6SWRlbnRpZmllciBnZW5lcmF0ZUlkZW50
aWZpZXIoKQoreworICAgIHJldHVybiB7CisgICAgICAgIFByb2Nlc3M6OmlkZW50aWZpZXIoKSwK
KyAgICAgICAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpJZGVudGlmaWVyOjpWYWx1ZUlkZW50aWZp
ZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgpCisgICAgfTsKK30KKwogU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQotICAg
IDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlk
ZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgbV9tZW1v
cnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNvc3QoKTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVl
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVu
aXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNB
cnJheQorU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRp
ZmllciBpZGVudGlmaWVyLCBWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CiAj
aWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRh
Y2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBkZXRhY2hlZFJUQ0RhdGFDaGFubmVscwogI2VuZGlmCiAg
ICAgICAgICkKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZp
ZXIoaWRlbnRpZmllcikKKyAgICAsIG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2Fy
cmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkp
CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgLCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdU
Rk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpKQpAQCAtMzkyNyw3ICszOTY3LDggQEAgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+
JiYgYnVmZmVyLCBjb25zdCBWZWMKICAgICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9y
eUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQot
ICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0
ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2Fy
cmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkp
CiAgICAgLCBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZmZXJD
b250ZW50c0FycmF5KSkKICAgICAsIG1fYmFja2luZ1N0b3JlcyhXVEZNb3ZlKGJhY2tpbmdTdG9y
ZXMpKQpAQCAtNDQxMiw0ICs0NDUzLDUzIEBAIElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQlN5bmNocm9ub3VzbHkoKQogICAgIHJldHVy
biB2YWx1ZTsKIH0KIAorYXV0byBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpzaW5nbGV0
b24oKSAtPiBDYWNoZSYKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+IGNhY2hl
OworICAgIHJldHVybiBjYWNoZTsKK30KKworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpD
YWNoZTo6Q2FjaGVkVmFsdWUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIENhY2hlZFZhbHVlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOworICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHRha2VWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6
ZXhjaGFuZ2UobV92YWx1ZSwgbnVsbHB0cik7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGV4cGly
YXRpb25UaW1lckZpcmVkKCk7CisKKyAgICBUaW1lciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3ZhbHVlOworfTsKKworU2VyaWFsaXplZFNj
cmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWU6OkNhY2hlZFZhbHVlKFJlZlB0cjxTZXJpYWxp
emVkU2NyaXB0VmFsdWU+JiYgdmFsdWUpCisgICAgOiBtX2V4cGlyYXRpb25UaW1lcigqdGhpcywg
JkNhY2hlZFZhbHVlOjpleHBpcmF0aW9uVGltZXJGaXJlZCkKKyAgICAsIG1fdmFsdWUoV1RGTW92
ZSh2YWx1ZSkpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2V4cGlyYXRp
b25UaW1lci5zdGFydE9uZVNob3QoY2FjaGVkU2VyaWFsaXplZFNjcmlwdFZhbHVlTGlmZXRpbWUp
OworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OmFkZChSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiYmIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fdmFsdWVzLmFkZChzZXJpYWxpemVkU2NyaXB0VmFs
dWUtPmlkZW50aWZpZXIoKSwgbWFrZVVuaXF1ZTxDYWNoZWRWYWx1ZT4oV1RGTW92ZShzZXJpYWxp
emVkU2NyaXB0VmFsdWUpKSk7Cit9CisKK1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OnRha2UoSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXV0byBjYWNoZWRWYWx1ZSA9IG1f
dmFsdWVzLnRha2UoaWRlbnRpZmllcik7CisgICAgcmV0dXJuIGNhY2hlZFZhbHVlID8gY2FjaGVk
VmFsdWUtPnRha2VWYWx1ZSgpIDogbnVsbHB0cjsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0
VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQoreworICAg
IGlmICghbV92YWx1ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byByZW1vdmVkVmFsdWUg
PSBDYWNoZTo6c2luZ2xldG9uKCkudGFrZShtX3ZhbHVlLT5pZGVudGlmaWVyKCkpOworICAgIEFT
U0VSVF9VTlVTRUQocmVtb3ZlZFZhbHVlLCByZW1vdmVkVmFsdWUpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJp
YWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNjBlMmZmY2RiODI5YzE1MjAzMGE2Njk5
YzE0Y2YuLjU0ODcyZDY3YWU4MjNmZjkxNjBkYzBiMmQ2ZmVmNTgxOWIxODM5ZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRldGFjaGVkUlRD
RGF0YUNoYW5uZWwuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9B
cnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TdHJvbmcuaD4KQEAgLTExNSw5ICsxMTYsMTIgQEAgcHVi
bGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwogCisg
ICAgdXNpbmcgSWRlbnRpZmllciA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI7Cisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CisKIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZl
Y3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk+JiYKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoSWRlbnRpZmllciwgVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAg
ICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCiAj
ZW5kaWYKQEAgLTEzNiw4ICsxNDAsMjQgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICApOwog
CisgICAgY2xhc3MgQ2FjaGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIENhY2hlJiBzaW5nbGV0b24oKTsKKworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGFkZChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmKTsKKyAgICAgICAgV0VCQ09SRV9F
WFBPUlQgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdGFrZShJZGVudGlmaWVyKTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxDYWNoZT47
CisgICAgICAgIENhY2hlKCkgPSBkZWZhdWx0OworCisgICAgICAgIGNsYXNzIENhY2hlZFZhbHVl
OworICAgICAgICBIYXNoTWFwPElkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRWYWx1
ZT4+IG1fdmFsdWVzOworICAgIH07CisKICAgICBzaXplX3QgY29tcHV0ZU1lbW9yeUNvc3QoKSBj
b25zdDsKIAorICAgIElkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiBtX2RhdGE7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNB
cnJheT4gbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFy
cmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5OwpAQCAt
MTc3LDYgKzE5Nyw5IEBAIHZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKICAgICBmb3IgKGNvbnN0IGF1dG8gJmNoYW5uZWwgOiBtX2RldGFj
aGVkUlRDRGF0YUNoYW5uZWxzKQogICAgICAgICBlbmNvZGVyIDw8ICpjaGFubmVsOwogI2VuZGlm
CisKKyAgICBDYWNoZTo6c2luZ2xldG9uKCkuYWRkKGNvbnN0X2Nhc3Q8U2VyaWFsaXplZFNjcmlw
dFZhbHVlKj4odGhpcykpOworICAgIGVuY29kZXIgPDwgbV9pZGVudGlmaWVyOwogfQogCiB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtMjMwLDcgKzI1MywxNiBAQCBSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFdURk1vdmUoZGF0YSksIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0Fy
cmF5KQorICAgIElkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFdlIGFyZSBu
b3QgYWJsZSB0byBzZXJpYWxpemUgdGhpbmdzIGxpa2UgV0FTTSBtb2R1bGVzIHNvIHJldXNlIHRo
ZSBleGlzdGluZyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgaWYgc3RpbGwgYWxpdmUKKyAgICAvLyB1
cG9uIGRlc2VyaWFsaXphdGlvbiBpbnN0ZWFkIG9mIGNvbnN0cnVjdGluZyBhIG5ldyBTZXJpYWxp
emVkU2NyaXB0VmFsdWUgZnJvbSBkZXNlcmlhbGl6ZWQgZGF0YS4KKyAgICBpZiAoYXV0byBleGlz
dGluZ1ZhbHVlID0gQ2FjaGU6OnNpbmdsZXRvbigpLnRha2UoaWRlbnRpZmllcikpCisgICAgICAg
IHJldHVybiBleGlzdGluZ1ZhbHVlLnJlbGVhc2VOb25OdWxsKCk7CisKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoaWRlbnRpZmllciwgV1RGTW92ZShkYXRh
KSwgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCiAjaWYgRU5BQkxFKFdFQl9SVEMp
CiAgICAgICAgICwgV1RGTW92ZShkZXRhY2hlZFJUQ0RhdGFDaGFubmVscykKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
SWRlbnRpZmllci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlSWRlbnRpZmllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMzNiZjYxMmVmYWQ1NWZkYTczZGZlYTdm
OWZlNWFkNDRiMTgxZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hh
c2hlci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyIHsKKyAgICBQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmll
cjsKKworICAgIGVudW0gVmFsdWVJZGVudGlmaWVyVHlwZSB7IH07CisgICAgdXNpbmcgVmFsdWVJ
ZGVudGlmaWVyID0gT2JqZWN0SWRlbnRpZmllcjxWYWx1ZUlkZW50aWZpZXJUeXBlPjsKKyAgICBW
YWx1ZUlkZW50aWZpZXIgdmFsdWVJZGVudGlmaWVyOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNv
bnN0IHsgcmV0dXJuIGNvbXB1dGVIYXNoKHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksIHZh
bHVlSWRlbnRpZmllci50b1VJbnQ2NCgpKTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29k
ZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+
IGRlY29kZShEZWNvZGVyJik7Cit9OworCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGEsIGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXImIGIpCit7CisgICAgcmV0dXJuIGEucHJvY2Vzc0lkZW50aWZpZXIgPT0g
Yi5wcm9jZXNzSWRlbnRpZmllciAmJiBhLnZhbHVlSWRlbnRpZmllciA9PSBiLnZhbHVlSWRlbnRp
ZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgU2VyaWFsaXplZFNjcmlw
dFZhbHVlSWRlbnRpZmllcjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAg
ZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRpZmllciA8PCB2YWx1ZUlkZW50aWZpZXI7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUlkZW50aWZpZXI+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHBy
b2Nlc3NJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAg
aWYgKCFwcm9jZXNzSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVJZGVudGlmaWVyPiB2YWx1ZUlkZW50aWZpZXI7CisgICAg
ZGVjb2RlciA+PiB2YWx1ZUlkZW50aWZpZXI7CisgICAgaWYgKCF2YWx1ZUlkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7ICpwcm9jZXNzSWRl
bnRpZmllciwgKnZhbHVlSWRlbnRpZmllciB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworbmFtZXNwYWNlIFdURiB7CisKK3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVySGFzaCB7CisgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9
CisgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlSWRlbnRpZmllciYgYSwgY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRl
bnRpZmllciYgYikgeyByZXR1cm4gYSA9PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2Fm
ZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyPiA6
IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmll
ciBlbXB0eVZhbHVlKCkgeyByZXR1cm4geyB9OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1
Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYg
c2xvdCkgeyBuZXcgKE5vdE51bGwsICZzbG90LnByb2Nlc3NJZGVudGlmaWVyKSBXZWJDb3JlOjpQ
cm9jZXNzSWRlbnRpZmllcihXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0
aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyJiBzbG90KSB7IHJldHVybiBzbG90LnByb2Nlc3NJZGVudGlmaWVyLmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0KK307CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRI
YXNoPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IDogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllckhhc2ggeyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCmluZGV4IGMxYzVkYzk4NmFjYjcyMzQyZWQxMDBkNmZk
YzlkOTE2MGZkOGM5MjcuLjkwZjk1YjljOTk5OWEzZjhhNDg2N2Y0NTc3OGYxZWYzYzE5YTUxNjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcApAQCAtMTM5LDcgKzEzOSwxMSBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVj
dCYgc3RhdGUsIEpTQzo6SlNWYQogICAgIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwogCiAgICAg
VmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9ydD4+IHBvcnRzOwotICAgIGF1dG8gbWVzc2FnZURhdGEg
PSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZN
b3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cyk7CisKKyAgICAvLyBGSVhNRTogQXQgdGhlIHRp
bWUgb2Ygc2VyaWFsaXphdGlvbiwgd2UgZG9uJ3Qga25vdyBpZiB0aGUgdGFyZ2V0IGlzIGEgd2lu
ZG93LCBhIHdvcmtlciBvciBzb21ldGhpbmcgZWxzZS4gV2Ugd2lsbCBvbmx5IGtub3cgYXQgdGhl
IHRpbWUgb2YKKyAgICAvLyBkZXNlcmlhbGl6YXRpb24uIFRoaXMgaXMgYW4gaXNzdWUgc2luY2Ug
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoKSB3aWxsIHJldHVybiBhbiBleGNlcHRpb24g
aWYgV2FzbSBtb2R1bGVzIC8gbWVtb3J5IGhhbmRsZXMgYXJlIHByZXNlbnQgYW5kIHRoZSBjb250
ZXh0CisgICAgLy8gaXMgbm90IFdvcmtlclBvc3RNZXNzYWdlLgorICAgIGF1dG8gbWVzc2FnZURh
dGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBX
VEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6Oldv
cmtlclBvc3RNZXNzYWdlKTsKICAgICBpZiAobWVzc2FnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBtZXNzYWdlRGF0YS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAz
MzA4YWIwZGFhMTA0NmFjNTgzNDY3OTRjMTc2OWNlYjBlYzUxNDYxLi4zNGExY2FhNzljNGQ2NThh
MWVhMjYyY2ZiODAzZjA4ZDM0N2FlYWExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgt
MTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVbmFibGUgdG8g
cG9zdE1lc3NhZ2UgYSBXZWJBc3NlbWJseSBtb2R1bGUgdG8gYSB3b3JrbGV0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwMzgKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzcyNTk2NTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVwZGF0ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXphdGlv
biB2ZXJzaW9uIGluIHRoZSB0ZXN0LgorCisgICAgICAgICogZmFzdC9zdG9yYWdlL3NlcmlhbGl6
ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisKIDIwMjEtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgW0FwcCBQcml2YWN5IFJlcG9ydF0gU29t
ZSBIVFRQIFJlZGlyZWN0cyBmcm9tIG5vbiBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGFyZSBtYXJr
ZWQgYXBwIGluaXRpYXRlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMWYxMzU5
YmRmNjk2MTNhODZmNmMwNDJkMDI4NjAwYTE5OGNkMTUzMC4uYmE3ZTQ0NWMxNTVkYWQyYTc4YjZm
ZWVkNjM3N2IwMzg0NzA0NjRhNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMjEtMDgtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBVbmFibGUgdG8gcG9zdE1lc3NhZ2UgYSBXZWJBc3NlbWJseSBtb2R1bGUgdG8g
YSB3b3JrbGV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMjAwMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNTk2NTU2PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgV1BUIHRlc3Qg
dGhhdCBpcyBub3cgcGFzc2luZy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L3NlcmlhbGl6YXRpb24vbW9kdWxlL3dpbmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4cGVj
dGVkLnR4dDoKKwogMjAyMS0wOC0xOSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIEltcGxlbWVudCA6OmJhY2tkcm9wIHBzZXVkbyBlbGVtZW50CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCmluZGV4
IGViMTY2M2ZiMDBjNGU1NzllZjdmNjJiN2JlNTNlYzQ5NDdjMjJmYmYuLjU1NGEwMmRmMTdhZDUw
MGQxYWEwMzM0NjcyMGY2MjNmY2E3OTE0NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
c3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAog
ICAgIDxib2R5PgogICAgICAgICA8c2NyaXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4
MDg7Citjb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDk7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBR
JkQgaGVscGVyIGZvciBmdXR1cmUgYWR2ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRo
aXMuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3Vj
Y2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1
Y2Nlc3MtZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNjJkYTRjYzM1Mjk1ZTMyOGFhNTRi
NzY0NjVhZjEuLjBhY2UxZTZmNjI5MzU3NTEwZmQzNjY5NmYxY2FhNzYwZGJlMzRmNWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9z
ZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93
YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3dpbmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4
cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBwb3N0TWVzc2FnaW5nIHRvIGEgZGVk
aWNhdGVkIHdvcmtlciB2aWEgTWVzc2FnZUNoYW5uZWwgYWxsb3dzIHRoZW0gdG8gaW5zdGFudGlh
dGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAi
RGF0YUNsb25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuIgorUEFTUyBwb3N0
TWVzc2FnaW5nIHRvIGEgZGVkaWNhdGVkIHdvcmtlciB2aWEgTWVzc2FnZUNoYW5uZWwgYWxsb3dz
IHRoZW0gdG8gaW5zdGFudGlhdGUKIAo=
</data>
<flag name="commit-queue"
          id="458771"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435865</attachid>
            <date>2021-08-19 08:59:22 -0700</date>
            <delta_ts>2021-08-19 10:40:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220038-20210819085922.patch</filename>
            <type>text/plain</type>
            <size>31178</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkYWE5N2RlNGNkM2I5
NzMzNTU3NmZiNGQ2NzI0NDI1MmM1ZGZjMy4uZGVjN2VhMzNiNjhhNWY1NzhhOWM2ZjdhYTNmOTUx
NjQ0MDgzODhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVW5hYmxlIHRvIHBvc3RNZXNz
YWdlIGEgV2ViQXNzZW1ibHkgbW9kdWxlIHRvIGEgd29ya2xldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDM4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MjU5NjU1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCZWNhdXNlIG9mIHNlcnZpY2Ugd29ya2VyIHN1cHBvcnQsIGFuZCBiZWNhdXNlIHdl
IGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgICAgICAgd2hvIHRoZSBkZXN0aW5hdGlvbiBpcyB3aGVu
IGNhbGxpbmcgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKSwgZXZlcnkKKyAgICAgICAgbWVzc2Fn
ZSBnZXRzIHJvdXRlZCB2aWEgdGhlIG5ldHdvcmsgcHJvY2VzcywgZXZlbiBpZiB0aGUgZGVzdGlu
YXRpb24KKyAgICAgICAgZW5kcyB1cCBiZWluZyBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIGlz
IGFuIGlzc3VlIGJlY2F1c2Ugc29tZSBvZgorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJ3MgZGF0YSBtZW1iZXJzIGNhbm5vdCBiZSBzZXJpYWxpemVkIGFuZAorICAgICAgICBzZW50
IHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgYW4gaXNzdWUg
Zm9yCisgICAgICAgIFdBU00gbW9kdWxlcyBhbmQgbWVtb3J5IGhhbmRsZXMuCisKKyAgICAgICAg
dG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBJIGludHJvZHVjZWQgYSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgY2FjaGUuCisgICAgICAgIEVhY2ggU2VyaWFsaXplZFNjcmlwdFZhbHVlIGdldHMgYXNzaWdu
ZWQgYSBnbG9iYWxseSB1bmlxdWUKKyAgICAgICAgaWRlbnRpZmllciAodW5pcXVlIGFjcm9zcyBh
bGwgV2ViUHJvY2Vzc2VzKS4gV2hlbiBzZW5kaW5nIGEKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIHZpYSBJUEMsIHdlIGFsc28gc2VyaWFsaXplZCBpdHMgaWRlbnRpZmllcgorICAgICAg
ICBhbmQgYWRkIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGhlIGluLXByb2Nlc3MgY2Fj
aGUuIFVwb24KKyAgICAgICAgZGVzZXJpYWxpemF0aW9uIGZyb20gSVBDLCB3ZSBjaGVjayBpZiB0
aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGlzCisgICAgICAgIGluIHRoZSBjYWNoZSBieSB1c2lu
ZyBpdHMgZGVzZXJpYWxpemVkIGlkZW50aWZpZXIuIElmIGl0IGlzIGluIHRoZQorICAgICAgICBj
YWNoZSwgd2UgcmV1c2UgaXQgc28gdGhhdCB3ZSBkb24ndCBsb3NlIHRoZSBkYXRhIG1lbWJlcnMg
dGhhdAorICAgICAgICBjb3VsZG4ndCBiZSBzZXJpYWxpemVkIG92ZXIgSVBDLgorCisgICAgICAg
IFdoZW4gdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uIHByb2Nlc3MgYXJlIHRoZSBzYW1l
IChjb21tb24gY2FzZSksCisgICAgICAgIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb25seSBz
dGF5cyBpbiB0aGUgY2FjaGUgZm9yIGEgc2hvcnQgYW1vdW50IG9mCisgICAgICAgIHRpbWUgKGl0
IGdldHMgYWRkZWQgdG8gdGhlIGNhY2hlIG9uIHNlcmlhbGl6YXRpb24gYW5kIHJlbW92ZWQgdXBv
bgorICAgICAgICBkZXNlcmlhbGl6YXRpb24gYXQgdGhlIGRlc3RpbmF0aW9uKS4gSW4gY2FzZSB0
aGUgZGVzdGluYXRpb24gcHJvY2VzcworICAgICAgICBlbmRzIHVwIGJlaW5nIGEgZGlmZmVyZW50
IHByb2Nlc3MsIGNhY2hlZCBzZXJpYWxpemVkIHNjcmlwdCB2YWx1ZXMgb25seQorICAgICAgICBs
aXZlIGZvciAzMCBzZWNvbmRzIGF0IG1vc3QgaW4gdGhlIGNhY2hlLCB0byBhdm9pZCB3YXN0aW5n
IG1lbW9yeS4KKworICAgICAgICBOb3RlIHRoYXQsIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiwg
aXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvIHNlbmQKKyAgICAgICAgV0FTTSBtb2R1bGVzIC8g
bWVtb3J5IGhhbmRsZXMgYWNyb3NzIGFnZW50IGNsdXN0ZXJzIFsxXS4gSSBoYWQgdG8KKyAgICAg
ICAgaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IgaW4gb3JkZXIgdG8gbm90IHJlZ3Jlc3MgdGhlIGZv
bGxvd2luZyB0ZXN0OgorICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0
dHBzLmh0bWwKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2VydmljZSB3b3JrZXJzIHNob3VsZCBi
ZWxvbmcgdG8gYSBkaWZmZXJlbnQgYWdlbnQgY2x1c3RlciwKKyAgICAgICAgZXZlbiBpZiB0aGV5
IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzLgorCisgICAgICAgIFsxXSBodHRwczovL3RjMzkuZXMv
ZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgICAgIFsyXSBodHRwczovL3dlYmFzc2Vt
Ymx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlZmF1bHRBZ2VudENsdXN0ZXJJRCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRDbHVzdGVySUQgY29u
c3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6dGFrZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6dGFrZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRW
YWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllcjo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisKIDIwMjEtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uOjptX3RyYW5zY2Vp
dmVyU2V0IGRvZXMgbm90IG5lZWQgdG8gYmUgYWxsb2NhdGVkIHNlcGFyYXRlbHkgZnJvbSBpdHMg
UlRDUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2ZDRjMTA2ZWU3
OGUwNTEwNjQ2YmQ2OWRlYjJjMmNmY2YuLjlkMTJiNGRlMjFhNzBlMjk3ZTUwYzVkOTE4M2U1MDRl
Y2ZjOTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjkwLDYgKzI5MCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAogICAgIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisgICAgYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCiAgICAgYmluZGluZ3MvanMvU3RyaW5nQWRhcHRv
cnMuaAogICAgIGJpbmRpbmdzL2pzL1dlYkNvcmVKSVRPcGVyYXRpb25zLmgKICAgICBiaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2NDhiODRlMTBjNjRmOTNh
MTY5ZjlkOTMxMzYxNWYwYzEyMGJiOTguLjViNDcwOGE0Y2VkMDU5YmJhYjdiMTRhZThkMGQ0YzEy
ODg0MTYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyODcsNiArMTI4Nyw3IEBACiAJCTQ2NzJBQTk4MjZCMDk0MzMwMEU2
RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NjI2QjA5NDIxMDBFNkVDMzggLyogQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2NzJBQTk5MjZCMDk0M0YwMEU2RUMzOCAvKiBDcm9zc09yaWdp
bk9wZW5lclBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3MkFBOTcyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3
MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNy
ZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJ
bmNyZW1lbnRlci5oICovOyB9OworCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0
NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERP
TVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAy
MDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzMDQsNiArODMwNSw3IEBACiAJCTQ2NzJBQTk2
MjZCMDk0MjEwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3MkFBOTcyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA2MDBDMjZDREE4QTUwMEExQTVCRiAvKiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjcwMzYsNiArMjcwMzgsNyBAQAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3
Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFD
QjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCiAJCQkJQTc1RTQ5NzQx
MDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAorCQkJCTQ2ODA2
MDBDMjZDREE4QTUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJN0M1MjY2OTYxRjFCMDJGQzAwMEYwNjhCIC8qIFN0cmluZ0FkYXB0b3JzLmggKi8s
CiAJCQkJNDE0QjgyMDIxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8s
CiAJCQkJNDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oICovLApA
QCAtMzQ0OTgsNiArMzQ1MDEsNyBAQAogCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZEMUMx
RjIzRjZFQjVCMDBEOTVCMDYgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEOTNBRUUzMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAg
LyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggOTE2ZDMzZDlkZTc0ZjIyMTNk
YmUzMzQzZWZmM2QwMmEzYWMzNTNjZC4uMzdmY2Q3NmRlMDNmMGJlNzE2NmQ5YWUxNTQ4ZWIwNWRh
YzM0MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcApAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVkQ2xvbmUuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTVRyYXBz
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21TdHJlYW1pbmdDb21waWxl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTU0OCw2ICs1NTEsMTkgQEAgSlNDOjpK
U09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQ
cm9wZXJ0aWVzKEpTQzo6SlMKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUo
KSk7CiB9CiAKK1N0cmluZyBKU0RPTUdsb2JhbE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklE
KCkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmluZyhQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgIi1kZWZhdWx0Iik7Cit9CisKK1N0cmluZyBKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRD
bHVzdGVySUQoKSBjb25zdAoreworICAgIC8vIFNlcnZpY2Ugd29ya2VycyBtYXkgcnVuIGluIHBy
b2Nlc3MgYnV0IHRoZXkgbmVlZCB0byBiZSBpbiBhIHNlcGFyYXRlIGFnZW50IGNsdXN0ZXIuCisg
ICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoUHJvY2Vzczo6aWRlbnRpZmllcigpLnRv
VUludDY0KCksICItc2VydmljZXdvcmtlciIpOworICAgIHJldHVybiBkZWZhdWx0QWdlbnRDbHVz
dGVySUQoKTsKK30KKwogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZjkyMzVkNmIxNjM5OWYwN2Q0MGJjYWU3
OTI3MTE3NWZlYzljYmQ4Zi4uMDI4ZWY0NjlkYzE1NjA3MjE0NzIyMzA3ZTU1YTEwODU4ZDVmNWJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgU3RyaW5nIGFnZW50Q2x1c3RlcklE
KCkgY29uc3Q7CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QWdlbnRDbHVzdGVySUQoKTsKKwog
ICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDUwNDc4NWM5NmQ4ZjU2NDNhOTYxODI2ODU1OTU0ZGUwNjU3ZDZjYzUuLjhiZjg0Yzg2NzczMmRh
OWZhMTFiMWJmNzliNjU5MzViOGRmNWE3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CaWdJbnRPYmplY3QuaD4KQEAgLTg5
LDcgKzkwLDkgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyRmxhZ3MuaD4KICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CkBAIC0xMTAsNyArMTEzLDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogREVGSU5FX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCi1zdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOworY29uc3Rl
eHByIHVuc2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKK2NvbnN0ZXhwciBT
ZWNvbmRzIGNhY2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0aW1lIHsgMzBfcyB9OwogCiBl
bnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21w
bGV0ZWQsCkBAIC0yMzUsNiArMjM5LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCB0eXBlZEFycmF5RWxl
bWVudFNpemUoQXJyYXlCdWZmZXJWaWV3U3VidGFnIHRhZykKICAgICB9CiB9CiAKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCitzdGF0aWMgU3RyaW5nIGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9i
amVjdChKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3Qudm0oKSkpCisgICAg
ICAgIHJldHVybiBKU0RPTUdsb2JhbE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklEKCk7Cisg
ICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5hZ2Vu
dENsdXN0ZXJJRCgpOworfQorI2VuZGlmCisKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3Bh
Y2VUYWcgOiB1aW50OF90IHsKICAgICBTUkdCID0gMAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9ESVNQTEFZX1AzKQpAQCAtMzIyLDcgKzMzNSw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiAgKiBWZXJzaW9uIDcu
IGFkZGVkIHN1cHBvcnQgZm9yIEZpbGUncyBsYXN0TW9kaWZpZWQgYXR0cmlidXRlLgogICogVmVy
c2lvbiA4LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZURhdGEncyBjb2xvclNwYWNlIGF0dHJpYnV0
ZS4KICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gODsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgVGVybWluYXRvclRhZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQ
cm9wZXJ0aWVzVGFnID0gMHhGRkZGRkZGRDsKQEAgLTEzNDgsNiArMTM2MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBtX3dhc21Nb2R1bGVzLnNpemUoKTsg
CiAgICAgICAgICAgICAgICAgbV93YXNtTW9kdWxlcy5hcHBlbmQobWFrZVJlZihtb2R1bGUtPm1v
ZHVsZSgpKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1vZHVsZVRhZyk7CisgICAgICAg
ICAgICAgICAgd3JpdGUoYWdlbnRDbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KCptX2xleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzYzLDYgKzEzNzcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gbV93YXNtTWVtb3J5SGFu
ZGxlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgbV93YXNtTWVtb3J5SGFuZGxlcy5hcHBlbmQo
bWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRsZSgpKSk7CiAgICAgICAgICAgICAgICAgd3Jp
dGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAgICAgICAgd3JpdGUoYWdlbnRDbHVzdGVySURG
cm9tR2xvYmFsT2JqZWN0KCptX2xleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAg
ICB3cml0ZShpbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CkBAIC0zNDk4LDYgKzM1MTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAgICAgY2FzZSBXYXNtTW9kdWxlVGFnOiB7CisgICAgICAgICAg
ICBpZiAobV92ZXJzaW9uID49IDkpIHsKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL3dlYmFz
c2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisg
ICAgICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGFnZW50Q2x1c3RlcklEOworICAgICAgICAg
ICAgICAgIGJvb2wgYWdlbnRDbHVzdGVySURTdWNjZXNzZnVsbHlSZWFkID0gcmVhZFN0cmluZ0Rh
dGEoYWdlbnRDbHVzdGVySUQpOworICAgICAgICAgICAgICAgIGlmICghYWdlbnRDbHVzdGVySURT
dWNjZXNzZnVsbHlSZWFkIHx8IGFnZW50Q2x1c3RlcklELT5zdHJpbmcoKSAhPSBhZ2VudENsdXN0
ZXJJREZyb21HbG9iYWxPYmplY3QoKm1fZ2xvYmFsT2JqZWN0KSkgeworICAgICAgICAgICAgICAg
ICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7
CiAgICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1vZHVsZXMg
fHwgaW5kZXggPj0gbV93YXNtTW9kdWxlcy0+c2l6ZSgpKSB7CkBAIC0zNTE0LDYgKzM1MzgsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBXYXNtTWVtb3J5VGFnOiB7CisgICAgICAgICAgICBpZiAobV92ZXJzaW9uID49IDkp
IHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgYWdlbnRDbHVzdGVySUQ7CisgICAg
ICAgICAgICAgICAgYm9vbCBhZ2VudENsdXN0ZXJJRFN1Y2Nlc3NmdWxseVJlYWQgPSByZWFkU3Ry
aW5nRGF0YShhZ2VudENsdXN0ZXJJRCk7CisgICAgICAgICAgICAgICAgaWYgKCFhZ2VudENsdXN0
ZXJJRFN1Y2Nlc3NmdWxseVJlYWQgfHwgYWdlbnRDbHVzdGVySUQtPnN0cmluZygpICE9IGFnZW50
Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9nbG9iYWxPYmplY3QpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1aW50MzJfdCBp
bmRleDsKICAgICAgICAgICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRl
eCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCAhbV93YXNtTWVt
b3J5SGFuZGxlcyB8fCBpbmRleCA+PSBtX3dhc21NZW1vcnlIYW5kbGVzLT5zaXplKCkpIHsKQEAg
LTM4OTUsMTggKzM5MjcsMjggQEAgZXJyb3I6CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID0gZGVmYXVsdDsKIAorc3RhdGljIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6SWRlbnRpZmllciBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHJldHVybiB7
CisgICAgICAgIFByb2Nlc3M6OmlkZW50aWZpZXIoKSwKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpJZGVudGlmaWVyOjpWYWx1ZUlkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgp
CisgICAgfTsKK30KKwogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVy
KSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0
YShXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNv
c3QoKTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQorU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8
dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAg
ICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBk
ZXRhY2hlZFJUQ0RhdGFDaGFubmVscwogI2VuZGlmCiAgICAgICAgICkKLSAgICA6IG1fZGF0YShX
VEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1f
ZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShX
VEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAg
ICAgLCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hh
bm5lbHMpKQpAQCAtMzkyNyw3ICszOTY5LDggQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICAg
ICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5
SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVm
ZmVyKSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1f
ZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShX
VEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX3NoYXJlZEJ1ZmZlckNv
bnRlbnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5KSkKICAgICAsIG1f
YmFja2luZ1N0b3JlcyhXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpKQpAQCAtNDQxMiw0ICs0NDU1LDUz
IEBAIElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0Zvcklu
ZGV4ZWREQlN5bmNocm9ub3VzbHkoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorYXV0byBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpzaW5nbGV0b24oKSAtPiBDYWNoZSYKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+IGNhY2hlOworICAgIHJldHVybiBjYWNoZTsKK30K
KworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENhY2hlZFZhbHVlKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHRha2VWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV92YWx1ZSwgbnVsbHB0
cik7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGV4cGlyYXRpb25UaW1lckZpcmVkKCk7CisKKyAg
ICBUaW1lciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX3ZhbHVlOworfTsKKworU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVk
VmFsdWU6OkNhY2hlZFZhbHVlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgdmFsdWUp
CisgICAgOiBtX2V4cGlyYXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFZhbHVlOjpleHBpcmF0aW9u
VGltZXJGaXJlZCkKKyAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNob3QoY2Fj
aGVkU2VyaWFsaXplZFNjcmlwdFZhbHVlTGlmZXRpbWUpOworfQorCit2b2lkIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Q2FjaGU6OmFkZChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG1fdmFsdWVzLmFkZChzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmlkZW50aWZpZXIoKSwgbWFrZVVu
aXF1ZTxDYWNoZWRWYWx1ZT4oV1RGTW92ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKSk7Cit9CisK
K1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2Fj
aGU6OnRha2UoSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgYXV0byBjYWNoZWRWYWx1ZSA9IG1fdmFsdWVzLnRha2UoaWRlbnRpZmllcik7
CisgICAgcmV0dXJuIGNhY2hlZFZhbHVlID8gY2FjaGVkVmFsdWUtPnRha2VWYWx1ZSgpIDogbnVs
bHB0cjsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1
ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQoreworICAgIGlmICghbV92YWx1ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byByZW1vdmVkVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFr
ZShtX3ZhbHVlLT5pZGVudGlmaWVyKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFZhbHVl
LCByZW1vdmVkVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZi
NzU3YTRkNzRmNjBlMmZmY2RiODI5YzE1MjAzMGE2Njk5YzE0Y2YuLjU0ODcyZDY3YWU4MjNmZjkx
NjBkYzBiMmQ2ZmVmNTgxOWIxODM5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmcuaD4KQEAgLTExNSw5ICsxMTYsMTIgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwogCisgICAgdXNpbmcgSWRlbnRpZmllciA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciwgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+JiYKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCiAjZW5kaWYKQEAgLTEzNiw4ICsxNDAsMjQg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICApOwogCisgICAgY2xhc3MgQ2FjaGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhY2hlJiBzaW5nbGV0b24o
KTsKKworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZChSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdGFrZShJZGVudGlmaWVyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxDYWNoZT47CisgICAgICAgIENhY2hlKCkgPSBkZWZh
dWx0OworCisgICAgICAgIGNsYXNzIENhY2hlZFZhbHVlOworICAgICAgICBIYXNoTWFwPElkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRWYWx1ZT4+IG1fdmFsdWVzOworICAgIH07CisK
ICAgICBzaXplX3QgY29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdDsKIAorICAgIElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
bV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5OwpAQCAtMTc3LDYgKzE5Nyw5IEBAIHZvaWQgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBm
b3IgKGNvbnN0IGF1dG8gJmNoYW5uZWwgOiBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKQogICAg
ICAgICBlbmNvZGVyIDw8ICpjaGFubmVsOwogI2VuZGlmCisKKyAgICBDYWNoZTo6c2luZ2xldG9u
KCkuYWRkKGNvbnN0X2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4odGhpcykpOworICAgIGVu
Y29kZXIgPDwgbV9pZGVudGlmaWVyOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAt
MjMwLDcgKzI1MywxNiBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoZGF0
YSksIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KQorICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFdlIGFyZSBub3QgYWJsZSB0byBzZXJpYWxpemUgdGhp
bmdzIGxpa2UgV0FTTSBtb2R1bGVzIHNvIHJldXNlIHRoZSBleGlzdGluZyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgaWYgc3RpbGwgYWxpdmUKKyAgICAvLyB1cG9uIGRlc2VyaWFsaXphdGlvbiBpbnN0
ZWFkIG9mIGNvbnN0cnVjdGluZyBhIG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZnJvbSBkZXNl
cmlhbGl6ZWQgZGF0YS4KKyAgICBpZiAoYXV0byBleGlzdGluZ1ZhbHVlID0gQ2FjaGU6OnNpbmds
ZXRvbigpLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBleGlzdGluZ1ZhbHVlLnJl
bGVhc2VOb25OdWxsKCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoaWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgICAgICwgV1RGTW92ZShkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZkMzNiZjYxMmVmYWQ1NWZkYTczZGZlYTdmOWZlNWFkNDRiMTgxZTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nl
c3NJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyIHsKKyAgICBQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKworICAgIGVudW0gVmFsdWVJZGVu
dGlmaWVyVHlwZSB7IH07CisgICAgdXNpbmcgVmFsdWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxWYWx1ZUlkZW50aWZpZXJUeXBlPjsKKyAgICBWYWx1ZUlkZW50aWZpZXIgdmFsdWVJZGVu
dGlmaWVyOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVIYXNo
KHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksIHZhbHVlSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXImIGEsIGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGIpCit7Cisg
ICAgcmV0dXJuIGEucHJvY2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiBh
LnZhbHVlSWRlbnRpZmllciA9PSBiLnZhbHVlSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRp
ZmllciA8PCB2YWx1ZUlkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citz
dGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0
ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGRl
Y29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVJ
ZGVudGlmaWVyPiB2YWx1ZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB2YWx1ZUlkZW50aWZp
ZXI7CisgICAgaWYgKCF2YWx1ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4geyB7ICpwcm9jZXNzSWRlbnRpZmllciwgKnZhbHVlSWRlbnRpZmll
ciB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
ZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3Qg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9
PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4g
eyB9OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZz
bG90LnByb2Nlc3NJZGVudGlmaWVyKSBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcihXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShj
b25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IHJl
dHVybiBzbG90LnByb2Nlc3NJZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0K
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXI+IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllckhh
c2ggeyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
CmluZGV4IGMxYzVkYzk4NmFjYjcyMzQyZWQxMDBkNmZkYzlkOTE2MGZkOGM5MjcuLjkwZjk1Yjlj
OTk5OWEzZjhhNDg2N2Y0NTc3OGYxZWYzYzE5YTUxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcApAQCAtMTM5LDcgKzEzOSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9y
dDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEpTQzo6SlNWYQogICAg
IHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IHBvcnRzOwotICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBw
b3J0cyk7CisKKyAgICAvLyBGSVhNRTogQXQgdGhlIHRpbWUgb2Ygc2VyaWFsaXphdGlvbiwgd2Ug
ZG9uJ3Qga25vdyBpZiB0aGUgdGFyZ2V0IGlzIGEgd2luZG93LCBhIHdvcmtlciBvciBzb21ldGhp
bmcgZWxzZS4gV2Ugd2lsbCBvbmx5IGtub3cgYXQgdGhlIHRpbWUgb2YKKyAgICAvLyBkZXNlcmlh
bGl6YXRpb24uIFRoaXMgaXMgYW4gaXNzdWUgc2luY2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoKSB3aWxsIHJldHVybiBhbiBleGNlcHRpb24gaWYgV2FzbSBtb2R1bGVzIC8gbWVtb3J5
IGhhbmRsZXMgYXJlIHByZXNlbnQgYW5kIHRoZSBjb250ZXh0CisgICAgLy8gaXMgbm90IFdvcmtl
clBvc3RNZXNzYWdlLgorICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIp
LCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKICAgICBp
ZiAobWVzc2FnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBtZXNzYWdlRGF0
YS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzA4YWIwZGFhMTA0NmFjNTgzNDY3OTRj
MTc2OWNlYjBlYzUxNDYxLi4zNGExY2FhNzljNGQ2NThhMWVhMjYyY2ZiODAzZjA4ZDM0N2FlYWEx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVbmFibGUgdG8gcG9zdE1lc3NhZ2UgYSBXZWJBc3NlbWJs
eSBtb2R1bGUgdG8gYSB3b3JrbGV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAwMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNTk2NTU2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXphdGlvbiB2ZXJzaW9uIGluIHRoZSB0ZXN0Lgor
CisgICAgICAgICogZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisK
IDIwMjEtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0FwcCBQcml2YWN5IFJlcG9ydF0gU29tZSBIVFRQIFJlZGlyZWN0cyBmcm9tIG5v
biBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGFyZSBtYXJrZWQgYXBwIGluaXRpYXRlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMWYxMzU5YmRmNjk2MTNhODZmNmMwNDJkMDI4NjAw
YTE5OGNkMTUzMC4uYmE3ZTQ0NWMxNTVkYWQyYTc4YjZmZWVkNjM3N2IwMzg0NzA0NjRhNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMTkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVbmFibGUgdG8gcG9z
dE1lc3NhZ2UgYSBXZWJBc3NlbWJseSBtb2R1bGUgdG8gYSB3b3JrbGV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwMzgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzcyNTk2NTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlYmFzZWxpbmUgV1BUIHRlc3QgdGhhdCBpcyBub3cgcGFzc2luZy4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3dp
bmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wOC0xOSAg
VGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCA6OmJhY2tk
cm9wIHBzZXVkbyBlbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uv
c2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCmluZGV4IGViMTY2M2ZiMDBjNGU1NzllZjdmNjJi
N2JlNTNlYzQ5NDdjMjJmYmYuLjU1NGEwMmRmMTdhZDUwMGQxYWEwMzM0NjcyMGY2MjNmY2E3OTE0
NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNj
cmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2Ny
aXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDg7Citjb25zdCBjdXJyZW50VmVyc2lv
biA9IDB4MDk7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2
ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9u
L21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlv
bi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0CmluZGV4
IGQzMGI3ZTZlMjdlNjJkYTRjYzM1Mjk1ZTMyOGFhNTRiNzY0NjVhZjEuLjBhY2UxZTZmNjI5MzU3
NTEwZmQzNjY5NmYxY2FhNzYwZGJlMzRmNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5k
b3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxl
L3dpbmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMg
QEAKIAotRkFJTCBwb3N0TWVzc2FnaW5nIHRvIGEgZGVkaWNhdGVkIHdvcmtlciB2aWEgTWVzc2Fn
ZUNoYW5uZWwgYWxsb3dzIHRoZW0gdG8gaW5zdGFudGlhdGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRs
ZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRGF0YUNsb25lRXJyb3I6IFRoZSBvYmpl
Y3QgY2FuIG5vdCBiZSBjbG9uZWQuIgorUEFTUyBwb3N0TWVzc2FnaW5nIHRvIGEgZGVkaWNhdGVk
IHdvcmtlciB2aWEgTWVzc2FnZUNoYW5uZWwgYWxsb3dzIHRoZW0gdG8gaW5zdGFudGlhdGUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435882</attachid>
            <date>2021-08-19 10:40:38 -0700</date>
            <delta_ts>2021-08-23 08:11:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220038-20210819104037.patch</filename>
            <type>text/plain</type>
            <size>36711</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjNkYWE5N2RlNGNkM2I5
NzMzNTU3NmZiNGQ2NzI0NDI1MmM1ZGZjMy4uZGVjN2VhMzNiNjhhNWY1NzhhOWM2ZjdhYTNmOTUx
NjQ0MDgzODhjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVW5hYmxlIHRvIHBvc3RNZXNz
YWdlIGEgV2ViQXNzZW1ibHkgbW9kdWxlIHRvIGEgd29ya2xldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDM4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MjU5NjU1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCZWNhdXNlIG9mIHNlcnZpY2Ugd29ya2VyIHN1cHBvcnQsIGFuZCBiZWNhdXNlIHdl
IGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgICAgICAgd2hvIHRoZSBkZXN0aW5hdGlvbiBpcyB3aGVu
IGNhbGxpbmcgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKSwgZXZlcnkKKyAgICAgICAgbWVzc2Fn
ZSBnZXRzIHJvdXRlZCB2aWEgdGhlIG5ldHdvcmsgcHJvY2VzcywgZXZlbiBpZiB0aGUgZGVzdGlu
YXRpb24KKyAgICAgICAgZW5kcyB1cCBiZWluZyBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIGlz
IGFuIGlzc3VlIGJlY2F1c2Ugc29tZSBvZgorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJ3MgZGF0YSBtZW1iZXJzIGNhbm5vdCBiZSBzZXJpYWxpemVkIGFuZAorICAgICAgICBzZW50
IHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgYW4gaXNzdWUg
Zm9yCisgICAgICAgIFdBU00gbW9kdWxlcyBhbmQgbWVtb3J5IGhhbmRsZXMuCisKKyAgICAgICAg
dG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBJIGludHJvZHVjZWQgYSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgY2FjaGUuCisgICAgICAgIEVhY2ggU2VyaWFsaXplZFNjcmlwdFZhbHVlIGdldHMgYXNzaWdu
ZWQgYSBnbG9iYWxseSB1bmlxdWUKKyAgICAgICAgaWRlbnRpZmllciAodW5pcXVlIGFjcm9zcyBh
bGwgV2ViUHJvY2Vzc2VzKS4gV2hlbiBzZW5kaW5nIGEKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIHZpYSBJUEMsIHdlIGFsc28gc2VyaWFsaXplZCBpdHMgaWRlbnRpZmllcgorICAgICAg
ICBhbmQgYWRkIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGhlIGluLXByb2Nlc3MgY2Fj
aGUuIFVwb24KKyAgICAgICAgZGVzZXJpYWxpemF0aW9uIGZyb20gSVBDLCB3ZSBjaGVjayBpZiB0
aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGlzCisgICAgICAgIGluIHRoZSBjYWNoZSBieSB1c2lu
ZyBpdHMgZGVzZXJpYWxpemVkIGlkZW50aWZpZXIuIElmIGl0IGlzIGluIHRoZQorICAgICAgICBj
YWNoZSwgd2UgcmV1c2UgaXQgc28gdGhhdCB3ZSBkb24ndCBsb3NlIHRoZSBkYXRhIG1lbWJlcnMg
dGhhdAorICAgICAgICBjb3VsZG4ndCBiZSBzZXJpYWxpemVkIG92ZXIgSVBDLgorCisgICAgICAg
IFdoZW4gdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uIHByb2Nlc3MgYXJlIHRoZSBzYW1l
IChjb21tb24gY2FzZSksCisgICAgICAgIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb25seSBz
dGF5cyBpbiB0aGUgY2FjaGUgZm9yIGEgc2hvcnQgYW1vdW50IG9mCisgICAgICAgIHRpbWUgKGl0
IGdldHMgYWRkZWQgdG8gdGhlIGNhY2hlIG9uIHNlcmlhbGl6YXRpb24gYW5kIHJlbW92ZWQgdXBv
bgorICAgICAgICBkZXNlcmlhbGl6YXRpb24gYXQgdGhlIGRlc3RpbmF0aW9uKS4gSW4gY2FzZSB0
aGUgZGVzdGluYXRpb24gcHJvY2VzcworICAgICAgICBlbmRzIHVwIGJlaW5nIGEgZGlmZmVyZW50
IHByb2Nlc3MsIGNhY2hlZCBzZXJpYWxpemVkIHNjcmlwdCB2YWx1ZXMgb25seQorICAgICAgICBs
aXZlIGZvciAzMCBzZWNvbmRzIGF0IG1vc3QgaW4gdGhlIGNhY2hlLCB0byBhdm9pZCB3YXN0aW5n
IG1lbW9yeS4KKworICAgICAgICBOb3RlIHRoYXQsIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiwg
aXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvIHNlbmQKKyAgICAgICAgV0FTTSBtb2R1bGVzIC8g
bWVtb3J5IGhhbmRsZXMgYWNyb3NzIGFnZW50IGNsdXN0ZXJzIFsxXS4gSSBoYWQgdG8KKyAgICAg
ICAgaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IgaW4gb3JkZXIgdG8gbm90IHJlZ3Jlc3MgdGhlIGZv
bGxvd2luZyB0ZXN0OgorICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0
dHBzLmh0bWwKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2VydmljZSB3b3JrZXJzIHNob3VsZCBi
ZWxvbmcgdG8gYSBkaWZmZXJlbnQgYWdlbnQgY2x1c3RlciwKKyAgICAgICAgZXZlbiBpZiB0aGV5
IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzLgorCisgICAgICAgIFsxXSBodHRwczovL3RjMzkuZXMv
ZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgICAgIFsyXSBodHRwczovL3dlYmFzc2Vt
Ymx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlZmF1bHRBZ2VudENsdXN0ZXJJRCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRDbHVzdGVySUQgY29u
c3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6dGFrZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6dGFrZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRW
YWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllcjo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisKIDIwMjEtMDgtMTkgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJUQ1BlZXJDb25uZWN0aW9uOjptX3RyYW5zY2Vp
dmVyU2V0IGRvZXMgbm90IG5lZWQgdG8gYmUgYWxsb2NhdGVkIHNlcGFyYXRlbHkgZnJvbSBpdHMg
UlRDUGVlckNvbm5lY3Rpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDYyYjZlZTE2ZDRjMTA2ZWU3
OGUwNTEwNjQ2YmQ2OWRlYjJjMmNmY2YuLjlkMTJiNGRlMjFhNzBlMjk3ZTUwYzVkOTE4M2U1MDRl
Y2ZjOTgzNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMjkwLDYgKzI5MCw3IEBAIHNldChXZWJD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBiaW5kaW5ncy9qcy9TY3JpcHRXcmFw
cGFibGUuaAogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZUlubGluZXMuaAogICAgIGJp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisgICAgYmluZGluZ3MvanMvU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCiAgICAgYmluZGluZ3MvanMvU3RyaW5nQWRhcHRv
cnMuaAogICAgIGJpbmRpbmdzL2pzL1dlYkNvcmVKSVRPcGVyYXRpb25zLmgKICAgICBiaW5kaW5n
cy9qcy9XZWJDb3JlVHlwZWRBcnJheUNvbnRyb2xsZXIuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGY2NDhiODRlMTBjNjRmOTNh
MTY5ZjlkOTMxMzYxNWYwYzEyMGJiOTguLjViNDcwOGE0Y2VkMDU5YmJhYjdiMTRhZThkMGQ0YzEy
ODg0MTYzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTEyODcsNiArMTI4Nyw3IEBACiAJCTQ2NzJBQTk4MjZCMDk0MzMwMEU2
RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NjI2QjA5NDIxMDBFNkVDMzggLyogQ3Jv
c3NPcmlnaW5FbWJlZGRlclBvbGljeS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTQ2NzJBQTk5MjZCMDk0M0YwMEU2RUMzOCAvKiBDcm9zc09yaWdp
bk9wZW5lclBvbGljeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDY3MkFBOTcyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY3
MzAyMDIxQzRFRkU3ODAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNy
ZW1lbnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJ
bmNyZW1lbnRlci5oICovOyB9OworCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk0NjgyRDIwMDFGNzk3ODMwMDBDODYzREIgLyogU3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2ODJEMUZGMUY3OTc4MjMwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2ODM0
NEUwMUVEREZBQUEwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MzQ0REUxRURERkE1RjAwQjc3OTVCIC8qIERP
TVJlY3RMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDY5Q0NDRkUyNjlEMDIxQzAwNkUwMzE0IC8qIEJyb2FkY2FzdENoYW5uZWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2OUNDQ0ZDMjY5RDAy
MDIwMDZFMDMxNCAvKiBCcm9hZGNhc3RDaGFubmVsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTgzMDQsNiArODMwNSw3IEBACiAJCTQ2NzJBQTk2
MjZCMDk0MjEwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9saWN5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNDY3MkFBOTcyNkIwOTQyMTAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9s
aWN5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2NzMwMjAxMUM0RUZFNjYwMEJDQjM1NyAvKiBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ2ODA2MDBDMjZDREE4QTUwMEExQTVCRiAvKiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDY4MkQxRkYxRjc5NzgyMzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0NERDMUVEREZBNUYwMEI3Nzk1QiAv
KiBET01SZWN0TGlzdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NUmVjdExpc3QuaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NjgzNDRERDFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NUmVjdExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjcwMzYsNiArMjcwMzgsNyBAQAogCQkJCTE0MDBEN0E3MTcxMzZFQTcwMDc3
Q0UwNSAvKiBTY3JpcHRXcmFwcGFibGVJbmxpbmVzLmggKi8sCiAJCQkJQTc1RTQ5NzUxMDc1MkFD
QjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgKi8sCiAJCQkJQTc1RTQ5NzQx
MDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oICovLAorCQkJCTQ2ODA2
MDBDMjZDREE4QTUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgg
Ki8sCiAJCQkJN0M1MjY2OTYxRjFCMDJGQzAwMEYwNjhCIC8qIFN0cmluZ0FkYXB0b3JzLmggKi8s
CiAJCQkJNDE0QjgyMDIxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5jcHAgKi8s
CiAJCQkJNDE0QjgyMDMxRDZERjBEOTAwNzdFQkUzIC8qIFN0cnVjdHVyZWRDbG9uZS5oICovLApA
QCAtMzQ0OTgsNiArMzQ1MDEsNyBAQAogCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBT
ZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzZEMUMx
RjIzRjZFQjVCMDBEOTVCMDYgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZVZhbHVlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NjgwNjAwRTI2Q0RBOEI1MDBBMUE1QkYg
LyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTJEOTNBRUUzMTlERjU2NDEwMDJBODZDMyAvKiBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUYxNzU1RDFGM0VCQzgzMDBDNzQ5NTAg
LyogU2VydmljZVdvcmtlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggOTE2ZDMzZDlkZTc0ZjIyMTNk
YmUzMzQzZWZmM2QwMmEzYWMzNTNjZC4uMzdmY2Q3NmRlMDNmMGJlNzE2NmQ5YWUxNTQ4ZWIwNWRh
YzM0MzY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcApAQCAtNDYsOSArNDYsMTEgQEAKICNpbmNsdWRlICJKU1JlbW90ZURPTVdpbmRv
dy5oIgogI2luY2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmts
ZXRHbG9iYWxTY29wZS5oIgorI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCiAjaW5jbHVk
ZSAiUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVh
dHVyZXMuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKKyNpbmNsdWRlICJTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVkQ2xvbmUuaCIKICNp
bmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGUuaCIKQEAgLTYzLDYgKzY1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9WTVRyYXBz
SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dhc21TdHJlYW1pbmdDb21waWxl
ci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1dlYWtHQ01hcElubGluZXMuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZU51bWJlcnMuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKQEAgLTU0OCw2ICs1NTEsMTkgQEAgSlNDOjpK
U09iamVjdCogSlNET01HbG9iYWxPYmplY3Q6Om1vZHVsZUxvYWRlckNyZWF0ZUltcG9ydE1ldGFQ
cm9wZXJ0aWVzKEpTQzo6SlMKICAgICByZXR1cm4gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFs
T2JqZWN0LT52bSgpLCBnbG9iYWxPYmplY3QtPm51bGxQcm90b3R5cGVPYmplY3RTdHJ1Y3R1cmUo
KSk7CiB9CiAKK1N0cmluZyBKU0RPTUdsb2JhbE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklE
KCkKK3sKKyAgICByZXR1cm4gbWFrZVN0cmluZyhQcm9jZXNzOjppZGVudGlmaWVyKCkudG9VSW50
NjQoKSwgIi1kZWZhdWx0Iik7Cit9CisKK1N0cmluZyBKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRD
bHVzdGVySUQoKSBjb25zdAoreworICAgIC8vIFNlcnZpY2Ugd29ya2VycyBtYXkgcnVuIGluIHBy
b2Nlc3MgYnV0IHRoZXkgbmVlZCB0byBiZSBpbiBhIHNlcGFyYXRlIGFnZW50IGNsdXN0ZXIuCisg
ICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoUHJvY2Vzczo6aWRlbnRpZmllcigpLnRv
VUludDY0KCksICItc2VydmljZXdvcmtlciIpOworICAgIHJldHVybiBkZWZhdWx0QWdlbnRDbHVz
dGVySUQoKTsKK30KKwogSlNET01HbG9iYWxPYmplY3QqIHRvSlNET01HbG9iYWxPYmplY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKIHsK
ICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRleHQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKaW5kZXggZjkyMzVkNmIxNjM5OWYwN2Q0MGJjYWU3
OTI3MTE3NWZlYzljYmQ4Zi4uMDI4ZWY0NjlkYzE1NjA3MjE0NzIyMzA3ZTU1YTEwODU4ZDVmNWJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmpl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Q7CiAKKyAgICAvLyBodHRwczovL3RjMzku
ZXMvZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgU3RyaW5nIGFnZW50Q2x1c3RlcklE
KCkgY29uc3Q7CisgICAgc3RhdGljIFN0cmluZyBkZWZhdWx0QWdlbnRDbHVzdGVySUQoKTsKKwog
ICAgIC8vIE1ha2UgYmluZGluZyBjb2RlIGdlbmVyYXRpb24gZWFzaWVyLgogICAgIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QoKSB7IHJldHVybiB0aGlzOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4
IDUwNDc4NWM5NmQ4ZjU2NDNhOTYxODI2ODU1OTU0ZGUwNjU3ZDZjYzUuLjhiZjg0Yzg2NzczMmRh
OWZhMTFiMWJmNzliNjU5MzViOGRmNWE3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNTgsNiArNTgsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CaWdJbnRPYmplY3QuaD4KQEAgLTg5
LDcgKzkwLDkgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9ZYXJyRmxhZ3MuaD4KICNpbmNs
dWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hlci5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8
d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+
CkBAIC0xMTAsNyArMTEzLDggQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogREVGSU5FX0FMTE9D
QVRPUl9XSVRIX0hFQVBfSURFTlRJRklFUihTZXJpYWxpemVkU2NyaXB0VmFsdWUpOwogCi1zdGF0
aWMgY29uc3QgdW5zaWduZWQgbWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQwMDAwOworY29uc3Rl
eHByIHVuc2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKK2NvbnN0ZXhwciBT
ZWNvbmRzIGNhY2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0aW1lIHsgMzBfcyB9OwogCiBl
bnVtIGNsYXNzIFNlcmlhbGl6YXRpb25SZXR1cm5Db2RlIHsKICAgICBTdWNjZXNzZnVsbHlDb21w
bGV0ZWQsCkBAIC0yMzUsNiArMjM5LDE1IEBAIHN0YXRpYyB1bnNpZ25lZCB0eXBlZEFycmF5RWxl
bWVudFNpemUoQXJyYXlCdWZmZXJWaWV3U3VidGFnIHRhZykKICAgICB9CiB9CiAKKyNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCitzdGF0aWMgU3RyaW5nIGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9i
amVjdChKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQoreworICAgIGlmICghZ2xvYmFsT2Jq
ZWN0LmluaGVyaXRzPEpTRE9NR2xvYmFsT2JqZWN0PihnbG9iYWxPYmplY3Qudm0oKSkpCisgICAg
ICAgIHJldHVybiBKU0RPTUdsb2JhbE9iamVjdDo6ZGVmYXVsdEFnZW50Q2x1c3RlcklEKCk7Cisg
ICAgcmV0dXJuIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5hZ2Vu
dENsdXN0ZXJJRCgpOworfQorI2VuZGlmCisKIGVudW0gY2xhc3MgUHJlZGVmaW5lZENvbG9yU3Bh
Y2VUYWcgOiB1aW50OF90IHsKICAgICBTUkdCID0gMAogI2lmIEVOQUJMRShERVNUSU5BVElPTl9D
T0xPUl9TUEFDRV9ESVNQTEFZX1AzKQpAQCAtMzIyLDcgKzMzNSw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCBjb3VudFVzYWdlcyhDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMpCiAgKiBWZXJzaW9uIDcu
IGFkZGVkIHN1cHBvcnQgZm9yIEZpbGUncyBsYXN0TW9kaWZpZWQgYXR0cmlidXRlLgogICogVmVy
c2lvbiA4LiBhZGRlZCBzdXBwb3J0IGZvciBJbWFnZURhdGEncyBjb2xvclNwYWNlIGF0dHJpYnV0
ZS4KICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gODsKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDk7CiBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgVGVybWluYXRvclRhZyA9IDB4RkZGRkZGRkY7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3Ry
aW5nUG9vbFRhZyA9IDB4RkZGRkZGRkU7CiBzdGF0aWMgY29uc3QgdW5zaWduZWQgTm9uSW5kZXhQ
cm9wZXJ0aWVzVGFnID0gMHhGRkZGRkZGRDsKQEAgLTEzNDgsNiArMTM2MSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBtX3dhc21Nb2R1bGVzLnNpemUoKTsg
CiAgICAgICAgICAgICAgICAgbV93YXNtTW9kdWxlcy5hcHBlbmQobWFrZVJlZihtb2R1bGUtPm1v
ZHVsZSgpKSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoV2FzbU1vZHVsZVRhZyk7CisgICAgICAg
ICAgICAgICAgd3JpdGUoYWdlbnRDbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KCptX2xleGljYWxH
bG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAgICB3cml0ZShpbmRleCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xMzYzLDYgKzEzNzcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gbV93YXNtTWVtb3J5SGFu
ZGxlcy5zaXplKCk7CiAgICAgICAgICAgICAgICAgbV93YXNtTWVtb3J5SGFuZGxlcy5hcHBlbmQo
bWFrZVJlZihtZW1vcnktPm1lbW9yeSgpLmhhbmRsZSgpKSk7CiAgICAgICAgICAgICAgICAgd3Jp
dGUoV2FzbU1lbW9yeVRhZyk7CisgICAgICAgICAgICAgICAgd3JpdGUoYWdlbnRDbHVzdGVySURG
cm9tR2xvYmFsT2JqZWN0KCptX2xleGljYWxHbG9iYWxPYmplY3QpKTsKICAgICAgICAgICAgICAg
ICB3cml0ZShpbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICB9CkBAIC0zNDk4LDYgKzM1MTMsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogI2lmIEVOQUJM
RShXRUJBU1NFTUJMWSkKICAgICAgICAgY2FzZSBXYXNtTW9kdWxlVGFnOiB7CisgICAgICAgICAg
ICBpZiAobV92ZXJzaW9uID49IDkpIHsKKyAgICAgICAgICAgICAgICAvLyBodHRwczovL3dlYmFz
c2VtYmx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisg
ICAgICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGFnZW50Q2x1c3RlcklEOworICAgICAgICAg
ICAgICAgIGJvb2wgYWdlbnRDbHVzdGVySURTdWNjZXNzZnVsbHlSZWFkID0gcmVhZFN0cmluZ0Rh
dGEoYWdlbnRDbHVzdGVySUQpOworICAgICAgICAgICAgICAgIGlmICghYWdlbnRDbHVzdGVySURT
dWNjZXNzZnVsbHlSZWFkIHx8IGFnZW50Q2x1c3RlcklELT5zdHJpbmcoKSAhPSBhZ2VudENsdXN0
ZXJJREZyb21HbG9iYWxPYmplY3QoKm1fZ2xvYmFsT2JqZWN0KSkgeworICAgICAgICAgICAgICAg
ICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgdWludDMyX3QgaW5kZXg7
CiAgICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQoaW5kZXgpOwog
ICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2FzbU1vZHVsZXMg
fHwgaW5kZXggPj0gbV93YXNtTW9kdWxlcy0+c2l6ZSgpKSB7CkBAIC0zNTE0LDYgKzM1MzgsMTQg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBXYXNtTWVtb3J5VGFnOiB7CisgICAgICAgICAgICBpZiAobV92ZXJzaW9uID49IDkp
IHsKKyAgICAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgYWdlbnRDbHVzdGVySUQ7CisgICAg
ICAgICAgICAgICAgYm9vbCBhZ2VudENsdXN0ZXJJRFN1Y2Nlc3NmdWxseVJlYWQgPSByZWFkU3Ry
aW5nRGF0YShhZ2VudENsdXN0ZXJJRCk7CisgICAgICAgICAgICAgICAgaWYgKCFhZ2VudENsdXN0
ZXJJRFN1Y2Nlc3NmdWxseVJlYWQgfHwgYWdlbnRDbHVzdGVySUQtPnN0cmluZygpICE9IGFnZW50
Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9nbG9iYWxPYmplY3QpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1aW50MzJfdCBp
bmRleDsKICAgICAgICAgICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFkID0gcmVhZChpbmRl
eCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8fCAhbV93YXNtTWVt
b3J5SGFuZGxlcyB8fCBpbmRleCA+PSBtX3dhc21NZW1vcnlIYW5kbGVzLT5zaXplKCkpIHsKQEAg
LTM4OTUsMTggKzM5MjcsMjggQEAgZXJyb3I6CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6flNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSgpID0gZGVmYXVsdDsKIAorc3RhdGljIFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6SWRlbnRpZmllciBnZW5lcmF0ZUlkZW50aWZpZXIoKQoreworICAgIHJldHVybiB7
CisgICAgICAgIFByb2Nlc3M6OmlkZW50aWZpZXIoKSwKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlOjpJZGVudGlmaWVyOjpWYWx1ZUlkZW50aWZpZXI6OmdlbmVyYXRlVGhyZWFkU2FmZSgp
CisgICAgfTsKK30KKwogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVy
KSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fZGF0
YShXVEZNb3ZlKGJ1ZmZlcikpCiB7CiAgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNv
c3QoKTsKIH0KIAotU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUo
VmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250
ZW50c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQorU2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciBpZGVudGlmaWVyLCBWZWN0b3I8
dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAg
ICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hlZFJUQ0RhdGFDaGFubmVsPj4mJiBk
ZXRhY2hlZFJUQ0RhdGFDaGFubmVscwogI2VuZGlmCiAgICAgICAgICkKLSAgICA6IG1fZGF0YShX
VEZNb3ZlKGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1f
ZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShX
VEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAg
ICAgLCBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKFdURk1vdmUoZGV0YWNoZWRSVENEYXRhQ2hh
bm5lbHMpKQpAQCAtMzkyNyw3ICszOTY5LDggQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWMKICAg
ICAgICAgLCBzdGQ6OnVuaXF1ZV9wdHI8V2FzbU1lbW9yeUhhbmRsZUFycmF5PiB3YXNtTWVtb3J5
SGFuZGxlc0FycmF5CiAjZW5kaWYKICAgICAgICAgKQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVm
ZmVyKSkKKyAgICA6IG1faWRlbnRpZmllcihnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1f
ZGF0YShXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShX
VEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAgLCBtX3NoYXJlZEJ1ZmZlckNv
bnRlbnRzQXJyYXkoV1RGTW92ZShzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5KSkKICAgICAsIG1f
YmFja2luZ1N0b3JlcyhXVEZNb3ZlKGJhY2tpbmdTdG9yZXMpKQpAQCAtNDQxMiw0ICs0NDU1LDUz
IEBAIElEQlZhbHVlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0Zvcklu
ZGV4ZWREQlN5bmNocm9ub3VzbHkoKQogICAgIHJldHVybiB2YWx1ZTsKIH0KIAorYXV0byBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpzaW5nbGV0b24oKSAtPiBDYWNoZSYKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+IGNhY2hlOworICAgIHJldHVybiBjYWNoZTsKK30K
KworY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVkVmFsdWUgeworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIENhY2hlZFZhbHVlKFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IHRha2VWYWx1ZSgpIHsgcmV0dXJuIHN0ZDo6ZXhjaGFuZ2UobV92YWx1ZSwgbnVsbHB0
cik7IH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGV4cGlyYXRpb25UaW1lckZpcmVkKCk7CisKKyAg
ICBUaW1lciBtX2V4cGlyYXRpb25UaW1lcjsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZh
bHVlPiBtX3ZhbHVlOworfTsKKworU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6Q2FjaGVk
VmFsdWU6OkNhY2hlZFZhbHVlKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYgdmFsdWUp
CisgICAgOiBtX2V4cGlyYXRpb25UaW1lcigqdGhpcywgJkNhY2hlZFZhbHVlOjpleHBpcmF0aW9u
VGltZXJGaXJlZCkKKyAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBtX2V4cGlyYXRpb25UaW1lci5zdGFydE9uZVNob3QoY2Fj
aGVkU2VyaWFsaXplZFNjcmlwdFZhbHVlTGlmZXRpbWUpOworfQorCit2b2lkIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6Q2FjaGU6OmFkZChSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiYmIHNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IG1fdmFsdWVzLmFkZChzZXJpYWxpemVkU2NyaXB0VmFsdWUtPmlkZW50aWZpZXIoKSwgbWFrZVVu
aXF1ZTxDYWNoZWRWYWx1ZT4oV1RGTW92ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUpKSk7Cit9CisK
K1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2Fj
aGU6OnRha2UoSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgYXV0byBjYWNoZWRWYWx1ZSA9IG1fdmFsdWVzLnRha2UoaWRlbnRpZmllcik7
CisgICAgcmV0dXJuIGNhY2hlZFZhbHVlID8gY2FjaGVkVmFsdWUtPnRha2VWYWx1ZSgpIDogbnVs
bHB0cjsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1
ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQoreworICAgIGlmICghbV92YWx1ZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byByZW1vdmVkVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFr
ZShtX3ZhbHVlLT5pZGVudGlmaWVyKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZFZhbHVl
LCByZW1vdmVkVmFsdWUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZi
NzU3YTRkNzRmNjBlMmZmY2RiODI5YzE1MjAzMGE2Njk5YzE0Y2YuLjU0ODcyZDY3YWU4MjNmZjkx
NjBkYzBiMmQ2ZmVmNTgxOWIxODM5ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiQmxvYi5oIgogI2luY2x1ZGUgIkRldGFjaGVkUlRDRGF0YUNoYW5uZWwuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
dHJvbmcuaD4KQEAgLTExNSw5ICsxMTYsMTIgQEAgcHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBP
UlQgflNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpOwogCisgICAgdXNpbmcgSWRlbnRpZmllciA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI7CisgICAgSWRlbnRpZmllciBpZGVudGlmaWVy
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKIHByaXZhdGU6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYKKyAg
ICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoSWRlbnRpZmllciwgVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+JiYKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPERldGFjaGVkUlRDRGF0YUNoYW5uZWw+PiYmCiAjZW5kaWYKQEAgLTEzNiw4ICsxNDAsMjQg
QEAgcHJpdmF0ZToKICNlbmRpZgogICAgICAgICApOwogCisgICAgY2xhc3MgQ2FjaGUgeworICAg
IHB1YmxpYzoKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIENhY2hlJiBzaW5nbGV0b24o
KTsKKworICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZChSZWZQdHI8U2VyaWFsaXplZFNj
cmlwdFZhbHVlPiYmKTsKKyAgICAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gdGFrZShJZGVudGlmaWVyKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBOZXZlckRlc3Ryb3llZDxDYWNoZT47CisgICAgICAgIENhY2hlKCkgPSBkZWZh
dWx0OworCisgICAgICAgIGNsYXNzIENhY2hlZFZhbHVlOworICAgICAgICBIYXNoTWFwPElkZW50
aWZpZXIsIHN0ZDo6dW5pcXVlX3B0cjxDYWNoZWRWYWx1ZT4+IG1fdmFsdWVzOworICAgIH07CisK
ICAgICBzaXplX3QgY29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdDsKIAorICAgIElkZW50aWZpZXIg
bV9pZGVudGlmaWVyOwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4g
bV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5OwpAQCAtMTc3LDYgKzE5Nyw5IEBAIHZvaWQgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBm
b3IgKGNvbnN0IGF1dG8gJmNoYW5uZWwgOiBtX2RldGFjaGVkUlRDRGF0YUNoYW5uZWxzKQogICAg
ICAgICBlbmNvZGVyIDw8ICpjaGFubmVsOwogI2VuZGlmCisKKyAgICBDYWNoZTo6c2luZ2xldG9u
KCkuYWRkKGNvbnN0X2Nhc3Q8U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4odGhpcykpOworICAgIGVu
Y29kZXIgPDwgbV9pZGVudGlmaWVyOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAt
MjMwLDcgKzI1MywxNiBAQCBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFdURk1vdmUoZGF0
YSksIFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KQorICAgIElkZW50aWZpZXIgaWRl
bnRpZmllcjsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlkZW50aWZpZXIpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIC8vIFdlIGFyZSBub3QgYWJsZSB0byBzZXJpYWxpemUgdGhp
bmdzIGxpa2UgV0FTTSBtb2R1bGVzIHNvIHJldXNlIHRoZSBleGlzdGluZyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUgaWYgc3RpbGwgYWxpdmUKKyAgICAvLyB1cG9uIGRlc2VyaWFsaXphdGlvbiBpbnN0
ZWFkIG9mIGNvbnN0cnVjdGluZyBhIG5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgZnJvbSBkZXNl
cmlhbGl6ZWQgZGF0YS4KKyAgICBpZiAoYXV0byBleGlzdGluZ1ZhbHVlID0gQ2FjaGU6OnNpbmds
ZXRvbigpLnRha2UoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBleGlzdGluZ1ZhbHVlLnJl
bGVhc2VOb25OdWxsKCk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoaWRlbnRpZmllciwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNv
bnRlbnRzQXJyYXkpCiAjaWYgRU5BQkxFKFdFQl9SVEMpCiAgICAgICAgICwgV1RGTW92ZShkZXRh
Y2hlZFJUQ0RhdGFDaGFubmVscykKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZkMzNiZjYxMmVmYWQ1NWZkYTczZGZlYTdmOWZlNWFkNDRiMTgxZTAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyLmgKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICoKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIlByb2Nl
c3NJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hlci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyIHsKKyAgICBQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcjsKKworICAgIGVudW0gVmFsdWVJZGVu
dGlmaWVyVHlwZSB7IH07CisgICAgdXNpbmcgVmFsdWVJZGVudGlmaWVyID0gT2JqZWN0SWRlbnRp
ZmllcjxWYWx1ZUlkZW50aWZpZXJUeXBlPjsKKyAgICBWYWx1ZUlkZW50aWZpZXIgdmFsdWVJZGVu
dGlmaWVyOworCisgICAgdW5zaWduZWQgaGFzaCgpIGNvbnN0IHsgcmV0dXJuIGNvbXB1dGVIYXNo
KHByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCksIHZhbHVlSWRlbnRpZmllci50b1VJbnQ2NCgp
KTsgfQorCisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IGRlY29kZShEZWNvZGVyJik7Cit9Owor
CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXImIGEsIGNvbnN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIGIpCit7Cisg
ICAgcmV0dXJuIGEucHJvY2Vzc0lkZW50aWZpZXIgPT0gYi5wcm9jZXNzSWRlbnRpZmllciAmJiBh
LnZhbHVlSWRlbnRpZmllciA9PSBiLnZhbHVlSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcjo6ZW5jb2Rl
KEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8PCBwcm9jZXNzSWRlbnRp
ZmllciA8PCB2YWx1ZUlkZW50aWZpZXI7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+Citz
dGQ6Om9wdGlvbmFsPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXI6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0
ZDo6b3B0aW9uYWw8UHJvY2Vzc0lkZW50aWZpZXI+IHByb2Nlc3NJZGVudGlmaWVyOworICAgIGRl
Y29kZXIgPj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgaWYgKCFwcm9jZXNzSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VmFsdWVJ
ZGVudGlmaWVyPiB2YWx1ZUlkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiB2YWx1ZUlkZW50aWZp
ZXI7CisgICAgaWYgKCF2YWx1ZUlkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICByZXR1cm4geyB7ICpwcm9jZXNzSWRlbnRpZmllciwgKnZhbHVlSWRlbnRpZmll
ciB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworbmFtZXNwYWNlIFdURiB7CisK
K3N0cnVjdCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVySGFzaCB7CisgICAgc3RhdGlj
IHVuc2lnbmVkIGhhc2goY29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
ZmllciYga2V5KSB7IHJldHVybiBrZXkuaGFzaCgpOyB9CisgICAgc3RhdGljIGJvb2wgZXF1YWwo
Y29uc3QgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3Qg
V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYikgeyByZXR1cm4gYSA9
PSBiOyB9CisgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0
ZWQgPSB0cnVlOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgSGFzaFRyYWl0czxXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyPiA6IEdlbmVyaWNIYXNoVHJhaXRzPFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IHsKKyAgICBzdGF0aWMgV2ViQ29y
ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciBlbXB0eVZhbHVlKCkgeyByZXR1cm4g
eyB9OyB9CisKKyAgICBzdGF0aWMgdm9pZCBjb25zdHJ1Y3REZWxldGVkVmFsdWUoV2ViQ29yZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgc2xvdCkgeyBuZXcgKE5vdE51bGwsICZz
bG90LnByb2Nlc3NJZGVudGlmaWVyKSBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcihXVEY6Okhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSk7IH0KKyAgICBzdGF0aWMgYm9vbCBpc0RlbGV0ZWRWYWx1ZShj
b25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IHJl
dHVybiBzbG90LnByb2Nlc3NJZGVudGlmaWVyLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7IH0K
K307CisKK3RlbXBsYXRlPD4gc3RydWN0IERlZmF1bHRIYXNoPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXI+IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllckhh
c2ggeyB9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NZXNzYWdlUG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
CmluZGV4IGMxYzVkYzk4NmFjYjcyMzQyZWQxMDBkNmZkYzlkOTE2MGZkOGM5MjcuLjkwZjk1Yjlj
OTk5OWEzZjhhNDg2N2Y0NTc3OGYxZWYzYzE5YTUxNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQ
b3J0LmNwcApAQCAtMTM5LDcgKzEzOSwxMSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9y
dDo6cG9zdE1lc3NhZ2UoSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUsIEpTQzo6SlNWYQogICAg
IHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxNZXNzYWdlUG9y
dD4+IHBvcnRzOwotICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIpLCBw
b3J0cyk7CisKKyAgICAvLyBGSVhNRTogQXQgdGhlIHRpbWUgb2Ygc2VyaWFsaXphdGlvbiwgd2Ug
ZG9uJ3Qga25vdyBpZiB0aGUgdGFyZ2V0IGlzIGEgd2luZG93LCBhIHdvcmtlciBvciBzb21ldGhp
bmcgZWxzZS4gV2Ugd2lsbCBvbmx5IGtub3cgYXQgdGhlIHRpbWUgb2YKKyAgICAvLyBkZXNlcmlh
bGl6YXRpb24uIFRoaXMgaXMgYW4gaXNzdWUgc2luY2UgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoKSB3aWxsIHJldHVybiBhbiBleGNlcHRpb24gaWYgV2FzbSBtb2R1bGVzIC8gbWVtb3J5
IGhhbmRsZXMgYXJlIHByZXNlbnQgYW5kIHRoZSBjb250ZXh0CisgICAgLy8gaXMgbm90IFdvcmtl
clBvc3RNZXNzYWdlLgorICAgIGF1dG8gbWVzc2FnZURhdGEgPSBTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShzdGF0ZSwgbWVzc2FnZVZhbHVlLCBXVEZNb3ZlKG9wdGlvbnMudHJhbnNmZXIp
LCBwb3J0cywgU2VyaWFsaXphdGlvbkNvbnRleHQ6OldvcmtlclBvc3RNZXNzYWdlKTsKICAgICBp
ZiAobWVzc2FnZURhdGEuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBtZXNzYWdlRGF0
YS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMzA4YWIwZGFhMTA0NmFjNTgzNDY3OTRj
MTc2OWNlYjBlYzUxNDYxLi4zNGExY2FhNzljNGQ2NThhMWVhMjYyY2ZiODAzZjA4ZDM0N2FlYWEx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBVbmFibGUgdG8gcG9zdE1lc3NhZ2UgYSBXZWJBc3NlbWJs
eSBtb2R1bGUgdG8gYSB3b3JrbGV0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjAwMzgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcyNTk2NTU2Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgc2VyaWFsaXphdGlvbiB2ZXJzaW9uIGluIHRoZSB0ZXN0Lgor
CisgICAgICAgICogZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWw6CisK
IDIwMjEtMDgtMTkgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0FwcCBQcml2YWN5IFJlcG9ydF0gU29tZSBIVFRQIFJlZGlyZWN0cyBmcm9tIG5v
biBhcHAgaW5pdGlhdGVkIHJlcXVlc3RzIGFyZSBtYXJrZWQgYXBwIGluaXRpYXRlZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggMWYxMzU5YmRmNjk2MTNhODZmNmMwNDJkMDI4NjAw
YTE5OGNkMTUzMC4uYmE3ZTQ0NWMxNTVkYWQyYTc4YjZmZWVkNjM3N2IwMzg0NzA0NjRhNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDgtMTkg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBVbmFibGUgdG8gcG9z
dE1lc3NhZ2UgYSBXZWJBc3NlbWJseSBtb2R1bGUgdG8gYSB3b3JrbGV0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjAwMzgKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzcyNTk2NTU2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlYmFzZWxpbmUgV1BUIHRlc3QgdGhhdCBpcyBub3cgcGFzc2luZy4KKwor
ICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3dp
bmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4cGVjdGVkLnR4dDoKKwogMjAyMS0wOC0xOSAg
VGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCA6OmJhY2tk
cm9wIHBzZXVkbyBlbGVtZW50CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3N0b3JhZ2Uv
c2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sCmluZGV4IGViMTY2M2ZiMDBjNGU1NzllZjdmNjJi
N2JlNTNlYzQ5NDdjMjJmYmYuLjU1NGEwMmRmMTdhZDUwMGQxYWEwMzM0NjcyMGY2MjNmY2E3OTE0
NDEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlw
dC12YWx1ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNj
cmlwdC12YWx1ZS5odG1sCkBAIC02LDcgKzYsNyBAQAogICAgIDxib2R5PgogICAgICAgICA8c2Ny
aXB0PgogCi1jb25zdCBjdXJyZW50VmVyc2lvbiA9IDB4MDg7Citjb25zdCBjdXJyZW50VmVyc2lv
biA9IDB4MDk7CiAKIC8vIEhlcmUncyBhIGxpdHRsZSBRJkQgaGVscGVyIGZvciBmdXR1cmUgYWR2
ZW50dXJlcnMgbmVlZGluZyB0byByZWJhc2VsaW5lIHRoaXMuCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1p
bnRlcmZhY2UvYXVkaW93b3JrbGV0LXBvc3RtZXNzYWdlLXdhc20tbW9kdWxlLmh0dHBzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhl
LWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXBvc3RtZXNzYWdlLXdhc20tbW9k
dWxlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45Mjc0ODg5NGY5M2U4YjFhMDY0MjU4
Y2MxYWFkMjBiZjBhY2ViYjA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRp
b3dvcmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsOSBAQAorCitQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgU1RBUlRFRC4KK1BBU1MgRXhl
Y3V0aW5nICJUZXN0IHBvc3RNZXNzYWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1
ZGlvV29ya2xldE5vZGUiCitQQVNTIEF1ZGl0IHJlcG9ydAorUEFTUyA+IFtUZXN0IHBvc3RNZXNz
YWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1ZGlvV29ya2xldE5vZGVdCitQQVNT
ICAgZXZlbnQubW9kdWxlIGZyb20gbWFpbiB0aHJlYWQgaXMgYW4gdmFsaWQgV0FTTSBtb2R1bGUg
aXMgdHJ1ZS4KK1BBU1MgPCBbVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xldFByb2Nl
c3NvciB0byBBdWRpb1dvcmtsZXROb2RlXSBBbGwgYXNzZXJ0aW9ucyBwYXNzZWQuICh0b3RhbCAx
IGFzc2VydGlvbnMpCitQQVNTICMgQVVESVQgVEFTSyBSVU5ORVIgRklOSVNIRUQ6IDEgdGFza3Mg
cmFuIHN1Y2Nlc3NmdWxseS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmts
ZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvYXVk
aW93b3JrbGV0LXBvc3RtZXNzYWdlLXdhc20tbW9kdWxlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjIzMTM2NzZhYjc5MmUxY2Q2YjVkOWMyYjg5NTMxNzNkYjJkNjhkYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1ZGlv
d29ya2xldC1pbnRlcmZhY2UvYXVkaW93b3JrbGV0LXBvc3RtZXNzYWdlLXdhc20tbW9kdWxlLmh0
dHBzLmh0bWwKQEAgLTAsMCArMSw3NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhl
YWQ+CisgICAgPHRpdGxlPgorICAgICAgVGVzdCBwYXNzaW5nIFdBU00gbW9kdWxlIHRvIGFuIEF1
ZGlvV29ya2xldAorICAgIDwvdGl0bGU+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAg
IDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9Ii93ZWJhdWRpby9yZXNvdXJjZXMvYXVkaXQuanMiPjwvc2NyaXB0Pgor
ICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxzY3JpcHQgaWQ9ImxheW91dC10ZXN0LWNvZGUiPgor
ICAgICAgbGV0IGF1ZGl0ID0gQXVkaXQuY3JlYXRlVGFza1J1bm5lcigpOworCisgICAgICBsZXQg
Y29udGV4dCA9IG5ldyBBdWRpb0NvbnRleHQoKTsKKyAgICAgIGxldCBtb2R1bGUgPSBudWxsOwor
CisgICAgICBsZXQgZmlsZVBhdGggPSAncHJvY2Vzc29ycy93YXNtLW1vZHVsZS1wcm9jZXNzb3Iu
anMnOworCisgICAgICBmdW5jdGlvbiBjcmVhdGVXYXNtTW9kdWxlKCkgeworICAgICAgICByZXR1
cm4gZmV0Y2goJy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3Jlc291cmNlcy9pbmNyZW1lbnRl
ci53YXNtJykKKyAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICAgIGlmICghcmVz
cG9uc2Uub2spCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2Uuc3RhdHVzVGV4
dCk7CisgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmFycmF5QnVmZmVyKCk7CisgICAgICAgIH0p
CisgICAgICAgIC50aGVuKFdlYkFzc2VtYmx5LmNvbXBpbGUpOworICAgICAgfQorCisgICAgICBh
dWRpdC5kZWZpbmUoCisgICAgICAgICAgJ1Rlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmts
ZXRQcm9jZXNzb3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZScsCisgICAgICAgICAgKHRhc2ssIHNob3Vs
ZCkgPT4geworICAgICAgICAgICAgbGV0IHdvcmtsZXROb2RlID0KKyAgICAgICAgICAgICAgICBu
ZXcgQXVkaW9Xb3JrbGV0Tm9kZShjb250ZXh0LCAnd2FzbS1tb2R1bGUtcHJvY2Vzc29yJyk7CisK
KyAgICAgICAgICAgIHdvcmtsZXROb2RlLnBvcnQub25tZXNzYWdlID0gKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgIGxldCBkYXRhID0gZXZlbnQuZGF0YTsKKyAgICAgICAgICAgICAgc3dpdGNo
IChkYXRhLnN0YXRlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnY3JlYXRlZCc6CisgICAgICAg
ICAgICAgICAgICAvLyBTZW5kIGEgV0FTTSBtb2R1bGUgYmFjayB0byB0aGUgd29ya2xldC4KKyAg
ICAgICAgICAgICAgICAgIGNyZWF0ZVdhc21Nb2R1bGUoKS50aGVuKG1vZHVsZSA9PiB7CisgICAg
ICAgICAgICAgICAgICAgIHdvcmtsZXROb2RlLnBvcnQucG9zdE1lc3NhZ2UoeyBtZXNzYWdlOiAi
c2VuZCBtb2R1bGUiLCBtb2R1bGUgfSk7CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSAncmVjZWl2ZWQgbWVzc2Fn
ZSc6CisgICAgICAgICAgICAgICAgICBzaG91bGQoZGF0YS5pc1ZhbGlkTW9kdWxlLCAnZXZlbnQu
bW9kdWxlIGZyb20gbWFpbiB0aHJlYWQgaXMgYW4gdmFsaWQgV0FTTSBtb2R1bGUnKQorICAgICAg
ICAgICAgICAgICAgICAgIC5iZVRydWUoKTsKKyAgICAgICAgICAgICAgICAgIHRhc2suZG9uZSgp
OworICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgICAgc2hvdWxkKGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGBHb3QgdW5leHBlY3RlZCBtZXNzYWdlIGZyb20gd29ya2xldDogJHtkYXRhLnN0YXRlfWApCisg
ICAgICAgICAgICAgICAgICAgICAgLmJlVHJ1ZSgpOworICAgICAgICAgICAgICAgICAgdGFzay5k
b25lKCk7CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfTsKKworICAgICAgICAgICAgd29ya2xldE5vZGUucG9ydC5vbm1lc3NhZ2VlcnJvciA9
IChldmVudCkgPT4geworICAgICAgICAgICAgICBzaG91bGQoZmFsc2UsICdHb3QgbWVzc2FnZWVy
cm9yIGZyb20gd29ya2xldCcpLmJlVHJ1ZSgpOworICAgICAgICAgICAgICB0YXNrLmRvbmUoKTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dC5hdWRpb1dv
cmtsZXQuYWRkTW9kdWxlKGZpbGVQYXRoKS50aGVuKCgpID0+IHsKKyAgICAgICAgICBhdWRpdC5y
dW4oKTsKKyAgICAgICAgfSk7CisgICAgPC9zY3JpcHQ+CisgIDwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90
aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3JzL3dhc20tbW9kdWxlLXByb2Nlc3Nv
ci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1ZGlvL3RoZS1hdWRpby1hcGkvdGhlLWF1
ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzc29ycy93YXNtLW1vZHVsZS1wcm9jZXNzb3IuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNmY2Nzg4NGJlNDJkZDYzNmI3YmRlNTdkNDM2ZDA2MTEyMWZlMTMwMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYmF1ZGlvL3RoZS1hdWRpby1h
cGkvdGhlLWF1ZGlvd29ya2xldC1pbnRlcmZhY2UvcHJvY2Vzc29ycy93YXNtLW1vZHVsZS1wcm9j
ZXNzb3IuanMKQEAgLTAsMCArMSw0NyBAQAorLyoqCisgKiBAY2xhc3MgV0FTTU1vZHVsZVByb2Nl
c3NvcgorICogQGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yCisgKgorICogVGhpcyBwcm9j
ZXNzb3IgY2xhc3MgZGVtb25zdHJhdGVzIHBhc3NpbmcgV0FTTSBtb2R1bGVzIHRvIGFuZCBmcm9t
CisgKiBhdWRpbyB3b3JrbGV0cy4KKyAqLworY2xhc3MgV0FTTU1vZHVsZVByb2Nlc3NvciBleHRl
bmRzIEF1ZGlvV29ya2xldFByb2Nlc3NvciB7CisgIGNvbnN0cnVjdG9yKCkgeworICAgIHN1cGVy
KCk7CisgICAgdGhpcy5wb3J0Lm9ubWVzc2FnZSA9IHRoaXMuaGFuZGxlTWVzc2FnZS5iaW5kKHRo
aXMpOworICAgIHRoaXMucG9ydC5vbm1lc3NhZ2VlcnJvciA9IHRoaXMuaGFuZGxlTWVzc2FnZUVy
cm9yLmJpbmQodGhpcyk7CisgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHtzdGF0ZTogJ2NyZWF0
ZWQnfSk7CisgIH0KKworICB0ZXN0TW9kdWxlKG1vZHVsZSkgeworICAgIHRyeSB7CisgICAgICBs
ZXQgaW5zdGFuY2UgPSBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlKTsKKyAgICAgIGxl
dCBpbmNyZW1lbnQgPSBpbnN0YW5jZS5leHBvcnRzWyJpbmNyZW1lbnQiXTsKKyAgICAgIGlmICh0
eXBlb2YgaW5jcmVtZW50ICE9ICJmdW5jdGlvbiIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgIGxldCByZXN1bHQgPSBpbmNyZW1lbnQoNDIpOworICAgICAgcmV0dXJuIHJlc3VsdCA9PSA0
MzsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICB9CisK
KyAgaGFuZGxlTWVzc2FnZShldmVudCkgeworICAgIHRoaXMucG9ydC5wb3N0TWVzc2FnZSh7Cisg
ICAgICBzdGF0ZTogJ3JlY2VpdmVkIG1lc3NhZ2UnLAorICAgICAgaXNWYWxpZE1vZHVsZTogdGhp
cy50ZXN0TW9kdWxlKGV2ZW50LmRhdGEubW9kdWxlKQorICAgIH0pOworICB9CisKKyAgaGFuZGxl
TWVzc2FnZUVycm9yKGV2ZW50KSB7CisgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsKKyAgICAg
IHN0YXRlOiAncmVjZWl2ZWQgbWVzc2FnZWVycm9yJworICAgIH0pOworICB9CisKKyAgcHJvY2Vz
cygpIHsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfQorfQorCityZWdpc3RlclByb2Nlc3Nvcignd2Fz
bS1tb2R1bGUtcHJvY2Vzc29yJywgV0FTTU1vZHVsZVByb2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXph
dGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6
YXRpb24vbW9kdWxlL3dpbmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4cGVjdGVkLnR4dApp
bmRleCBkMzBiN2U2ZTI3ZTYyZGE0Y2MzNTI5NWUzMjhhYTU0Yjc2NDY1YWYxLi4wYWNlMWU2ZjYy
OTM1NzUxMGZkMzY2OTZmMWNhYTc2MGRiZTM0ZjVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUv
d2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21v
ZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQKQEAgLTEsMyAr
MSwzIEBACiAKLUZBSUwgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGljYXRlZCB3b3JrZXIgdmlhIE1l
c3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRlIHByb21pc2VfdGVzdDogVW5o
YW5kbGVkIHJlamVjdGlvbiB3aXRoIHZhbHVlOiBvYmplY3QgIkRhdGFDbG9uZUVycm9yOiBUaGUg
b2JqZWN0IGNhbiBub3QgYmUgY2xvbmVkLiIKK1BBU1MgcG9zdE1lc3NhZ2luZyB0byBhIGRlZGlj
YXRlZCB3b3JrZXIgdmlhIE1lc3NhZ2VDaGFubmVsIGFsbG93cyB0aGVtIHRvIGluc3RhbnRpYXRl
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436196</attachid>
            <date>2021-08-23 08:11:05 -0700</date>
            <delta_ts>2021-08-23 10:21:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220038-20210823081104.patch</filename>
            <type>text/plain</type>
            <size>36737</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcwM2VlMzZiY2MxNzhl
MGE1N2MzYTE2ODZiM2ViMTM3ZjU4N2Y4Mi4uZjI0Y2Q2OWRjMGZhNTQ4NjY2MzRkMDA4MjM5NzIz
MDBkMjUwY2E2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVW5hYmxlIHRvIHBvc3RNZXNz
YWdlIGEgV2ViQXNzZW1ibHkgbW9kdWxlIHRvIGEgd29ya2xldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDM4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MjU5NjU1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCZWNhdXNlIG9mIHNlcnZpY2Ugd29ya2VyIHN1cHBvcnQsIGFuZCBiZWNhdXNlIHdl
IGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgICAgICAgd2hvIHRoZSBkZXN0aW5hdGlvbiBpcyB3aGVu
IGNhbGxpbmcgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKSwgZXZlcnkKKyAgICAgICAgbWVzc2Fn
ZSBnZXRzIHJvdXRlZCB2aWEgdGhlIG5ldHdvcmsgcHJvY2VzcywgZXZlbiBpZiB0aGUgZGVzdGlu
YXRpb24KKyAgICAgICAgZW5kcyB1cCBiZWluZyBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIGlz
IGFuIGlzc3VlIGJlY2F1c2Ugc29tZSBvZgorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJ3MgZGF0YSBtZW1iZXJzIGNhbm5vdCBiZSBzZXJpYWxpemVkIGFuZAorICAgICAgICBzZW50
IHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgYW4gaXNzdWUg
Zm9yCisgICAgICAgIFdBU00gbW9kdWxlcyBhbmQgbWVtb3J5IGhhbmRsZXMuCisKKyAgICAgICAg
dG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBJIGludHJvZHVjZWQgYSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgY2FjaGUuCisgICAgICAgIEVhY2ggU2VyaWFsaXplZFNjcmlwdFZhbHVlIGdldHMgYXNzaWdu
ZWQgYSBnbG9iYWxseSB1bmlxdWUKKyAgICAgICAgaWRlbnRpZmllciAodW5pcXVlIGFjcm9zcyBh
bGwgV2ViUHJvY2Vzc2VzKS4gV2hlbiBzZW5kaW5nIGEKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIHZpYSBJUEMsIHdlIGFsc28gc2VyaWFsaXplZCBpdHMgaWRlbnRpZmllcgorICAgICAg
ICBhbmQgYWRkIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGhlIGluLXByb2Nlc3MgY2Fj
aGUuIFVwb24KKyAgICAgICAgZGVzZXJpYWxpemF0aW9uIGZyb20gSVBDLCB3ZSBjaGVjayBpZiB0
aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGlzCisgICAgICAgIGluIHRoZSBjYWNoZSBieSB1c2lu
ZyBpdHMgZGVzZXJpYWxpemVkIGlkZW50aWZpZXIuIElmIGl0IGlzIGluIHRoZQorICAgICAgICBj
YWNoZSwgd2UgcmV1c2UgaXQgc28gdGhhdCB3ZSBkb24ndCBsb3NlIHRoZSBkYXRhIG1lbWJlcnMg
dGhhdAorICAgICAgICBjb3VsZG4ndCBiZSBzZXJpYWxpemVkIG92ZXIgSVBDLgorCisgICAgICAg
IFdoZW4gdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uIHByb2Nlc3MgYXJlIHRoZSBzYW1l
IChjb21tb24gY2FzZSksCisgICAgICAgIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb25seSBz
dGF5cyBpbiB0aGUgY2FjaGUgZm9yIGEgc2hvcnQgYW1vdW50IG9mCisgICAgICAgIHRpbWUgKGl0
IGdldHMgYWRkZWQgdG8gdGhlIGNhY2hlIG9uIHNlcmlhbGl6YXRpb24gYW5kIHJlbW92ZWQgdXBv
bgorICAgICAgICBkZXNlcmlhbGl6YXRpb24gYXQgdGhlIGRlc3RpbmF0aW9uKS4gSW4gY2FzZSB0
aGUgZGVzdGluYXRpb24gcHJvY2VzcworICAgICAgICBlbmRzIHVwIGJlaW5nIGEgZGlmZmVyZW50
IHByb2Nlc3MsIGNhY2hlZCBzZXJpYWxpemVkIHNjcmlwdCB2YWx1ZXMgb25seQorICAgICAgICBs
aXZlIGZvciAzMCBzZWNvbmRzIGF0IG1vc3QgaW4gdGhlIGNhY2hlLCB0byBhdm9pZCB3YXN0aW5n
IG1lbW9yeS4KKworICAgICAgICBOb3RlIHRoYXQsIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiwg
aXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvIHNlbmQKKyAgICAgICAgV0FTTSBtb2R1bGVzIC8g
bWVtb3J5IGhhbmRsZXMgYWNyb3NzIGFnZW50IGNsdXN0ZXJzIFsxXS4gSSBoYWQgdG8KKyAgICAg
ICAgaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IgaW4gb3JkZXIgdG8gbm90IHJlZ3Jlc3MgdGhlIGZv
bGxvd2luZyB0ZXN0OgorICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0
dHBzLmh0bWwKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2VydmljZSB3b3JrZXJzIHNob3VsZCBi
ZWxvbmcgdG8gYSBkaWZmZXJlbnQgYWdlbnQgY2x1c3RlciwKKyAgICAgICAgZXZlbiBpZiB0aGV5
IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzLgorCisgICAgICAgIFsxXSBodHRwczovL3RjMzkuZXMv
ZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgICAgIFsyXSBodHRwczovL3dlYmFzc2Vt
Ymx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlZmF1bHRBZ2VudENsdXN0ZXJJRCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRDbHVzdGVySUQgY29u
c3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6dGFrZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6dGFrZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRW
YWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllcjo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisKIDIwMjEtMDgtMjMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIENyZWF0ZSBhIFJlbmRlckxpbmVC
cmVhayB3aGVuIEJSIGVsZW1lbnQgaGFzIHVuc3VwcG9ydGVkIGNvbnRlbnQgZGF0YSBzdHlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggZWIwN2I4MGM5OTMzZDY5YThjMzYzMTkxOGM3NWRiZTRlMzdh
OTJiOC4uNDJmYzJlMzkwNWQ4MDFjZDg5Y2U1ZmIyODBkODFiYTVkZmUwZjc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0yOTEsNiArMjkxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCiAgICAgYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKKyAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVyLmgKICAgICBiaW5kaW5ncy9qcy9TdHJpbmdBZGFwdG9ycy5oCiAgICAgYmluZGluZ3Mv
anMvV2ViQ29yZUpJVE9wZXJhdGlvbnMuaAogICAgIGJpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYjA5MzZhMGQ0NTlmMjQxYmU1MmE3YTFlYzRmYzg2YzczNzYx
NzNmYi4uNmEyZmJlNmQ3NzQ1YWI0NDA5ZTY5NGEwYjhkNWM0ZTBkNzAyZTA4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5
MCw2ICsxMjkwLDcgQEAKIAkJNDY3MkFBOTgyNkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2NzJBQTk2MjZCMDk0MjEwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NzI2QjA5
NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0Iz
NTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07
CisJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgwNjAwQzI2Q0RBOEE1MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5Nzgy
MzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVC
IC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQw
MjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2Fk
Y2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODMxMCw2ICs4MzExLDcgQEAKIAkJNDY3MkFBOTYyNkIwOTQyMTAwRTZFQzM4IC8q
IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcyQUE5NzI2
QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291
bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFGRjFGNzk3ODIzMDBD
ODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0
NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA0NCw2
ICsyNzA0Niw3IEBACiAJCQkJMTQwMEQ3QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBw
YWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJCQkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJG
IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFG
MUIwMkZDMDAwRjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRG
MEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRG
MEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNDUwOCw2ICszNDUxMSw3
IEBACiAJCQkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NkQxQzFGMjNGNkVCNUIwMEQ5NUIwNiAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTZGN0Y2RDFDMzFFMzlBMDBG
MTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5M0FF
RTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRjE3NTVEMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA5MTZkMzNkOWRlNzRmMjIxM2RiZTMzNDNlZmYzZDAyYTNhYzM1
M2NkLi44YzU3NTI0N2UzOGNlMjYwYWU4MWNkNDA1ZGQwOTEyYWFkNjUyOTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00Niw5
ICs0NiwxMSBAQAogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VU
cmFja2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdE1vZHVsZUxvYWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZWRDbG9uZS5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNjMsNiArNjUs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNVHJhcHNJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtNTQ4LDYgKzU1MSwyMSBAQCBKU0M6OkpTT2JqZWN0KiBKU0RPTUdsb2Jh
bE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNDOjpKUwog
ICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIGdsb2Jh
bE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKIH0KIAorU3RyaW5nIEpT
RE9NR2xvYmFsT2JqZWN0OjpkZWZhdWx0QWdlbnRDbHVzdGVySUQoKQoreworICAgIHJldHVybiBt
YWtlU3RyaW5nKFByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAiLWRlZmF1bHQiKTsK
K30KKworU3RyaW5nIEpTRE9NR2xvYmFsT2JqZWN0OjphZ2VudENsdXN0ZXJJRCgpIGNvbnN0Cit7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIFNlcnZpY2Ugd29ya2VycyBtYXkg
cnVuIGluIHByb2Nlc3MgYnV0IHRoZXkgbmVlZCB0byBiZSBpbiBhIHNlcGFyYXRlIGFnZW50IGNs
dXN0ZXIuCisgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoUHJvY2Vzczo6aWRlbnRp
ZmllcigpLnRvVUludDY0KCksICItc2VydmljZXdvcmtlciIpOworI2VuZGlmCisgICAgcmV0dXJu
IGRlZmF1bHRBZ2VudENsdXN0ZXJJRCgpOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RP
TUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBmOTIzNWQ2
YjE2Mzk5ZjA3ZDQwYmNhZTc5MjcxMTc1ZmVjOWNiZDhmLi4wMjhlZjQ2OWRjMTU2MDcyMTQ3MjIz
MDdlNTVhMTA4NThkNWY1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKIAogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYWdlbnQtY2x1c3RlcnMKKyAgICBTdHJp
bmcgYWdlbnRDbHVzdGVySUQoKSBjb25zdDsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBZ2Vu
dENsdXN0ZXJJRCgpOworCiAgICAgLy8gTWFrZSBiaW5kaW5nIGNvZGUgZ2VuZXJhdGlvbiBlYXNp
ZXIuCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIHRoaXM7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggNTA0Nzg1Yzk2ZDhmNTY0M2E5NjE4MjY4NTU5NTRkZTA2NTdkNmNj
NS4uOGJmODRjODY3NzMyZGE5ZmExMWIxYmY3OWI2NTkzNWI4ZGY1YTdiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCisjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0JpZ0lu
dE9iamVjdC5oPgpAQCAtODksNyArOTAsOSBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1lh
cnJGbGFncy5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KKyNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGhyZWFkcy9C
aW5hcnlTZW1hcGhvcmUuaD4KQEAgLTExMCw3ICsxMTMsOCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSk7CiAKLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9u
ID0gNDAwMDA7Citjb25zdGV4cHIgdW5zaWduZWQgbWF4aW11bUZpbHRlclJlY3Vyc2lvbiA9IDQw
MDAwOworY29uc3RleHByIFNlY29uZHMgY2FjaGVkU2VyaWFsaXplZFNjcmlwdFZhbHVlTGlmZXRp
bWUgeyAzMF9zIH07CiAKIGVudW0gY2xhc3MgU2VyaWFsaXphdGlvblJldHVybkNvZGUgewogICAg
IFN1Y2Nlc3NmdWxseUNvbXBsZXRlZCwKQEAgLTIzNSw2ICsyMzksMTUgQEAgc3RhdGljIHVuc2ln
bmVkIHR5cGVkQXJyYXlFbGVtZW50U2l6ZShBcnJheUJ1ZmZlclZpZXdTdWJ0YWcgdGFnKQogICAg
IH0KIH0KIAorI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKK3N0YXRpYyBTdHJpbmcgYWdlbnRDbHVz
dGVySURGcm9tR2xvYmFsT2JqZWN0KEpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgaWYgKCFnbG9iYWxPYmplY3QuaW5oZXJpdHM8SlNET01HbG9iYWxPYmplY3Q+KGdsb2JhbE9i
amVjdC52bSgpKSkKKyAgICAgICAgcmV0dXJuIEpTRE9NR2xvYmFsT2JqZWN0OjpkZWZhdWx0QWdl
bnRDbHVzdGVySUQoKTsKKyAgICByZXR1cm4ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmds
b2JhbE9iamVjdCktPmFnZW50Q2x1c3RlcklEKCk7Cit9CisjZW5kaWYKKwogZW51bSBjbGFzcyBQ
cmVkZWZpbmVkQ29sb3JTcGFjZVRhZyA6IHVpbnQ4X3QgewogICAgIFNSR0IgPSAwCiAjaWYgRU5B
QkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0RJU1BMQVlfUDMpCkBAIC0zMjIsNyArMzM1LDcg
QEAgc3RhdGljIHVuc2lnbmVkIGNvdW50VXNhZ2VzKENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cykKICAqIFZlcnNpb24gNy4gYWRkZWQgc3VwcG9ydCBmb3IgRmlsZSdzIGxhc3RNb2RpZmllZCBh
dHRyaWJ1dGUuCiAgKiBWZXJzaW9uIDguIGFkZGVkIHN1cHBvcnQgZm9yIEltYWdlRGF0YSdzIGNv
bG9yU3BhY2UgYXR0cmlidXRlLgogICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZl
cnNpb24gPSA4Oworc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN1cnJlbnRWZXJzaW9uID0gOTsKIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBUZXJtaW5hdG9yVGFnID0gMHhGRkZGRkZGRjsKIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJpbmdQb29sVGFnID0gMHhGRkZGRkZGRTsKIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBOb25JbmRleFByb3BlcnRpZXNUYWcgPSAweEZGRkZGRkZEOwpAQCAtMTM0OCw2ICsx
MzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IG1fd2Fz
bU1vZHVsZXMuc2l6ZSgpOyAKICAgICAgICAgICAgICAgICBtX3dhc21Nb2R1bGVzLmFwcGVuZCht
YWtlUmVmKG1vZHVsZS0+bW9kdWxlKCkpKTsKICAgICAgICAgICAgICAgICB3cml0ZShXYXNtTW9k
dWxlVGFnKTsKKyAgICAgICAgICAgICAgICB3cml0ZShhZ2VudENsdXN0ZXJJREZyb21HbG9iYWxP
YmplY3QoKm1fbGV4aWNhbEdsb2JhbE9iamVjdCkpOwogICAgICAgICAgICAgICAgIHdyaXRlKGlu
ZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTEz
NjMsNiArMTM3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgdWludDMyX3QgaW5kZXgg
PSBtX3dhc21NZW1vcnlIYW5kbGVzLnNpemUoKTsKICAgICAgICAgICAgICAgICBtX3dhc21NZW1v
cnlIYW5kbGVzLmFwcGVuZChtYWtlUmVmKG1lbW9yeS0+bWVtb3J5KCkuaGFuZGxlKCkpKTsKICAg
ICAgICAgICAgICAgICB3cml0ZShXYXNtTWVtb3J5VGFnKTsKKyAgICAgICAgICAgICAgICB3cml0
ZShhZ2VudENsdXN0ZXJJREZyb21HbG9iYWxPYmplY3QoKm1fbGV4aWNhbEdsb2JhbE9iamVjdCkp
OwogICAgICAgICAgICAgICAgIHdyaXRlKGluZGV4KTsKICAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTM0OTgsNiArMzUxMywxNSBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgICAgICBjYXNlIFdhc21Nb2R1bGVU
YWc6IHsKKyAgICAgICAgICAgIGlmIChtX3ZlcnNpb24gPj0gOSkgeworICAgICAgICAgICAgICAg
IC8vIGh0dHBzOi8vd2ViYXNzZW1ibHkuZ2l0aHViLmlvL3NwZWMvd2ViLWFwaS9pbmRleC5odG1s
I3NlcmlhbGl6YXRpb24KKyAgICAgICAgICAgICAgICBDYWNoZWRTdHJpbmdSZWYgYWdlbnRDbHVz
dGVySUQ7CisgICAgICAgICAgICAgICAgYm9vbCBhZ2VudENsdXN0ZXJJRFN1Y2Nlc3NmdWxseVJl
YWQgPSByZWFkU3RyaW5nRGF0YShhZ2VudENsdXN0ZXJJRCk7CisgICAgICAgICAgICAgICAgaWYg
KCFhZ2VudENsdXN0ZXJJRFN1Y2Nlc3NmdWxseVJlYWQgfHwgYWdlbnRDbHVzdGVySUQtPnN0cmlu
ZygpICE9IGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9nbG9iYWxPYmplY3QpKSB7
CisgICAgICAgICAgICAgICAgICAgIGZhaWwoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICB1aW50MzJfdCBpbmRleDsKICAgICAgICAgICAgIGJvb2wgaW5kZXhTdWNjZXNzZnVsbHlSZWFk
ID0gcmVhZChpbmRleCk7CiAgICAgICAgICAgICBpZiAoIWluZGV4U3VjY2Vzc2Z1bGx5UmVhZCB8
fCAhbV93YXNtTW9kdWxlcyB8fCBpbmRleCA+PSBtX3dhc21Nb2R1bGVzLT5zaXplKCkpIHsKQEAg
LTM1MTQsNiArMzUzOCwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc21NZW1vcnlUYWc6IHsKKyAgICAgICAgICAgIGlm
IChtX3ZlcnNpb24gPj0gOSkgeworICAgICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBhZ2Vu
dENsdXN0ZXJJRDsKKyAgICAgICAgICAgICAgICBib29sIGFnZW50Q2x1c3RlcklEU3VjY2Vzc2Z1
bGx5UmVhZCA9IHJlYWRTdHJpbmdEYXRhKGFnZW50Q2x1c3RlcklEKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWFnZW50Q2x1c3RlcklEU3VjY2Vzc2Z1bGx5UmVhZCB8fCBhZ2VudENsdXN0ZXJJRC0+
c3RyaW5nKCkgIT0gYWdlbnRDbHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KCptX2dsb2JhbE9iamVj
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHVpbnQzMl90IGluZGV4OwogICAgICAgICAgICAgYm9vbCBpbmRleFN1Y2Nlc3NmdWxs
eVJlYWQgPSByZWFkKGluZGV4KTsKICAgICAgICAgICAgIGlmICghaW5kZXhTdWNjZXNzZnVsbHlS
ZWFkIHx8ICFtX3dhc21NZW1vcnlIYW5kbGVzIHx8IGluZGV4ID49IG1fd2FzbU1lbW9yeUhhbmRs
ZXMtPnNpemUoKSkgewpAQCAtMzg5NSwxOCArMzkyNywyOCBAQCBlcnJvcjoKIAogU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjp+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkgPSBkZWZhdWx0OwogCitzdGF0
aWMgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpJZGVudGlmaWVyIGdlbmVyYXRlSWRlbnRpZmllcigp
Cit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgUHJvY2Vzczo6aWRlbnRpZmllcigpLAorICAgICAg
ICBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OklkZW50aWZpZXI6OlZhbHVlSWRlbnRpZmllcjo6Z2Vu
ZXJhdGVUaHJlYWRTYWZlKCkKKyAgICB9OworfQorCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIpCi0gICAgOiBtX2Rh
dGEoV1RGTW92ZShidWZmZXIpKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlSWRlbnRpZmll
cigpKQorICAgICwgbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKIHsKICAgICBtX21lbW9yeUNvc3Qg
PSBjb21wdXRlTWVtb3J5Q29zdCgpOwogfQogCi1TZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0
cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+JiYgYXJyYXlCdWZmZXJDb250ZW50c0FycmF5CitT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShJZGVudGlmaWVyIGlk
ZW50aWZpZXIsIFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4mJiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkKICNpZiBFTkFC
TEUoV0VCX1JUQykKICAgICAgICAgLCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERldGFjaGVkUlRD
RGF0YUNoYW5uZWw+PiYmIGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzCiAjZW5kaWYKICAgICAgICAg
KQotICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKKyAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQorICAgICwgbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5KFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkKICNpZiBF
TkFCTEUoV0VCX1JUQykKICAgICAsIG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMoV1RGTW92ZShk
ZXRhY2hlZFJUQ0RhdGFDaGFubmVscykpCkBAIC0zOTI3LDcgKzM5NjksOCBAQCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZm
ZXIsIGNvbnN0IFZlYwogICAgICAgICAsIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTWVtb3J5SGFuZGxl
QXJyYXk+IHdhc21NZW1vcnlIYW5kbGVzQXJyYXkKICNlbmRpZgogICAgICAgICApCi0gICAgOiBt
X2RhdGEoV1RGTW92ZShidWZmZXIpKQorICAgIDogbV9pZGVudGlmaWVyKGdlbmVyYXRlSWRlbnRp
ZmllcigpKQorICAgICwgbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fYXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5KFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkKICAgICAs
IG1fc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKHNoYXJlZEJ1ZmZlckNvbnRlbnRz
QXJyYXkpKQogICAgICwgbV9iYWNraW5nU3RvcmVzKFdURk1vdmUoYmFja2luZ1N0b3JlcykpCkBA
IC00NDEyLDQgKzQ0NTUsNTMgQEAgSURCVmFsdWUgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp3cml0
ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCU3luY2hyb25vdXNseSgpCiAgICAgcmV0dXJuIHZhbHVl
OwogfQogCithdXRvIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbigpIC0+
IENhY2hlJgoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxDYWNoZT4gY2FjaGU7CisgICAg
cmV0dXJuIGNhY2hlOworfQorCitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpD
YWNoZWRWYWx1ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
Q2FjaGVkVmFsdWUoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJik7CisgICAgUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdGFrZVZhbHVlKCkgeyByZXR1cm4gc3RkOjpleGNoYW5n
ZShtX3ZhbHVlLCBudWxscHRyKTsgfQorCitwcml2YXRlOgorICAgIHZvaWQgZXhwaXJhdGlvblRp
bWVyRmlyZWQoKTsKKworICAgIFRpbWVyIG1fZXhwaXJhdGlvblRpbWVyOworICAgIFJlZlB0cjxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fdmFsdWU7Cit9OworCitTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6Q2FjaGVkVmFsdWUoUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4mJiB2YWx1ZSkKKyAgICA6IG1fZXhwaXJhdGlvblRpbWVyKCp0aGlzLCAmQ2FjaGVk
VmFsdWU6OmV4cGlyYXRpb25UaW1lckZpcmVkKQorICAgICwgbV92YWx1ZShXVEZNb3ZlKHZhbHVl
KSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fZXhwaXJhdGlvblRpbWVy
LnN0YXJ0T25lU2hvdChjYWNoZWRTZXJpYWxpemVkU2NyaXB0VmFsdWVMaWZldGltZSk7Cit9CisK
K3ZvaWQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6YWRkKFJlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+JiYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQoreworICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CisgICAgbV92YWx1ZXMuYWRkKHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS0+aWRl
bnRpZmllcigpLCBtYWtlVW5pcXVlPENhY2hlZFZhbHVlPihXVEZNb3ZlKHNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSkpKTsKK30KKworUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlOjpDYWNoZTo6dGFrZShJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBhdXRvIGNhY2hlZFZhbHVlID0gbV92YWx1ZXMu
dGFrZShpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gY2FjaGVkVmFsdWUgPyBjYWNoZWRWYWx1ZS0+
dGFrZVZhbHVlKCkgOiBudWxscHRyOworfQorCit2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
Q2FjaGU6OkNhY2hlZFZhbHVlOjpleHBpcmF0aW9uVGltZXJGaXJlZCgpCit7CisgICAgaWYgKCFt
X3ZhbHVlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJlbW92ZWRWYWx1ZSA9IENhY2hl
OjpzaW5nbGV0b24oKS50YWtlKG1fdmFsdWUtPmlkZW50aWZpZXIoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZW1vdmVkVmFsdWUsIHJlbW92ZWRWYWx1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmgKaW5kZXggZmI3NTdhNGQ3NGY2MGUyZmZjZGI4MjljMTUyMDMwYTY2OTljMTRjZi4u
NTQ4NzJkNjdhZTgyM2ZmOTE2MGRjMGIyZDZmZWY1ODE5YjE4MzlkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRGV0YWNoZWRSVENEYXRhQ2hh
bm5lbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVm
ZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1N0cm9uZy5oPgpAQCAtMTE1LDkgKzExNiwxMiBAQCBwdWJsaWM6CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKKyAgICB1c2lu
ZyBJZGVudGlmaWVyID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcjsKKyAgICBJZGVu
dGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKwogcHJp
dmF0ZToKICAgICBXRUJDT1JFX0VYUE9SVCBTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29u
dGVudHNBcnJheT4mJgorICAgIFdFQkNPUkVfRVhQT1JUIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShJ
ZGVudGlmaWVyLCBWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiwgc3RkOjp1bmlxdWVfcHRyPEFycmF5
QnVmZmVyQ29udGVudHNBcnJheT4mJgogI2lmIEVOQUJMRShXRUJfUlRDKQogICAgICAgICAsIFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+JiYKICNlbmRpZgpA
QCAtMTM2LDggKzE0MCwyNCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgICAgICk7CiAKKyAgICBj
bGFzcyBDYWNoZSB7CisgICAgcHVibGljOgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
Q2FjaGUmIHNpbmdsZXRvbigpOworCisgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkKFJl
ZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiYpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiB0YWtlKElkZW50aWZpZXIpOworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIE5ldmVyRGVzdHJveWVkPENhY2hlPjsKKyAgICAg
ICAgQ2FjaGUoKSA9IGRlZmF1bHQ7CisKKyAgICAgICAgY2xhc3MgQ2FjaGVkVmFsdWU7CisgICAg
ICAgIEhhc2hNYXA8SWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPENhY2hlZFZhbHVlPj4gbV92
YWx1ZXM7CisgICAgfTsKKwogICAgIHNpemVfdCBjb21wdXRlTWVtb3J5Q29zdCgpIGNvbnN0Owog
CisgICAgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+
IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBt
X2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZm
ZXJDb250ZW50c0FycmF5PiBtX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXk7CkBAIC0xNzcsNiAr
MTk3LDkgQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogICAgIGZvciAoY29uc3QgYXV0byAmY2hhbm5lbCA6IG1fZGV0YWNoZWRSVENE
YXRhQ2hhbm5lbHMpCiAgICAgICAgIGVuY29kZXIgPDwgKmNoYW5uZWw7CiAjZW5kaWYKKworICAg
IENhY2hlOjpzaW5nbGV0b24oKS5hZGQoY29uc3RfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUq
Pih0aGlzKSk7CisgICAgZW5jb2RlciA8PCBtX2lkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNs
YXNzIERlY29kZXI+CkBAIC0yMzAsNyArMjUzLDE2IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAg
ICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0
VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCisg
ICAgSWRlbnRpZmllciBpZGVudGlmaWVyOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRp
ZmllcikpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gV2UgYXJlIG5vdCBhYmxl
IHRvIHNlcmlhbGl6ZSB0aGluZ3MgbGlrZSBXQVNNIG1vZHVsZXMgc28gcmV1c2UgdGhlIGV4aXN0
aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBpZiBzdGlsbCBhbGl2ZQorICAgIC8vIHVwb24gZGVz
ZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY29uc3RydWN0aW5nIGEgbmV3IFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSBmcm9tIGRlc2VyaWFsaXplZCBkYXRhLgorICAgIGlmIChhdXRvIGV4aXN0aW5nVmFs
dWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFrZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJu
IGV4aXN0aW5nVmFsdWUucmVsZWFzZU5vbk51bGwoKTsKKworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShpZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZN
b3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAg
ICAgLCBXVEZNb3ZlKGRldGFjaGVkUlRDRGF0YUNoYW5uZWxzKQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlm
aWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJ
ZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQzM2JmNjEyZWZhZDU1ZmRhNzNkZmVhN2Y5ZmU1YWQ0
NGIxODFlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlk
ZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyOworCisg
ICAgZW51bSBWYWx1ZUlkZW50aWZpZXJUeXBlIHsgfTsKKyAgICB1c2luZyBWYWx1ZUlkZW50aWZp
ZXIgPSBPYmplY3RJZGVudGlmaWVyPFZhbHVlSWRlbnRpZmllclR5cGU+OworICAgIFZhbHVlSWRl
bnRpZmllciB2YWx1ZUlkZW50aWZpZXI7CisKKyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyBy
ZXR1cm4gY29tcHV0ZUhhc2gocHJvY2Vzc0lkZW50aWZpZXIudG9VSW50NjQoKSwgdmFsdWVJZGVu
dGlmaWVyLnRvVUludDY0KCkpOyB9CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4gZGVjb2Rl
KERlY29kZXImKTsKK307CisKK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwgY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRl
bnRpZmllciYgYikKK3sKKyAgICByZXR1cm4gYS5wcm9jZXNzSWRlbnRpZmllciA9PSBiLnByb2Nl
c3NJZGVudGlmaWVyICYmIGEudmFsdWVJZGVudGlmaWVyID09IGIudmFsdWVJZGVudGlmaWVyOwor
fQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
ZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVy
IDw8IHByb2Nlc3NJZGVudGlmaWVyIDw8IHZhbHVlSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
Zmllcj4gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lk
ZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBwcm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoIXBy
b2Nlc3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3Rk
OjpvcHRpb25hbDxWYWx1ZUlkZW50aWZpZXI+IHZhbHVlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVy
ID4+IHZhbHVlSWRlbnRpZmllcjsKKyAgICBpZiAoIXZhbHVlSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsgKnByb2Nlc3NJZGVudGlmaWVy
LCAqdmFsdWVJZGVudGlmaWVyIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitu
YW1lc3BhY2UgV1RGIHsKKworc3RydWN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXJI
YXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWVJZGVudGlmaWVyJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBz
dGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVyJiBhLCBjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVy
JiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21w
YXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNo
VHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+IDogR2VuZXJp
Y0hhc2hUcmFpdHM8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4gewor
ICAgIHN0YXRpYyBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyIGVtcHR5
VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKworICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0
ZWRWYWx1ZShXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7
IG5ldyAoTm90TnVsbCwgJnNsb3QucHJvY2Vzc0lkZW50aWZpZXIpIFdlYkNvcmU6OlByb2Nlc3NJ
ZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVsZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29s
IGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3QucHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKTsgfQorfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4gOiBTZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVySGFzaCB7IH07CisKK30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYzFjNWRjOTg2YWNiNzIzNDJlZDEwMGQ2ZmRjOWQ5MTYw
ZmQ4YzkyNy4uOTBmOTViOWM5OTk5YTNmOGE0ODY3ZjQ1Nzc4ZjFlZjNjMTlhNTE2NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0xMzksNyArMTM5LDExIEBAIEV4Y2VwdGlvbk9y
PHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0
ZSwgSlNDOjpKU1ZhCiAgICAgcmVnaXN0ZXJMb2NhbEFjdGl2aXR5KCk7CiAKICAgICBWZWN0b3I8
UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7Ci0gICAgYXV0byBtZXNzYWdlRGF0YSA9IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUob3B0
aW9ucy50cmFuc2ZlciksIHBvcnRzKTsKKworICAgIC8vIEZJWE1FOiBBdCB0aGUgdGltZSBvZiBz
ZXJpYWxpemF0aW9uLCB3ZSBkb24ndCBrbm93IGlmIHRoZSB0YXJnZXQgaXMgYSB3aW5kb3csIGEg
d29ya2VyIG9yIHNvbWV0aGluZyBlbHNlLiBXZSB3aWxsIG9ubHkga25vdyBhdCB0aGUgdGltZSBv
ZgorICAgIC8vIGRlc2VyaWFsaXphdGlvbi4gVGhpcyBpcyBhbiBpc3N1ZSBzaW5jZSBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpIHdpbGwgcmV0dXJuIGFuIGV4Y2VwdGlvbiBpZiBXYXNt
IG1vZHVsZXMgLyBtZW1vcnkgaGFuZGxlcyBhcmUgcHJlc2VudCBhbmQgdGhlIGNvbnRleHQKKyAg
ICAvLyBpcyBub3QgV29ya2VyUG9zdE1lc3NhZ2UuCisgICAgYXV0byBtZXNzYWdlRGF0YSA9IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUo
b3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBTZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9z
dE1lc3NhZ2UpOwogICAgIGlmIChtZXNzYWdlRGF0YS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAg
cmV0dXJuIG1lc3NhZ2VEYXRhLnJlbGVhc2VFeGNlcHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQwZTUwMzcz
MTI3ZWU3NmJhN2EyODU5ODU1NTc0MWZkMjliYjk2YzEuLmIwZDlmYmY0ZGVjNmI0ZWViNTIyYTdj
YmE2MThmMjUyNTk3YTZlMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOC0yMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVuYWJsZSB0byBwb3N0TWVz
c2FnZSBhIFdlYkFzc2VtYmx5IG1vZHVsZSB0byBhIHdvcmtsZXQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDAzOAorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNzI1OTY1NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBzZXJpYWxpemF0aW9uIHZlcnNp
b24gaW4gdGhlIHRlc3QuCisKKyAgICAgICAgKiBmYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3Jp
cHQtdmFsdWUuaHRtbDoKKwogMjAyMS0wOC0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYktpdDIgY2FuIG9ubHkgaGF2ZSBvbmUgYWN0aXZlIG5hdmlnYXRp
b24gcG9saWN5IGNoZWNrIGZvciBhIGdpdmVuIGZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5n
ZUxvZwppbmRleCA5YzBiYzRhY2YzMGQ0NGY0ZGY5YWEwNGNhOTVmZWRiZGQ0YmEyODYyLi4xZWI0
ZGE5MThmZGFjNzc5NGMxYTdiYzFhZjZiMDIzMmQ2N2NiYWVhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wOC0yMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVuYWJsZSB0byBwb3N0TWVzc2FnZSBhIFdlYkFz
c2VtYmx5IG1vZHVsZSB0byBhIHdvcmtsZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIyMDAzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI1OTY1
NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVi
YXNlbGluZSBXUFQgdGVzdCB0aGF0IGlzIG5vdyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFu
bmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0OgorCiAyMDIxLTA4LTIzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0MiBjYW4gb25seSBoYXZlIG9uZSBhY3Rp
dmUgbmF2aWdhdGlvbiBwb2xpY3kgY2hlY2sgZm9yIGEgZ2l2ZW4gZnJhbWUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9zZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5k
ZXggZWIxNjYzZmIwMGM0ZTU3OWVmN2Y2MmI3YmU1M2VjNDk0N2MyMmZiZi4uNTU0YTAyZGYxN2Fk
NTAwZDFhYTAzMzQ2NzIwZjYyM2ZjYTc5MTQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKQEAgLTYsNyArNiw3IEBA
CiAgICAgPGJvZHk+CiAgICAgICAgIDxzY3JpcHQ+CiAKLWNvbnN0IGN1cnJlbnRWZXJzaW9uID0g
MHgwODsKK2NvbnN0IGN1cnJlbnRWZXJzaW9uID0gMHgwOTsKIAogLy8gSGVyZSdzIGEgbGl0dGxl
IFEmRCBoZWxwZXIgZm9yIGZ1dHVyZSBhZHZlbnR1cmVycyBuZWVkaW5nIHRvIHJlYmFzZWxpbmUg
dGhpcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1
ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcG9zdG1lc3Nh
Z2Utd2FzbS1tb2R1bGUuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dv
cmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkyNzQ4ODk0ZjkzZThiMWEwNjQyNThjYzFhYWQyMGJmMGFjZWJiMDYKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1h
dWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1wb3N0bWVzc2FnZS13YXNtLW1vZHVs
ZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBACisKK1BBU1MgIyBBVURJVCBUQVNL
IFJVTk5FUiBTVEFSVEVELgorUEFTUyBFeGVjdXRpbmcgIlRlc3QgcG9zdE1lc3NhZ2UgZnJvbSBB
dWRpb1dvcmtsZXRQcm9jZXNzb3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZSIKK1BBU1MgQXVkaXQgcmVw
b3J0CitQQVNTID4gW1Rlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNzb3Ig
dG8gQXVkaW9Xb3JrbGV0Tm9kZV0KK1BBU1MgICBldmVudC5tb2R1bGUgZnJvbSBtYWluIHRocmVh
ZCBpcyBhbiB2YWxpZCBXQVNNIG1vZHVsZSBpcyB0cnVlLgorUEFTUyA8IFtUZXN0IHBvc3RNZXNz
YWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHRvIEF1ZGlvV29ya2xldE5vZGVdIEFsbCBh
c3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEgYXNzZXJ0aW9ucykKK1BBU1MgIyBBVURJVCBUQVNL
IFJVTk5FUiBGSU5JU0hFRDogMSB0YXNrcyByYW4gc3VjY2Vzc2Z1bGx5LgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dv
cmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xldC1wb3N0bWVzc2FnZS13YXNtLW1vZHVsZS5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUt
YXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1
bGUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjMxMzY3NmFiNzkyZTFjZDZiNWQ5YzJiODk1MzE3
M2RiMmQ2OGRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVk
aW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQt
cG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+CisgICAgICBUZXN0IHBh
c3NpbmcgV0FTTSBtb2R1bGUgdG8gYW4gQXVkaW9Xb3JrbGV0CisgICAgPC90aXRsZT4KKyAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAgPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iL3dlYmF1ZGlvL3Jlc291
cmNlcy9hdWRpdC5qcyI+PC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlw
dCBpZD0ibGF5b3V0LXRlc3QtY29kZSI+CisgICAgICBsZXQgYXVkaXQgPSBBdWRpdC5jcmVhdGVU
YXNrUnVubmVyKCk7CisKKyAgICAgIGxldCBjb250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpOwor
ICAgICAgbGV0IG1vZHVsZSA9IG51bGw7CisKKyAgICAgIGxldCBmaWxlUGF0aCA9ICdwcm9jZXNz
b3JzL3dhc20tbW9kdWxlLXByb2Nlc3Nvci5qcyc7CisKKyAgICAgIGZ1bmN0aW9uIGNyZWF0ZVdh
c21Nb2R1bGUoKSB7CisgICAgICAgIHJldHVybiBmZXRjaCgnL3dhc20vc2VyaWFsaXphdGlvbi9t
b2R1bGUvcmVzb3VyY2VzL2luY3JlbWVudGVyLndhc20nKQorICAgICAgICAudGhlbihyZXNwb25z
ZSA9PiB7CisgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcihyZXNwb25zZS5zdGF0dXNUZXh0KTsKKyAgICAgICAgICByZXR1cm4gcmVzcG9uc2Uu
YXJyYXlCdWZmZXIoKTsKKyAgICAgICAgfSkKKyAgICAgICAgLnRoZW4oV2ViQXNzZW1ibHkuY29t
cGlsZSk7CisgICAgICB9CisKKyAgICAgIGF1ZGl0LmRlZmluZSgKKyAgICAgICAgICAnVGVzdCBw
b3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xldFByb2Nlc3NvciB0byBBdWRpb1dvcmtsZXROb2Rl
JywKKyAgICAgICAgICAodGFzaywgc2hvdWxkKSA9PiB7CisgICAgICAgICAgICBsZXQgd29ya2xl
dE5vZGUgPQorICAgICAgICAgICAgICAgIG5ldyBBdWRpb1dvcmtsZXROb2RlKGNvbnRleHQsICd3
YXNtLW1vZHVsZS1wcm9jZXNzb3InKTsKKworICAgICAgICAgICAgd29ya2xldE5vZGUucG9ydC5v
bm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgbGV0IGRhdGEgPSBldmVudC5k
YXRhOworICAgICAgICAgICAgICBzd2l0Y2ggKGRhdGEuc3RhdGUpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlICdjcmVhdGVkJzoKKyAgICAgICAgICAgICAgICAgIC8vIFNlbmQgYSBXQVNNIG1vZHVs
ZSBiYWNrIHRvIHRoZSB3b3JrbGV0LgorICAgICAgICAgICAgICAgICAgY3JlYXRlV2FzbU1vZHVs
ZSgpLnRoZW4obW9kdWxlID0+IHsKKyAgICAgICAgICAgICAgICAgICAgd29ya2xldE5vZGUucG9y
dC5wb3N0TWVzc2FnZSh7IG1lc3NhZ2U6ICJzZW5kIG1vZHVsZSIsIG1vZHVsZSB9KTsKKyAgICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAg
ICAgICBjYXNlICdyZWNlaXZlZCBtZXNzYWdlJzoKKyAgICAgICAgICAgICAgICAgIHNob3VsZChk
YXRhLmlzVmFsaWRNb2R1bGUsICdldmVudC5tb2R1bGUgZnJvbSBtYWluIHRocmVhZCBpcyBhbiB2
YWxpZCBXQVNNIG1vZHVsZScpCisgICAgICAgICAgICAgICAgICAgICAgLmJlVHJ1ZSgpOworICAg
ICAgICAgICAgICAgICAgdGFzay5kb25lKCk7CisgICAgICAgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICBzaG91bGQoZmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgYEdvdCB1bmV4cGVjdGVkIG1lc3NhZ2UgZnJvbSB3
b3JrbGV0OiAke2RhdGEuc3RhdGV9YCkKKyAgICAgICAgICAgICAgICAgICAgICAuYmVUcnVlKCk7
CisgICAgICAgICAgICAgICAgICB0YXNrLmRvbmUoKTsKKyAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB3b3JrbGV0
Tm9kZS5wb3J0Lm9ubWVzc2FnZWVycm9yID0gKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgIHNo
b3VsZChmYWxzZSwgJ0dvdCBtZXNzYWdlZXJyb3IgZnJvbSB3b3JrbGV0JykuYmVUcnVlKCk7Cisg
ICAgICAgICAgICAgIHRhc2suZG9uZSgpOworICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KTsK
KworICAgICAgICBjb250ZXh0LmF1ZGlvV29ya2xldC5hZGRNb2R1bGUoZmlsZVBhdGgpLnRoZW4o
KCkgPT4geworICAgICAgICAgIGF1ZGl0LnJ1bigpOworICAgICAgICB9KTsKKyAgICA8L3Njcmlw
dD4KKyAgPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nl
c3NvcnMvd2FzbS1tb2R1bGUtcHJvY2Vzc29yLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
YXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3Jz
L3dhc20tbW9kdWxlLXByb2Nlc3Nvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjY3ODg0YmU0MmRkNjM2Yjdi
ZGU1N2Q0MzZkMDYxMTIxZmUxMzAxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9w
cm9jZXNzb3JzL3dhc20tbW9kdWxlLXByb2Nlc3Nvci5qcwpAQCAtMCwwICsxLDQ3IEBACisvKioK
KyAqIEBjbGFzcyBXQVNNTW9kdWxlUHJvY2Vzc29yCisgKiBAZXh0ZW5kcyBBdWRpb1dvcmtsZXRQ
cm9jZXNzb3IKKyAqCisgKiBUaGlzIHByb2Nlc3NvciBjbGFzcyBkZW1vbnN0cmF0ZXMgcGFzc2lu
ZyBXQVNNIG1vZHVsZXMgdG8gYW5kIGZyb20KKyAqIGF1ZGlvIHdvcmtsZXRzLgorICovCitjbGFz
cyBXQVNNTW9kdWxlUHJvY2Vzc29yIGV4dGVuZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKKyAg
Y29uc3RydWN0b3IoKSB7CisgICAgc3VwZXIoKTsKKyAgICB0aGlzLnBvcnQub25tZXNzYWdlID0g
dGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcyk7CisgICAgdGhpcy5wb3J0Lm9ubWVzc2FnZWVy
cm9yID0gdGhpcy5oYW5kbGVNZXNzYWdlRXJyb3IuYmluZCh0aGlzKTsKKyAgICB0aGlzLnBvcnQu
cG9zdE1lc3NhZ2Uoe3N0YXRlOiAnY3JlYXRlZCd9KTsKKyAgfQorCisgIHRlc3RNb2R1bGUobW9k
dWxlKSB7CisgICAgdHJ5IHsKKyAgICAgIGxldCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5J
bnN0YW5jZShtb2R1bGUpOworICAgICAgbGV0IGluY3JlbWVudCA9IGluc3RhbmNlLmV4cG9ydHNb
ImluY3JlbWVudCJdOworICAgICAgaWYgKHR5cGVvZiBpbmNyZW1lbnQgIT0gImZ1bmN0aW9uIikK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgbGV0IHJlc3VsdCA9IGluY3JlbWVudCg0Mik7
CisgICAgICByZXR1cm4gcmVzdWx0ID09IDQzOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICBoYW5kbGVNZXNzYWdlKGV2ZW50KSB7CisgICAg
dGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsKKyAgICAgIHN0YXRlOiAncmVjZWl2ZWQgbWVzc2FnZScs
CisgICAgICBpc1ZhbGlkTW9kdWxlOiB0aGlzLnRlc3RNb2R1bGUoZXZlbnQuZGF0YS5tb2R1bGUp
CisgICAgfSk7CisgIH0KKworICBoYW5kbGVNZXNzYWdlRXJyb3IoZXZlbnQpIHsKKyAgICB0aGlz
LnBvcnQucG9zdE1lc3NhZ2UoeworICAgICAgc3RhdGU6ICdyZWNlaXZlZCBtZXNzYWdlZXJyb3In
CisgICAgfSk7CisgIH0KKworICBwcm9jZXNzKCkgeworICAgIHJldHVybiB0cnVlOworICB9Cit9
CisKK3JlZ2lzdGVyUHJvY2Vzc29yKCd3YXNtLW1vZHVsZS1wcm9jZXNzb3InLCBXQVNNTW9kdWxl
UHJvY2Vzc29yKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5u
ZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFu
bmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0CmluZGV4IGQzMGI3ZTZlMjdlNjJkYTRjYzM1Mjk1ZTMy
OGFhNTRiNzY0NjVhZjEuLjBhY2UxZTZmNjI5MzU3NTEwZmQzNjY5NmYxY2FhNzYwZGJlMzRmNWQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9kdWxlL3dpbmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNj
ZXNzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDMgQEAKIAotRkFJTCBwb3N0TWVzc2FnaW5nIHRv
IGEgZGVkaWNhdGVkIHdvcmtlciB2aWEgTWVzc2FnZUNoYW5uZWwgYWxsb3dzIHRoZW0gdG8gaW5z
dGFudGlhdGUgcHJvbWlzZV90ZXN0OiBVbmhhbmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9i
amVjdCAiRGF0YUNsb25lRXJyb3I6IFRoZSBvYmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuIgorUEFT
UyBwb3N0TWVzc2FnaW5nIHRvIGEgZGVkaWNhdGVkIHdvcmtlciB2aWEgTWVzc2FnZUNoYW5uZWwg
YWxsb3dzIHRoZW0gdG8gaW5zdGFudGlhdGUKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436207</attachid>
            <date>2021-08-23 10:21:14 -0700</date>
            <delta_ts>2022-11-17 08:42:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220038-20210823102114.patch</filename>
            <type>text/plain</type>
            <size>38021</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTcwM2VlMzZiY2MxNzhl
MGE1N2MzYTE2ODZiM2ViMTM3ZjU4N2Y4Mi4uYmFlZjc1N2M1MjE0OWFkM2U0MTAyZmI2NjBmNmQ1
Nzg1YTEzNTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgzIEBACisyMDIxLTA4LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVW5hYmxlIHRvIHBvc3RNZXNz
YWdlIGEgV2ViQXNzZW1ibHkgbW9kdWxlIHRvIGEgd29ya2xldAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDM4CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS83MjU5NjU1Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBCZWNhdXNlIG9mIHNlcnZpY2Ugd29ya2VyIHN1cHBvcnQsIGFuZCBiZWNhdXNlIHdl
IGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgICAgICAgd2hvIHRoZSBkZXN0aW5hdGlvbiBpcyB3aGVu
IGNhbGxpbmcgTWVzc2FnZVBvcnQucG9zdE1lc3NhZ2UoKSwgZXZlcnkKKyAgICAgICAgbWVzc2Fn
ZSBnZXRzIHJvdXRlZCB2aWEgdGhlIG5ldHdvcmsgcHJvY2VzcywgZXZlbiBpZiB0aGUgZGVzdGlu
YXRpb24KKyAgICAgICAgZW5kcyB1cCBiZWluZyBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzIGlz
IGFuIGlzc3VlIGJlY2F1c2Ugc29tZSBvZgorICAgICAgICB0aGUgU2VyaWFsaXplZFNjcmlwdFZh
bHVlJ3MgZGF0YSBtZW1iZXJzIGNhbm5vdCBiZSBzZXJpYWxpemVkIGFuZAorICAgICAgICBzZW50
IHRvIGEgZGlmZmVyZW50IHByb2Nlc3MuIEluIHBhcnRpY3VsYXIsIHRoaXMgaXMgYW4gaXNzdWUg
Zm9yCisgICAgICAgIFdBU00gbW9kdWxlcyBhbmQgbWVtb3J5IGhhbmRsZXMuCisKKyAgICAgICAg
dG8gYWRkcmVzcyB0aGlzIGlzc3VlLCBJIGludHJvZHVjZWQgYSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgY2FjaGUuCisgICAgICAgIEVhY2ggU2VyaWFsaXplZFNjcmlwdFZhbHVlIGdldHMgYXNzaWdu
ZWQgYSBnbG9iYWxseSB1bmlxdWUKKyAgICAgICAgaWRlbnRpZmllciAodW5pcXVlIGFjcm9zcyBh
bGwgV2ViUHJvY2Vzc2VzKS4gV2hlbiBzZW5kaW5nIGEKKyAgICAgICAgU2VyaWFsaXplZFNjcmlw
dFZhbHVlIHZpYSBJUEMsIHdlIGFsc28gc2VyaWFsaXplZCBpdHMgaWRlbnRpZmllcgorICAgICAg
ICBhbmQgYWRkIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgdG8gdGhlIGluLXByb2Nlc3MgY2Fj
aGUuIFVwb24KKyAgICAgICAgZGVzZXJpYWxpemF0aW9uIGZyb20gSVBDLCB3ZSBjaGVjayBpZiB0
aGUgU2VyaWFsaXplZFNjcmlwdFZhbHVlIGlzCisgICAgICAgIGluIHRoZSBjYWNoZSBieSB1c2lu
ZyBpdHMgZGVzZXJpYWxpemVkIGlkZW50aWZpZXIuIElmIGl0IGlzIGluIHRoZQorICAgICAgICBj
YWNoZSwgd2UgcmV1c2UgaXQgc28gdGhhdCB3ZSBkb24ndCBsb3NlIHRoZSBkYXRhIG1lbWJlcnMg
dGhhdAorICAgICAgICBjb3VsZG4ndCBiZSBzZXJpYWxpemVkIG92ZXIgSVBDLgorCisgICAgICAg
IFdoZW4gdGhlIHNvdXJjZSBhbmQgdGhlIGRlc3RpbmF0aW9uIHByb2Nlc3MgYXJlIHRoZSBzYW1l
IChjb21tb24gY2FzZSksCisgICAgICAgIHRoZSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgb25seSBz
dGF5cyBpbiB0aGUgY2FjaGUgZm9yIGEgc2hvcnQgYW1vdW50IG9mCisgICAgICAgIHRpbWUgKGl0
IGdldHMgYWRkZWQgdG8gdGhlIGNhY2hlIG9uIHNlcmlhbGl6YXRpb24gYW5kIHJlbW92ZWQgdXBv
bgorICAgICAgICBkZXNlcmlhbGl6YXRpb24gYXQgdGhlIGRlc3RpbmF0aW9uKS4gSW4gY2FzZSB0
aGUgZGVzdGluYXRpb24gcHJvY2VzcworICAgICAgICBlbmRzIHVwIGJlaW5nIGEgZGlmZmVyZW50
IHByb2Nlc3MsIGNhY2hlZCBzZXJpYWxpemVkIHNjcmlwdCB2YWx1ZXMgb25seQorICAgICAgICBs
aXZlIGZvciAxMCBzZWNvbmRzIGF0IG1vc3QgaW4gdGhlIGNhY2hlLCB0byBhdm9pZCB3YXN0aW5n
IG1lbW9yeS4KKworICAgICAgICBOb3RlIHRoYXQsIGFzIHBlciB0aGUgc3BlY2lmaWNhdGlvbiwg
aXQgc2hvdWxkbid0IGJlIHBvc3NpYmxlIHRvIHNlbmQKKyAgICAgICAgV0FTTSBtb2R1bGVzIC8g
bWVtb3J5IGhhbmRsZXMgYWNyb3NzIGFnZW50IGNsdXN0ZXJzIFsxXS4gSSBoYWQgdG8KKyAgICAg
ICAgaW1wbGVtZW50IHRoaXMgYmVoYXZpb3IgaW4gb3JkZXIgdG8gbm90IHJlZ3Jlc3MgdGhlIGZv
bGxvd2luZyB0ZXN0OgorICAgICAgICAtIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
d2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93aW5kb3ctc2VydmljZXdvcmtlci1mYWlsdXJlLmh0
dHBzLmh0bWwKKyAgICAgICAgSW4gcGFydGljdWxhciwgc2VydmljZSB3b3JrZXJzIHNob3VsZCBi
ZWxvbmcgdG8gYSBkaWZmZXJlbnQgYWdlbnQgY2x1c3RlciwKKyAgICAgICAgZXZlbiBpZiB0aGV5
IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzLgorCisgICAgICAgIFsxXSBodHRwczovL3RjMzkuZXMv
ZWNtYTI2Mi8jc2VjLWFnZW50LWNsdXN0ZXJzCisgICAgICAgIFsyXSBodHRwczovL3dlYmFzc2Vt
Ymx5LmdpdGh1Yi5pby9zcGVjL3dlYi1hcGkvaW5kZXguaHRtbCNzZXJpYWxpemF0aW9uCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLCByZWJhc2VsaW5lZCBleGlzdGluZyB0ZXN0LgorCisgICAgICAg
ICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmRlZmF1bHRBZ2VudENsdXN0ZXJJRCk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTUdsb2JhbE9iamVjdDo6YWdlbnRDbHVzdGVySUQgY29u
c3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0Lmg6CisgICAgICAg
ICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpD
bG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkNsb25l
RGVzZXJpYWxpemVyOjpyZWFkVGVybWluYWwpOgorICAgICAgICAoV2ViQ29yZTo6Z2VuZXJhdGVJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6Q2FjaGU6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6dGFrZVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlZFZhbHVlOjpDYWNoZWRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjphZGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6dGFrZSk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRW
YWx1ZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjppZGVudGlmaWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6ZGVjb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlSWRlbnRpZmllcjo6aGFzaCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpvcGVy
YXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXI6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVyOjpkZWNvZGUpOgorICAgICAgICAoV1RGOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWVJZGVudGlmaWVySGFzaDo6aGFzaCk6CisgICAgICAgIChXVEY6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUlkZW50aWZpZXJIYXNoOjplcXVhbCk6CisgICAgICAgIChXVEY6Okhhc2hUcmFpdHM8V2Vi
Q29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj46OmVtcHR5VmFsdWUpOgorICAg
ICAgICAoV1RGOjpIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50
aWZpZXI+Ojpjb25zdHJ1Y3REZWxldGVkVmFsdWUpOgorICAgICAgICAoV1RGOjpIYXNoVHJhaXRz
PFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXI+Ojppc0RlbGV0ZWRWYWx1
ZSk6CisgICAgICAgICogZG9tL01lc3NhZ2VQb3J0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZSk6CisKIDIwMjEtMDgtMjMgIENhcmxvcyBHYXJjaWEgQ2Ft
cG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIENyZWF0ZSBhIFJlbmRlckxpbmVC
cmVhayB3aGVuIEJSIGVsZW1lbnQgaGFzIHVuc3VwcG9ydGVkIGNvbnRlbnQgZGF0YSBzdHlsZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L0hlYWRlcnMuY21ha2UKaW5kZXggZWIwN2I4MGM5OTMzZDY5YThjMzYzMTkxOGM3NWRiZTRlMzdh
OTJiOC4uNDJmYzJlMzkwNWQ4MDFjZDg5Y2U1ZmIyODBkODFiYTVkZmUwZjc1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFk
ZXJzLmNtYWtlCkBAIC0yOTEsNiArMjkxLDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdP
UktfSEVBREVSUwogICAgIGJpbmRpbmdzL2pzL1NjcmlwdFdyYXBwYWJsZS5oCiAgICAgYmluZGlu
Z3MvanMvU2NyaXB0V3JhcHBhYmxlSW5saW5lcy5oCiAgICAgYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmgKKyAgICBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVyLmgKICAgICBiaW5kaW5ncy9qcy9TdHJpbmdBZGFwdG9ycy5oCiAgICAgYmluZGluZ3Mv
anMvV2ViQ29yZUpJVE9wZXJhdGlvbnMuaAogICAgIGJpbmRpbmdzL2pzL1dlYkNvcmVUeXBlZEFy
cmF5Q29udHJvbGxlci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYjA5MzZhMGQ0NTlmMjQxYmU1MmE3YTFlYzRmYzg2YzczNzYx
NzNmYi4uNmEyZmJlNmQ3NzQ1YWI0NDA5ZTY5NGEwYjhkNWM0ZTBkNzAyZTA4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTI5
MCw2ICsxMjkwLDcgQEAKIAkJNDY3MkFBOTgyNkIwOTQzMzAwRTZFQzM4IC8qIENyb3NzT3JpZ2lu
RW1iZWRkZXJQb2xpY3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ2NzJBQTk2MjZCMDk0MjEwMEU2RUMzOCAvKiBDcm9zc09yaWdpbkVtYmVkZGVyUG9s
aWN5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NDY3MkFBOTkyNkIwOTQzRjAwRTZFQzM4IC8qIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjcyQUE5NzI2QjA5
NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjczMDIwMjFDNEVGRTc4MDBCQ0Iz
NTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NjczMDIwMTFDNEVGRTY2MDBC
Q0IzNTcgLyogSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmggKi87IH07
CisJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVu
dGlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjgwNjAwQzI2Q0RBOEE1MDBBMUE1QkYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2
ODJEMjAwMUY3OTc4MzAwMEM4NjNEQiAvKiBTdG9yZWRDcmVkZW50aWFsc1BvbGljeS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY4MkQxRkYxRjc5Nzgy
MzAwQzg2M0RCIC8qIFN0b3JlZENyZWRlbnRpYWxzUG9saWN5LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDY4MzQ0RTAxRURERkFBQTAwQjc3OTVC
IC8qIERPTVJlY3RMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NjgzNDRERTFFRERGQTVGMDBCNzc5NUIgLyogRE9NUmVjdExpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NjlDQ0NGRTI2OUQw
MjFDMDA2RTAzMTQgLyogQnJvYWRjYXN0Q2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDY5Q0NDRkMyNjlEMDIwMjAwNkUwMzE0IC8qIEJyb2Fk
Y2FzdENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODMxMCw2ICs4MzExLDcgQEAKIAkJNDY3MkFBOTYyNkIwOTQyMTAwRTZFQzM4IC8q
IENyb3NzT3JpZ2luRW1iZWRkZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3Jvc3NPcmlnaW5F
bWJlZGRlclBvbGljeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjcyQUE5NzI2
QjA5NDIxMDBFNkVDMzggLyogQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDY3MzAyMDExQzRFRkU2NjAwQkNCMzU3IC8qIElnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291
bnRJbmNyZW1lbnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJZ25vcmVP
cGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJGIC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUlkZW50aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRp
Zmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NjgyRDFGRjFGNzk3ODIzMDBD
ODYzREIgLyogU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDY4MzQ0REMxRURERkE1RjAwQjc3OTVCIC8qIERPTVJlY3RMaXN0LmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBET01SZWN0TGlzdC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2ODM0
NEREMUVEREZBNUYwMEI3Nzk1QiAvKiBET01SZWN0TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBET01SZWN0TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNzA0NCw2
ICsyNzA0Niw3IEBACiAJCQkJMTQwMEQ3QTcxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBw
YWJsZUlubGluZXMuaCAqLywKIAkJCQlBNzVFNDk3NTEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFs
aXplZFNjcmlwdFZhbHVlLmNwcCAqLywKIAkJCQlBNzVFNDk3NDEwNzUyQUNCMDBDOUI4OTYgLyog
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmggKi8sCisJCQkJNDY4MDYwMEMyNkNEQThBNTAwQTFBNUJG
IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIuaCAqLywKIAkJCQk3QzUyNjY5NjFG
MUIwMkZDMDAwRjA2OEIgLyogU3RyaW5nQWRhcHRvcnMuaCAqLywKIAkJCQk0MTRCODIwMjFENkRG
MEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmNwcCAqLywKIAkJCQk0MTRCODIwMzFENkRG
MEQ5MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggKi8sCkBAIC0zNDUwOCw2ICszNDUxMSw3
IEBACiAJCQkJMDc3QUYxNDMxOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3NkQxQzFGMjNGNkVCNUIwMEQ5NUIwNiAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3
NUU0OTc2MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTQ2ODA2MDBFMjZDREE4QjUwMEExQTVCRiAvKiBTZXJpYWxpemVkU2NyaXB0
VmFsdWVJZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTZGN0Y2RDFDMzFFMzlBMDBG
MTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5M0FF
RTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRjE3NTVEMUYzRUJDODMwMEM3NDk1MCAvKiBTZXJ2aWNlV29ya2VyLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA5MTZkMzNkOWRlNzRmMjIxM2RiZTMzNDNlZmYzZDAyYTNhYzM1
M2NkLi44YzU3NTI0N2UzOGNlMjYwYWU4MWNkNDA1ZGQwOTEyYWFkNjUyOTJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC00Niw5
ICs0NiwxMSBAQAogI2luY2x1ZGUgIkpTUmVtb3RlRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNX
b3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUgIkpTV29ya2xldEdsb2JhbFNjb3BlLmgiCisj
aW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKICNpbmNsdWRlICJSZWplY3RlZFByb21pc2VU
cmFja2VyLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUg
IlNjcmlwdE1vZHVsZUxvYWRlci5oIgorI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZWRDbG9uZS5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0Ns
aWVudERhdGEuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtNjMsNiArNjUs
NyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNVHJhcHNJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvV2FzbVN0cmVhbWluZ0NvbXBpbGVyLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvV2Vha0dDTWFwSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlTnVtYmVycy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtNTQ4LDYgKzU1MSwyMSBAQCBKU0M6OkpTT2JqZWN0KiBKU0RPTUdsb2Jh
bE9iamVjdDo6bW9kdWxlTG9hZGVyQ3JlYXRlSW1wb3J0TWV0YVByb3BlcnRpZXMoSlNDOjpKUwog
ICAgIHJldHVybiBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QtPnZtKCksIGdsb2Jh
bE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKIH0KIAorU3RyaW5nIEpT
RE9NR2xvYmFsT2JqZWN0OjpkZWZhdWx0QWdlbnRDbHVzdGVySUQoKQoreworICAgIHJldHVybiBt
YWtlU3RyaW5nKFByb2Nlc3M6OmlkZW50aWZpZXIoKS50b1VJbnQ2NCgpLCAiLWRlZmF1bHQiKTsK
K30KKworU3RyaW5nIEpTRE9NR2xvYmFsT2JqZWN0OjphZ2VudENsdXN0ZXJJRCgpIGNvbnN0Cit7
CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAgIC8vIFNlcnZpY2Ugd29ya2VycyBtYXkg
cnVuIGluIHByb2Nlc3MgYnV0IHRoZXkgbmVlZCB0byBiZSBpbiBhIHNlcGFyYXRlIGFnZW50IGNs
dXN0ZXIuCisgICAgaWYgKGlzPFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoUHJvY2Vzczo6aWRlbnRp
ZmllcigpLnRvVUludDY0KCksICItc2VydmljZXdvcmtlciIpOworI2VuZGlmCisgICAgcmV0dXJu
IGRlZmF1bHRBZ2VudENsdXN0ZXJJRCgpOworfQorCiBKU0RPTUdsb2JhbE9iamVjdCogdG9KU0RP
TUdsb2JhbE9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBET01XcmFwcGVy
V29ybGQmIHdvcmxkKQogewogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCBmOTIzNWQ2
YjE2Mzk5ZjA3ZDQwYmNhZTc5MjcxMTc1ZmVjOWNiZDhmLi4wMjhlZjQ2OWRjMTU2MDcyMTQ3MjIz
MDdlNTVhMTA4NThkNWY1YmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NR2xvYmFsT2JqZWN0LmgKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKIAogICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdDsKIAorICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYWdlbnQtY2x1c3RlcnMKKyAgICBTdHJp
bmcgYWdlbnRDbHVzdGVySUQoKSBjb25zdDsKKyAgICBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBZ2Vu
dENsdXN0ZXJJRCgpOworCiAgICAgLy8gTWFrZSBiaW5kaW5nIGNvZGUgZ2VuZXJhdGlvbiBlYXNp
ZXIuCiAgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCgpIHsgcmV0dXJuIHRoaXM7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKaW5kZXggNTA0Nzg1Yzk2ZDhmNTY0M2E5NjE4MjY4NTU5NTRkZTA2NTdkNmNj
NS4uODk1MzlhZDUwMWYwMzk0NWJkNDUwOWI2OTVlNDgwZTQ2NWEzM2VjNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBA
IC04OSw3ICs4OSw5IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvWWFyckZsYWdzLmg+CiAj
aW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9y
ZS5oPgpAQCAtMTEwLDcgKzExMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIERFRklORV9B
TExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIoU2VyaWFsaXplZFNjcmlwdFZhbHVlKTsKIAot
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heGltdW1GaWx0ZXJSZWN1cnNpb24gPSA0MDAwMDsKK2Nv
bnN0ZXhwciB1bnNpZ25lZCBtYXhpbXVtRmlsdGVyUmVjdXJzaW9uID0gNDAwMDA7Citjb25zdGV4
cHIgU2Vjb25kcyBjYWNoZWRTZXJpYWxpemVkU2NyaXB0VmFsdWVMaWZldGltZSB7IDEwX3MgfTsK
IAogZW51bSBjbGFzcyBTZXJpYWxpemF0aW9uUmV0dXJuQ29kZSB7CiAgICAgU3VjY2Vzc2Z1bGx5
Q29tcGxldGVkLApAQCAtMjM1LDYgKzIzOCwxNSBAQCBzdGF0aWMgdW5zaWduZWQgdHlwZWRBcnJh
eUVsZW1lbnRTaXplKEFycmF5QnVmZmVyVmlld1N1YnRhZyB0YWcpCiAgICAgfQogfQogCisjaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQorc3RhdGljIFN0cmluZyBhZ2VudENsdXN0ZXJJREZyb21HbG9i
YWxPYmplY3QoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoIWdsb2Jh
bE9iamVjdC5pbmhlcml0czxKU0RPTUdsb2JhbE9iamVjdD4oZ2xvYmFsT2JqZWN0LnZtKCkpKQor
ICAgICAgICByZXR1cm4gSlNET01HbG9iYWxPYmplY3Q6OmRlZmF1bHRBZ2VudENsdXN0ZXJJRCgp
OworICAgIHJldHVybiBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmZ2xvYmFsT2JqZWN0KS0+
YWdlbnRDbHVzdGVySUQoKTsKK30KKyNlbmRpZgorCiBlbnVtIGNsYXNzIFByZWRlZmluZWRDb2xv
clNwYWNlVGFnIDogdWludDhfdCB7CiAgICAgU1JHQiA9IDAKICNpZiBFTkFCTEUoREVTVElOQVRJ
T05fQ09MT1JfU1BBQ0VfRElTUExBWV9QMykKQEAgLTMyMiw3ICszMzQsNyBAQCBzdGF0aWMgdW5z
aWduZWQgY291bnRVc2FnZXMoQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzKQogICogVmVyc2lv
biA3LiBhZGRlZCBzdXBwb3J0IGZvciBGaWxlJ3MgbGFzdE1vZGlmaWVkIGF0dHJpYnV0ZS4KICAq
IFZlcnNpb24gOC4gYWRkZWQgc3VwcG9ydCBmb3IgSW1hZ2VEYXRhJ3MgY29sb3JTcGFjZSBhdHRy
aWJ1dGUuCiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdXJyZW50VmVyc2lvbiA9IDg7Citz
dGF0aWMgY29uc3QgdW5zaWduZWQgQ3VycmVudFZlcnNpb24gPSA5Owogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFRlcm1pbmF0b3JUYWcgPSAweEZGRkZGRkZGOwogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IFN0cmluZ1Bvb2xUYWcgPSAweEZGRkZGRkZFOwogc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vbklu
ZGV4UHJvcGVydGllc1RhZyA9IDB4RkZGRkZGRkQ7CkBAIC0xMzQ4LDYgKzEzNjAsNyBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gbV93YXNtTW9kdWxlcy5zaXpl
KCk7IAogICAgICAgICAgICAgICAgIG1fd2FzbU1vZHVsZXMuYXBwZW5kKG1ha2VSZWYobW9kdWxl
LT5tb2R1bGUoKSkpOwogICAgICAgICAgICAgICAgIHdyaXRlKFdhc21Nb2R1bGVUYWcpOworICAg
ICAgICAgICAgICAgIHdyaXRlKGFnZW50Q2x1c3RlcklERnJvbUdsb2JhbE9iamVjdCgqbV9sZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAgICAgICAgd3JpdGUoaW5kZXgpOwogICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQpAQCAtMTM2Myw2ICsxMzc2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IG1fd2FzbU1lbW9y
eUhhbmRsZXMuc2l6ZSgpOwogICAgICAgICAgICAgICAgIG1fd2FzbU1lbW9yeUhhbmRsZXMuYXBw
ZW5kKG1ha2VSZWYobWVtb3J5LT5tZW1vcnkoKS5oYW5kbGUoKSkpOwogICAgICAgICAgICAgICAg
IHdyaXRlKFdhc21NZW1vcnlUYWcpOworICAgICAgICAgICAgICAgIHdyaXRlKGFnZW50Q2x1c3Rl
cklERnJvbUdsb2JhbE9iamVjdCgqbV9sZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiAgICAgICAgICAg
ICAgICAgd3JpdGUoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQpAQCAtMzQ5OCw2ICszNTEyLDE1IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGNhc2UgV2FzbU1vZHVsZVRhZzogeworICAgICAg
ICAgICAgaWYgKG1fdmVyc2lvbiA+PSA5KSB7CisgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93
ZWJhc3NlbWJseS5naXRodWIuaW8vc3BlYy93ZWItYXBpL2luZGV4Lmh0bWwjc2VyaWFsaXphdGlv
bgorICAgICAgICAgICAgICAgIENhY2hlZFN0cmluZ1JlZiBhZ2VudENsdXN0ZXJJRDsKKyAgICAg
ICAgICAgICAgICBib29sIGFnZW50Q2x1c3RlcklEU3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWRTdHJp
bmdEYXRhKGFnZW50Q2x1c3RlcklEKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFnZW50Q2x1c3Rl
cklEU3VjY2Vzc2Z1bGx5UmVhZCB8fCBhZ2VudENsdXN0ZXJJRC0+c3RyaW5nKCkgIT0gYWdlbnRD
bHVzdGVySURGcm9tR2xvYmFsT2JqZWN0KCptX2dsb2JhbE9iamVjdCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZmFpbCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHVpbnQzMl90IGlu
ZGV4OwogICAgICAgICAgICAgYm9vbCBpbmRleFN1Y2Nlc3NmdWxseVJlYWQgPSByZWFkKGluZGV4
KTsKICAgICAgICAgICAgIGlmICghaW5kZXhTdWNjZXNzZnVsbHlSZWFkIHx8ICFtX3dhc21Nb2R1
bGVzIHx8IGluZGV4ID49IG1fd2FzbU1vZHVsZXMtPnNpemUoKSkgewpAQCAtMzUxNCw2ICszNTM3
LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgV2FzbU1lbW9yeVRhZzogeworICAgICAgICAgICAgaWYgKG1fdmVyc2lvbiA+
PSA5KSB7CisgICAgICAgICAgICAgICAgQ2FjaGVkU3RyaW5nUmVmIGFnZW50Q2x1c3RlcklEOwor
ICAgICAgICAgICAgICAgIGJvb2wgYWdlbnRDbHVzdGVySURTdWNjZXNzZnVsbHlSZWFkID0gcmVh
ZFN0cmluZ0RhdGEoYWdlbnRDbHVzdGVySUQpOworICAgICAgICAgICAgICAgIGlmICghYWdlbnRD
bHVzdGVySURTdWNjZXNzZnVsbHlSZWFkIHx8IGFnZW50Q2x1c3RlcklELT5zdHJpbmcoKSAhPSBh
Z2VudENsdXN0ZXJJREZyb21HbG9iYWxPYmplY3QoKm1fZ2xvYmFsT2JqZWN0KSkgeworICAgICAg
ICAgICAgICAgICAgICBmYWlsKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogICAgICAgICAgICAgdWludDMy
X3QgaW5kZXg7CiAgICAgICAgICAgICBib29sIGluZGV4U3VjY2Vzc2Z1bGx5UmVhZCA9IHJlYWQo
aW5kZXgpOwogICAgICAgICAgICAgaWYgKCFpbmRleFN1Y2Nlc3NmdWxseVJlYWQgfHwgIW1fd2Fz
bU1lbW9yeUhhbmRsZXMgfHwgaW5kZXggPj0gbV93YXNtTWVtb3J5SGFuZGxlcy0+c2l6ZSgpKSB7
CkBAIC0zODk1LDE4ICszOTI2LDI4IEBAIGVycm9yOgogCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiAKK3N0YXRpYyBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6OklkZW50aWZpZXIgZ2VuZXJhdGVJZGVudGlmaWVyKCkKK3sKKyAgICByZXR1
cm4geworICAgICAgICBQcm9jZXNzOjppZGVudGlmaWVyKCksCisgICAgICAgIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6SWRlbnRpZmllcjo6VmFsdWVJZGVudGlmaWVyOjpnZW5lcmF0ZVRocmVhZFNh
ZmUoKQorICAgIH07Cit9CisKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlcikKLSAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1
ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAgLCBt
X2RhdGEoV1RGTW92ZShidWZmZXIpKQogewogICAgIG1fbWVtb3J5Q29zdCA9IGNvbXB1dGVNZW1v
cnlDb3N0KCk7CiB9CiAKLVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVy
Q29udGVudHNBcnJheT4mJiBhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkKK1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKElkZW50aWZpZXIgaWRlbnRpZmllciwgVmVj
dG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50
c0FycmF5PiYmIGFycmF5QnVmZmVyQ29udGVudHNBcnJheQogI2lmIEVOQUJMRShXRUJfUlRDKQog
ICAgICAgICAsIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGV0YWNoZWRSVENEYXRhQ2hhbm5lbD4+
JiYgZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMKICNlbmRpZgogICAgICAgICApCi0gICAgOiBtX2Rh
dGEoV1RGTW92ZShidWZmZXIpKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAg
LCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogI2lmIEVOQUJMRShXRUJfUlRD
KQogICAgICwgbV9kZXRhY2hlZFJUQ0RhdGFDaGFubmVscyhXVEZNb3ZlKGRldGFjaGVkUlRDRGF0
YUNoYW5uZWxzKSkKQEAgLTM5MjcsNyArMzk2OCw4IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVj
CiAgICAgICAgICwgc3RkOjp1bmlxdWVfcHRyPFdhc21NZW1vcnlIYW5kbGVBcnJheT4gd2FzbU1l
bW9yeUhhbmRsZXNBcnJheQogI2VuZGlmCiAgICAgICAgICkKLSAgICA6IG1fZGF0YShXVEZNb3Zl
KGJ1ZmZlcikpCisgICAgOiBtX2lkZW50aWZpZXIoZ2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAg
LCBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogICAgICwgbV9hcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXkoV1RGTW92ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpKQogICAgICwgbV9zaGFyZWRCdWZm
ZXJDb250ZW50c0FycmF5KFdURk1vdmUoc2hhcmVkQnVmZmVyQ29udGVudHNBcnJheSkpCiAgICAg
LCBtX2JhY2tpbmdTdG9yZXMoV1RGTW92ZShiYWNraW5nU3RvcmVzKSkKQEAgLTQ0MTIsNCArNDQ1
NCw4NCBAQCBJREJWYWx1ZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rpc2tG
b3JJbmRleGVkREJTeW5jaHJvbm91c2x5KCkKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK2F1dG8g
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6c2luZ2xldG9uKCkgLT4gQ2FjaGUmCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPENhY2hlPiBjYWNoZTsKKyAgICByZXR1cm4gY2FjaGU7
Cit9CisKK1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Q2FjaGU6OkNhY2hlKCkKKyAgICA6IG1fZXhw
aXJhdGlvblRpbWVyKCp0aGlzLCAmQ2FjaGU6OmV4cGlyYXRpb25UaW1lckZpcmVkKQoreworfQor
CitjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZSB7CisgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQ2FjaGVkVmFsdWUoUmVmUHRy
PFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJik7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gdGFrZVZhbHVlKCkgeyByZXR1cm4gc3RkOjpleGNoYW5nZShtX3ZhbHVlLCBudWxscHRy
KTsgfQorCisgICAgU2Vjb25kcyBleHBpcmF0aW9uVGltZSgpIGNvbnN0CisgICAgeworICAgICAg
ICAgYXV0byBsaWZldGltZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9hZGRUaW1lOworICAg
ICAgICByZXR1cm4gc3RkOjptYXgoMF9zLCBjYWNoZWRTZXJpYWxpemVkU2NyaXB0VmFsdWVMaWZl
dGltZSAtIGxpZmV0aW1lKTsKKyAgICB9CisgICAgYm9vbCBoYXNFeHBpcmVkKCkgY29uc3QgeyBy
ZXR1cm4gZXhwaXJhdGlvblRpbWUoKSA8IDEwMF9tczsgfQorCitwcml2YXRlOgorICAgIHZvaWQg
ZXhwaXJhdGlvblRpbWVyRmlyZWQoKTsKKworICAgIE1vbm90b25pY1RpbWUgbV9hZGRUaW1lOwor
ICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IG1fdmFsdWU7Cit9OworCitTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OkNhY2hlOjpDYWNoZWRWYWx1ZTo6Q2FjaGVkVmFsdWUoUmVmUHRyPFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZT4mJiB2YWx1ZSkKKyAgICA6IG1fYWRkVGltZShNb25vdG9uaWNU
aW1lOjpub3coKSkKKyAgICAsIG1fdmFsdWUoV1RGTW92ZSh2YWx1ZSkpCit7Cit9CisKK3ZvaWQg
U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6YWRkKFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0
VmFsdWU+JiYgc2VyaWFsaXplZFNjcmlwdFZhbHVlKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgbV92YWx1ZUlkZW50aWZpZXJzSW5BZGRPcmRlci5hZGQoc2VyaWFsaXplZFNj
cmlwdFZhbHVlLT5pZGVudGlmaWVyKCkpOworICAgIC8vIFRoZSBleHBpcmF0aW9uIHRpbWVyIGlz
IHVwZGF0ZWQgbGF6aWx5IGZvciBwZXJmb3JtYW5jZSByZWFzb25zLgorICAgIGlmIChtX3ZhbHVl
SWRlbnRpZmllcnNJbkFkZE9yZGVyLnNpemUoKSA9PSAxICYmICFtX2V4cGlyYXRpb25UaW1lci5p
c0FjdGl2ZSgpKQorICAgICAgICAgICAgbV9leHBpcmF0aW9uVGltZXIuc3RhcnRPbmVTaG90KGNh
Y2hlZFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUxpZmV0aW1lKTsKKyAgICBtX3ZhbHVlcy5hZGQoc2Vy
aWFsaXplZFNjcmlwdFZhbHVlLT5pZGVudGlmaWVyKCksIG1ha2VVbmlxdWU8Q2FjaGVkVmFsdWU+
KFdURk1vdmUoc2VyaWFsaXplZFNjcmlwdFZhbHVlKSkpOworfQorCitSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjp0YWtlKElkZW50aWZp
ZXIgaWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIG1fdmFs
dWVJZGVudGlmaWVyc0luQWRkT3JkZXIucmVtb3ZlKGlkZW50aWZpZXIpOworICAgIGF1dG8gY2Fj
aGVkVmFsdWUgPSBtX3ZhbHVlcy50YWtlKGlkZW50aWZpZXIpOworICAgIHJldHVybiBjYWNoZWRW
YWx1ZSA/IGNhY2hlZFZhbHVlLT50YWtlVmFsdWUoKSA6IG51bGxwdHI7Cit9CisKK3ZvaWQgU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpDYWNoZTo6ZXhwaXJhdGlvblRpbWVyRmlyZWQoKQoreworICAg
IHdoaWxlICghbV92YWx1ZUlkZW50aWZpZXJzSW5BZGRPcmRlci5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgYXV0byBpdCA9IG1fdmFsdWVzLmZpbmQobV92YWx1ZUlkZW50aWZpZXJzSW5BZGRPcmRlci5m
aXJzdCgpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoaXQgIT0gbV92YWx1ZXMuZW5kKCkpOwor
ICAgICAgICBpZiAoIWl0LT52YWx1ZS0+aGFzRXhwaXJlZCgpKQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgbV92YWx1ZXMucmVtb3ZlKGl0KTsKKyAgICAgICAgbV92YWx1ZUlkZW50aWZp
ZXJzSW5BZGRPcmRlci5yZW1vdmVGaXJzdCgpOworICAgIH0KKworICAgIHJlc2NoZWR1bGVFeHBp
cmF0aW9uVGltZXIoKTsKK30KKwordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkNhY2hlOjpy
ZXNjaGVkdWxlRXhwaXJhdGlvblRpbWVyKCkKK3sKKyAgICBpZiAobV92YWx1ZUlkZW50aWZpZXJz
SW5BZGRPcmRlci5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gaXQgPSBt
X3ZhbHVlcy5maW5kKG1fdmFsdWVJZGVudGlmaWVyc0luQWRkT3JkZXIuZmlyc3QoKSk7CisgICAg
UkVMRUFTRV9BU1NFUlQoaXQgIT0gbV92YWx1ZXMuZW5kKCkpOworICAgIG1fZXhwaXJhdGlvblRp
bWVyLnN0YXJ0T25lU2hvdChpdC0+dmFsdWUtPmV4cGlyYXRpb25UaW1lKCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oCmluZGV4IGZiNzU3YTRkNzRmNjBlMmZmY2RiODI5YzE1MjAz
MGE2Njk5YzE0Y2YuLjc3M2Q0NDUwOWE1MzY0MmJhNmUyNzY1YjU5N2Q1M2VkOTBkOWFiZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oCkBAIC0yOSwxMiArMjksMTYgQEAKICNpbmNsdWRlICJCbG9iLmgiCiAjaW5jbHVkZSAiRGV0
YWNoZWRSVENEYXRhQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCisjaW5jbHVk
ZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU3Ryb25n
Lmg+CisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvR2lnYWNhZ2UuaD4KKyNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBA
IC0xMTUsOSArMTE5LDEyIEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JUIH5TZXJpYWxp
emVkU2NyaXB0VmFsdWUoKTsKIAorICAgIHVzaW5nIElkZW50aWZpZXIgPSBTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJZGVudGlmaWVyOworICAgIElkZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsg
cmV0dXJuIG1faWRlbnRpZmllcjsgfQorCiBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJik7Ci0gICAgV0VCQ09S
RV9FWFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmLCBz
dGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmCisgICAgV0VCQ09SRV9F
WFBPUlQgU2VyaWFsaXplZFNjcmlwdFZhbHVlKElkZW50aWZpZXIsIFZlY3Rvcjx1bnNpZ25lZCBj
aGFyPiYmLCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiYmCiAjaWYg
RU5BQkxFKFdFQl9SVEMpCiAgICAgICAgICwgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEZXRhY2hl
ZFJUQ0RhdGFDaGFubmVsPj4mJgogI2VuZGlmCkBAIC0xMzYsOCArMTQzLDMwIEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICAgICAgKTsKIAorICAgIGNsYXNzIENhY2hlIHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyBDYWNoZSYgc2luZ2xldG9uKCk7CisKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhZGQoUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4m
Jik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHRha2UoSWRlbnRpZmllcik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TmV2ZXJEZXN0cm95ZWQ8Q2FjaGU+OworICAgICAgICBDYWNoZSgpOworCisgICAgICAgIHZvaWQg
ZXhwaXJhdGlvblRpbWVyRmlyZWQoKTsKKyAgICAgICAgdm9pZCByZXNjaGVkdWxlRXhwaXJhdGlv
blRpbWVyKCk7CisKKyAgICAgICAgY2xhc3MgQ2FjaGVkVmFsdWU7CisKKyAgICAgICAgVGltZXIg
bV9leHBpcmF0aW9uVGltZXI7CisgICAgICAgIExpc3RIYXNoU2V0PElkZW50aWZpZXI+IG1fdmFs
dWVJZGVudGlmaWVyc0luQWRkT3JkZXI7CisgICAgICAgIEhhc2hNYXA8SWRlbnRpZmllciwgc3Rk
Ojp1bmlxdWVfcHRyPENhY2hlZFZhbHVlPj4gbV92YWx1ZXM7CisgICAgfTsKKwogICAgIHNpemVf
dCBjb21wdXRlTWVtb3J5Q29zdCgpIGNvbnN0OwogCisgICAgSWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAgICAgVmVjdG9yPHVuc2lnbmVkIGNoYXI+IG1fZGF0YTsKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheTsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5PiBtX3NoYXJlZEJ1
ZmZlckNvbnRlbnRzQXJyYXk7CkBAIC0xNzcsNiArMjA2LDkgQEAgdm9pZCBTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGZvciAoY29uc3Qg
YXV0byAmY2hhbm5lbCA6IG1fZGV0YWNoZWRSVENEYXRhQ2hhbm5lbHMpCiAgICAgICAgIGVuY29k
ZXIgPDwgKmNoYW5uZWw7CiAjZW5kaWYKKworICAgIENhY2hlOjpzaW5nbGV0b24oKS5hZGQoY29u
c3RfY2FzdDxTZXJpYWxpemVkU2NyaXB0VmFsdWUqPih0aGlzKSk7CisgICAgZW5jb2RlciA8PCBt
X2lkZW50aWZpZXI7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC0yMzAsNyArMjYy
LDE2IEBAIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBTZXJpYWxpemVkU2NyaXB0VmFsdWUoV1RGTW92ZShkYXRhKSwgV1RGTW92
ZShhcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXkpCisgICAgSWRlbnRpZmllciBpZGVudGlmaWVyOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaWRlbnRpZmllcikpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgLy8gV2UgYXJlIG5vdCBhYmxlIHRvIHNlcmlhbGl6ZSB0aGluZ3MgbGlrZSBX
QVNNIG1vZHVsZXMgc28gcmV1c2UgdGhlIGV4aXN0aW5nIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBp
ZiBzdGlsbCBhbGl2ZQorICAgIC8vIHVwb24gZGVzZXJpYWxpemF0aW9uIGluc3RlYWQgb2YgY29u
c3RydWN0aW5nIGEgbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBmcm9tIGRlc2VyaWFsaXplZCBk
YXRhLgorICAgIGlmIChhdXRvIGV4aXN0aW5nVmFsdWUgPSBDYWNoZTo6c2luZ2xldG9uKCkudGFr
ZShpZGVudGlmaWVyKSkKKyAgICAgICAgcmV0dXJuIGV4aXN0aW5nVmFsdWUucmVsZWFzZU5vbk51
bGwoKTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShp
ZGVudGlmaWVyLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGFycmF5QnVmZmVyQ29udGVudHNBcnJh
eSkKICNpZiBFTkFCTEUoV0VCX1JUQykKICAgICAgICAgLCBXVEZNb3ZlKGRldGFjaGVkUlRDRGF0
YUNoYW5uZWxzKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmQz
M2JmNjEyZWZhZDU1ZmRhNzNkZmVhN2Y5ZmU1YWQ0NGIxODFlMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZp
ZXIuaApAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXIgeworICAgIFByb2Nlc3NJZGVu
dGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyOworCisgICAgZW51bSBWYWx1ZUlkZW50aWZpZXJUeXBl
IHsgfTsKKyAgICB1c2luZyBWYWx1ZUlkZW50aWZpZXIgPSBPYmplY3RJZGVudGlmaWVyPFZhbHVl
SWRlbnRpZmllclR5cGU+OworICAgIFZhbHVlSWRlbnRpZmllciB2YWx1ZUlkZW50aWZpZXI7CisK
KyAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gY29tcHV0ZUhhc2gocHJvY2Vzc0lk
ZW50aWZpZXIudG9VSW50NjQoKSwgdmFsdWVJZGVudGlmaWVyLnRvVUludDY0KCkpOyB9CisKKyAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Cisg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4gZGVjb2RlKERlY29kZXImKTsKK307CisKK2lubGluZSBi
b29sIG9wZXJhdG9yPT0oY29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYSwg
Y29uc3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllciYgYikKK3sKKyAgICByZXR1cm4g
YS5wcm9jZXNzSWRlbnRpZmllciA9PSBiLnByb2Nlc3NJZGVudGlmaWVyICYmIGEudmFsdWVJZGVu
dGlmaWVyID09IGIudmFsdWVJZGVudGlmaWVyOworfQorCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVy
Pgordm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHByb2Nlc3NJZGVudGlmaWVyIDw8IHZh
bHVlSWRlbnRpZmllcjsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9u
YWw8U2VyaWFsaXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4gU2VyaWFsaXplZFNjcmlwdFZhbHVl
SWRlbnRpZmllcjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25h
bDxQcm9jZXNzSWRlbnRpZmllcj4gcHJvY2Vzc0lkZW50aWZpZXI7CisgICAgZGVjb2RlciA+PiBw
cm9jZXNzSWRlbnRpZmllcjsKKyAgICBpZiAoIXByb2Nlc3NJZGVudGlmaWVyKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxWYWx1ZUlkZW50aWZpZXI+
IHZhbHVlSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHZhbHVlSWRlbnRpZmllcjsKKyAgICBp
ZiAoIXZhbHVlSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHJldHVybiB7IHsgKnByb2Nlc3NJZGVudGlmaWVyLCAqdmFsdWVJZGVudGlmaWVyIH0gfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCituYW1lc3BhY2UgV1RGIHsKKworc3RydWN0IFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXJIYXNoIHsKKyAgICBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBrZXkp
IHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChjb25zdCBXZWJD
b3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBhLCBjb25zdCBXZWJDb3JlOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVyJiBiKSB7IHJldHVybiBhID09IGI7IH0KKyAg
ICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVsZXRlZCA9IHRydWU7
Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUlkZW50aWZpZXI+IDogR2VuZXJpY0hhc2hUcmFpdHM8V2ViQ29yZTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlSWRlbnRpZmllcj4geworICAgIHN0YXRpYyBXZWJDb3JlOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWVJZGVudGlmaWVyIGVtcHR5VmFsdWUoKSB7IHJldHVybiB7IH07IH0KKwor
ICAgIHN0YXRpYyB2b2lkIGNvbnN0cnVjdERlbGV0ZWRWYWx1ZShXZWJDb3JlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWVJZGVudGlmaWVyJiBzbG90KSB7IG5ldyAoTm90TnVsbCwgJnNsb3QucHJvY2Vz
c0lkZW50aWZpZXIpIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKFdURjo6SGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKTsgfQorICAgIHN0YXRpYyBib29sIGlzRGVsZXRlZFZhbHVlKGNvbnN0IFdlYkNv
cmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlkZW50aWZpZXImIHNsb3QpIHsgcmV0dXJuIHNsb3Qu
cHJvY2Vzc0lkZW50aWZpZXIuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQorfTsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVl
SWRlbnRpZmllcj4gOiBTZXJpYWxpemVkU2NyaXB0VmFsdWVJZGVudGlmaWVySGFzaCB7IH07CisK
K30gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggYzFj
NWRjOTg2YWNiNzIzNDJlZDEwMGQ2ZmRjOWQ5MTYwZmQ4YzkyNy4uOTBmOTViOWM5OTk5YTNmOGE0
ODY3ZjQ1Nzc4ZjFlZjNjMTlhNTE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01l
c3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBA
IC0xMzksNyArMTM5LDExIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBzdGF0ZSwgSlNDOjpKU1ZhCiAgICAgcmVnaXN0ZXJM
b2NhbEFjdGl2aXR5KCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPE1lc3NhZ2VQb3J0Pj4gcG9ydHM7
Ci0gICAgYXV0byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKHN0
YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzKTsKKwor
ICAgIC8vIEZJWE1FOiBBdCB0aGUgdGltZSBvZiBzZXJpYWxpemF0aW9uLCB3ZSBkb24ndCBrbm93
IGlmIHRoZSB0YXJnZXQgaXMgYSB3aW5kb3csIGEgd29ya2VyIG9yIHNvbWV0aGluZyBlbHNlLiBX
ZSB3aWxsIG9ubHkga25vdyBhdCB0aGUgdGltZSBvZgorICAgIC8vIGRlc2VyaWFsaXphdGlvbi4g
VGhpcyBpcyBhbiBpc3N1ZSBzaW5jZSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZSgpIHdp
bGwgcmV0dXJuIGFuIGV4Y2VwdGlvbiBpZiBXYXNtIG1vZHVsZXMgLyBtZW1vcnkgaGFuZGxlcyBh
cmUgcHJlc2VudCBhbmQgdGhlIGNvbnRleHQKKyAgICAvLyBpcyBub3QgV29ya2VyUG9zdE1lc3Nh
Z2UuCisgICAgYXV0byBtZXNzYWdlRGF0YSA9IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRl
KHN0YXRlLCBtZXNzYWdlVmFsdWUsIFdURk1vdmUob3B0aW9ucy50cmFuc2ZlciksIHBvcnRzLCBT
ZXJpYWxpemF0aW9uQ29udGV4dDo6V29ya2VyUG9zdE1lc3NhZ2UpOwogICAgIGlmIChtZXNzYWdl
RGF0YS5oYXNFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIG1lc3NhZ2VEYXRhLnJlbGVhc2VF
eGNlcHRpb24oKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQwZTUwMzczMTI3ZWU3NmJhN2EyODU5ODU1NTc0MWZkMjli
Yjk2YzEuLmIwZDlmYmY0ZGVjNmI0ZWViNTIyYTdjYmE2MThmMjUyNTk3YTZlMjkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAyMS0wOC0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgorCisgICAgICAgIFVuYWJsZSB0byBwb3N0TWVzc2FnZSBhIFdlYkFzc2VtYmx5IG1vZHVsZSB0
byBhIHdvcmtsZXQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyMDAzOAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI1OTY1NTY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZSBzZXJpYWxpemF0aW9uIHZlcnNpb24gaW4gdGhlIHRlc3QuCisKKyAgICAgICAg
KiBmYXN0L3N0b3JhZ2Uvc2VyaWFsaXplZC1zY3JpcHQtdmFsdWUuaHRtbDoKKwogMjAyMS0wOC0y
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdDIgY2Fu
IG9ubHkgaGF2ZSBvbmUgYWN0aXZlIG5hdmlnYXRpb24gcG9saWN5IGNoZWNrIGZvciBhIGdpdmVu
IGZyYW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA5YzBiYzRhY2YzMGQ0NGY0
ZGY5YWEwNGNhOTVmZWRiZGQ0YmEyODYyLi4xZWI0ZGE5MThmZGFjNzc5NGMxYTdiYzFhZjZiMDIz
MmQ2N2NiYWVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBA
QAorMjAyMS0wOC0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAg
IFVuYWJsZSB0byBwb3N0TWVzc2FnZSBhIFdlYkFzc2VtYmx5IG1vZHVsZSB0byBhIHdvcmtsZXQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDAzOAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzI1OTY1NTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBXUFQgdGVzdCB0aGF0IGlzIG5v
dyBwYXNzaW5nLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXph
dGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0Ogor
CiAyMDIxLTA4LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViS2l0MiBjYW4gb25seSBoYXZlIG9uZSBhY3RpdmUgbmF2aWdhdGlvbiBwb2xpY3kgY2hlY2sg
Zm9yIGEgZ2l2ZW4gZnJhbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc3RvcmFnZS9z
ZXJpYWxpemVkLXNjcmlwdC12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3Nl
cmlhbGl6ZWQtc2NyaXB0LXZhbHVlLmh0bWwKaW5kZXggZWIxNjYzZmIwMGM0ZTU3OWVmN2Y2MmI3
YmU1M2VjNDk0N2MyMmZiZi4uNTU0YTAyZGYxN2FkNTAwZDFhYTAzMzQ2NzIwZjYyM2ZjYTc5MTQ0
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2NyaXB0
LXZhbHVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9zdG9yYWdlL3NlcmlhbGl6ZWQtc2Ny
aXB0LXZhbHVlLmh0bWwKQEAgLTYsNyArNiw3IEBACiAgICAgPGJvZHk+CiAgICAgICAgIDxzY3Jp
cHQ+CiAKLWNvbnN0IGN1cnJlbnRWZXJzaW9uID0gMHgwODsKK2NvbnN0IGN1cnJlbnRWZXJzaW9u
ID0gMHgwOTsKIAogLy8gSGVyZSdzIGEgbGl0dGxlIFEmRCBoZWxwZXIgZm9yIGZ1dHVyZSBhZHZl
bnR1cmVycyBuZWVkaW5nIHRvIHJlYmFzZWxpbmUgdGhpcy4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWlu
dGVyZmFjZS9hdWRpb3dvcmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUt
YXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1
bGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyNzQ4ODk0ZjkzZThiMWEwNjQyNThj
YzFhYWQyMGJmMGFjZWJiMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlv
d29ya2xldC1wb3N0bWVzc2FnZS13YXNtLW1vZHVsZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw5IEBACisKK1BBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBTVEFSVEVELgorUEFTUyBFeGVj
dXRpbmcgIlRlc3QgcG9zdE1lc3NhZ2UgZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgdG8gQXVk
aW9Xb3JrbGV0Tm9kZSIKK1BBU1MgQXVkaXQgcmVwb3J0CitQQVNTID4gW1Rlc3QgcG9zdE1lc3Nh
Z2UgZnJvbSBBdWRpb1dvcmtsZXRQcm9jZXNzb3IgdG8gQXVkaW9Xb3JrbGV0Tm9kZV0KK1BBU1Mg
ICBldmVudC5tb2R1bGUgZnJvbSBtYWluIHRocmVhZCBpcyBhbiB2YWxpZCBXQVNNIG1vZHVsZSBp
cyB0cnVlLgorUEFTUyA8IFtUZXN0IHBvc3RNZXNzYWdlIGZyb20gQXVkaW9Xb3JrbGV0UHJvY2Vz
c29yIHRvIEF1ZGlvV29ya2xldE5vZGVdIEFsbCBhc3NlcnRpb25zIHBhc3NlZC4gKHRvdGFsIDEg
YXNzZXJ0aW9ucykKK1BBU1MgIyBBVURJVCBUQVNLIFJVTk5FUiBGSU5JU0hFRDogMSB0YXNrcyBy
YW4gc3VjY2Vzc2Z1bGx5LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJh
dWRpby90aGUtYXVkaW8tYXBpL3RoZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL2F1ZGlvd29ya2xl
dC1wb3N0bWVzc2FnZS13YXNtLW1vZHVsZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9hdWRp
b3dvcmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
MjMxMzY3NmFiNzkyZTFjZDZiNWQ5YzJiODk1MzE3M2RiMmQ2OGRjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVkaW93
b3JrbGV0LWludGVyZmFjZS9hdWRpb3dvcmtsZXQtcG9zdG1lc3NhZ2Utd2FzbS1tb2R1bGUuaHR0
cHMuaHRtbApAQCAtMCwwICsxLDc0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVh
ZD4KKyAgICA8dGl0bGU+CisgICAgICBUZXN0IHBhc3NpbmcgV0FTTSBtb2R1bGUgdG8gYW4gQXVk
aW9Xb3JrbGV0CisgICAgPC90aXRsZT4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgICAg
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iL3dlYmF1ZGlvL3Jlc291cmNlcy9hdWRpdC5qcyI+PC9zY3JpcHQ+Cisg
IDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHNjcmlwdCBpZD0ibGF5b3V0LXRlc3QtY29kZSI+Cisg
ICAgICBsZXQgYXVkaXQgPSBBdWRpdC5jcmVhdGVUYXNrUnVubmVyKCk7CisKKyAgICAgIGxldCBj
b250ZXh0ID0gbmV3IEF1ZGlvQ29udGV4dCgpOworICAgICAgbGV0IG1vZHVsZSA9IG51bGw7CisK
KyAgICAgIGxldCBmaWxlUGF0aCA9ICdwcm9jZXNzb3JzL3dhc20tbW9kdWxlLXByb2Nlc3Nvci5q
cyc7CisKKyAgICAgIGZ1bmN0aW9uIGNyZWF0ZVdhc21Nb2R1bGUoKSB7CisgICAgICAgIHJldHVy
biBmZXRjaCgnL3dhc20vc2VyaWFsaXphdGlvbi9tb2R1bGUvcmVzb3VyY2VzL2luY3JlbWVudGVy
Lndhc20nKQorICAgICAgICAudGhlbihyZXNwb25zZSA9PiB7CisgICAgICAgICAgaWYgKCFyZXNw
b25zZS5vaykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXNwb25zZS5zdGF0dXNUZXh0
KTsKKyAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYXJyYXlCdWZmZXIoKTsKKyAgICAgICAgfSkK
KyAgICAgICAgLnRoZW4oV2ViQXNzZW1ibHkuY29tcGlsZSk7CisgICAgICB9CisKKyAgICAgIGF1
ZGl0LmRlZmluZSgKKyAgICAgICAgICAnVGVzdCBwb3N0TWVzc2FnZSBmcm9tIEF1ZGlvV29ya2xl
dFByb2Nlc3NvciB0byBBdWRpb1dvcmtsZXROb2RlJywKKyAgICAgICAgICAodGFzaywgc2hvdWxk
KSA9PiB7CisgICAgICAgICAgICBsZXQgd29ya2xldE5vZGUgPQorICAgICAgICAgICAgICAgIG5l
dyBBdWRpb1dvcmtsZXROb2RlKGNvbnRleHQsICd3YXNtLW1vZHVsZS1wcm9jZXNzb3InKTsKKwor
ICAgICAgICAgICAgd29ya2xldE5vZGUucG9ydC5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHsKKyAg
ICAgICAgICAgICAgbGV0IGRhdGEgPSBldmVudC5kYXRhOworICAgICAgICAgICAgICBzd2l0Y2gg
KGRhdGEuc3RhdGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlICdjcmVhdGVkJzoKKyAgICAgICAg
ICAgICAgICAgIC8vIFNlbmQgYSBXQVNNIG1vZHVsZSBiYWNrIHRvIHRoZSB3b3JrbGV0LgorICAg
ICAgICAgICAgICAgICAgY3JlYXRlV2FzbU1vZHVsZSgpLnRoZW4obW9kdWxlID0+IHsKKyAgICAg
ICAgICAgICAgICAgICAgd29ya2xldE5vZGUucG9ydC5wb3N0TWVzc2FnZSh7IG1lc3NhZ2U6ICJz
ZW5kIG1vZHVsZSIsIG1vZHVsZSB9KTsKKyAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlICdyZWNlaXZlZCBtZXNzYWdl
JzoKKyAgICAgICAgICAgICAgICAgIHNob3VsZChkYXRhLmlzVmFsaWRNb2R1bGUsICdldmVudC5t
b2R1bGUgZnJvbSBtYWluIHRocmVhZCBpcyBhbiB2YWxpZCBXQVNNIG1vZHVsZScpCisgICAgICAg
ICAgICAgICAgICAgICAgLmJlVHJ1ZSgpOworICAgICAgICAgICAgICAgICAgdGFzay5kb25lKCk7
CisgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgICBzaG91bGQoZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
YEdvdCB1bmV4cGVjdGVkIG1lc3NhZ2UgZnJvbSB3b3JrbGV0OiAke2RhdGEuc3RhdGV9YCkKKyAg
ICAgICAgICAgICAgICAgICAgICAuYmVUcnVlKCk7CisgICAgICAgICAgICAgICAgICB0YXNrLmRv
bmUoKTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9OworCisgICAgICAgICAgICB3b3JrbGV0Tm9kZS5wb3J0Lm9ubWVzc2FnZWVycm9yID0g
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgIHNob3VsZChmYWxzZSwgJ0dvdCBtZXNzYWdlZXJy
b3IgZnJvbSB3b3JrbGV0JykuYmVUcnVlKCk7CisgICAgICAgICAgICAgIHRhc2suZG9uZSgpOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KTsKKworICAgICAgICBjb250ZXh0LmF1ZGlvV29y
a2xldC5hZGRNb2R1bGUoZmlsZVBhdGgpLnRoZW4oKCkgPT4geworICAgICAgICAgIGF1ZGl0LnJ1
bigpOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5PgorPC9odG1sPgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJhdWRpby90aGUtYXVkaW8tYXBpL3Ro
ZS1hdWRpb3dvcmtsZXQtaW50ZXJmYWNlL3Byb2Nlc3NvcnMvd2FzbS1tb2R1bGUtcHJvY2Vzc29y
LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFwaS90aGUtYXVk
aW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3JzL3dhc20tbW9kdWxlLXByb2Nlc3Nvci5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42ZjY3ODg0YmU0MmRkNjM2YjdiZGU1N2Q0MzZkMDYxMTIxZmUxMzAxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViYXVkaW8vdGhlLWF1ZGlvLWFw
aS90aGUtYXVkaW93b3JrbGV0LWludGVyZmFjZS9wcm9jZXNzb3JzL3dhc20tbW9kdWxlLXByb2Nl
c3Nvci5qcwpAQCAtMCwwICsxLDQ3IEBACisvKioKKyAqIEBjbGFzcyBXQVNNTW9kdWxlUHJvY2Vz
c29yCisgKiBAZXh0ZW5kcyBBdWRpb1dvcmtsZXRQcm9jZXNzb3IKKyAqCisgKiBUaGlzIHByb2Nl
c3NvciBjbGFzcyBkZW1vbnN0cmF0ZXMgcGFzc2luZyBXQVNNIG1vZHVsZXMgdG8gYW5kIGZyb20K
KyAqIGF1ZGlvIHdvcmtsZXRzLgorICovCitjbGFzcyBXQVNNTW9kdWxlUHJvY2Vzc29yIGV4dGVu
ZHMgQXVkaW9Xb3JrbGV0UHJvY2Vzc29yIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgc3VwZXIo
KTsKKyAgICB0aGlzLnBvcnQub25tZXNzYWdlID0gdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhp
cyk7CisgICAgdGhpcy5wb3J0Lm9ubWVzc2FnZWVycm9yID0gdGhpcy5oYW5kbGVNZXNzYWdlRXJy
b3IuYmluZCh0aGlzKTsKKyAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2Uoe3N0YXRlOiAnY3JlYXRl
ZCd9KTsKKyAgfQorCisgIHRlc3RNb2R1bGUobW9kdWxlKSB7CisgICAgdHJ5IHsKKyAgICAgIGxl
dCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUpOworICAgICAgbGV0
IGluY3JlbWVudCA9IGluc3RhbmNlLmV4cG9ydHNbImluY3JlbWVudCJdOworICAgICAgaWYgKHR5
cGVvZiBpbmNyZW1lbnQgIT0gImZ1bmN0aW9uIikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgbGV0IHJlc3VsdCA9IGluY3JlbWVudCg0Mik7CisgICAgICByZXR1cm4gcmVzdWx0ID09IDQz
OworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKwor
ICBoYW5kbGVNZXNzYWdlKGV2ZW50KSB7CisgICAgdGhpcy5wb3J0LnBvc3RNZXNzYWdlKHsKKyAg
ICAgIHN0YXRlOiAncmVjZWl2ZWQgbWVzc2FnZScsCisgICAgICBpc1ZhbGlkTW9kdWxlOiB0aGlz
LnRlc3RNb2R1bGUoZXZlbnQuZGF0YS5tb2R1bGUpCisgICAgfSk7CisgIH0KKworICBoYW5kbGVN
ZXNzYWdlRXJyb3IoZXZlbnQpIHsKKyAgICB0aGlzLnBvcnQucG9zdE1lc3NhZ2UoeworICAgICAg
c3RhdGU6ICdyZWNlaXZlZCBtZXNzYWdlZXJyb3InCisgICAgfSk7CisgIH0KKworICBwcm9jZXNz
KCkgeworICAgIHJldHVybiB0cnVlOworICB9Cit9CisKK3JlZ2lzdGVyUHJvY2Vzc29yKCd3YXNt
LW1vZHVsZS1wcm9jZXNzb3InLCBXQVNNTW9kdWxlUHJvY2Vzc29yKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0
aW9uL21vZHVsZS93aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vc2VyaWFsaXph
dGlvbi9tb2R1bGUvd2luZG93LW1lc3NhZ2VjaGFubmVsLXN1Y2Nlc3MtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGQzMGI3ZTZlMjdlNjJkYTRjYzM1Mjk1ZTMyOGFhNTRiNzY0NjVhZjEuLjBhY2UxZTZmNjI5
MzU3NTEwZmQzNjY5NmYxY2FhNzYwZGJlMzRmNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9zZXJpYWxpemF0aW9uL21vZHVsZS93
aW5kb3ctbWVzc2FnZWNoYW5uZWwtc3VjY2Vzcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL3NlcmlhbGl6YXRpb24vbW9k
dWxlL3dpbmRvdy1tZXNzYWdlY2hhbm5lbC1zdWNjZXNzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsx
LDMgQEAKIAotRkFJTCBwb3N0TWVzc2FnaW5nIHRvIGEgZGVkaWNhdGVkIHdvcmtlciB2aWEgTWVz
c2FnZUNoYW5uZWwgYWxsb3dzIHRoZW0gdG8gaW5zdGFudGlhdGUgcHJvbWlzZV90ZXN0OiBVbmhh
bmRsZWQgcmVqZWN0aW9uIHdpdGggdmFsdWU6IG9iamVjdCAiRGF0YUNsb25lRXJyb3I6IFRoZSBv
YmplY3QgY2FuIG5vdCBiZSBjbG9uZWQuIgorUEFTUyBwb3N0TWVzc2FnaW5nIHRvIGEgZGVkaWNh
dGVkIHdvcmtlciB2aWEgTWVzc2FnZUNoYW5uZWwgYWxsb3dzIHRoZW0gdG8gaW5zdGFudGlhdGUK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>