<?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>89722</bug_id>
          
          <creation_ts>2012-06-21 17:48:43 -0700</creation_ts>
          <short_desc>Implement UndoManager&apos;s JSC bindings</short_desc>
          <delta_ts>2012-11-02 12:02:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100711</dependson>
          <blocked>87189</blocked>
    
    <blocked>91812</blocked>
    
    <blocked>93912</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sukolsak Sakshuwong">sukolsak</reporter>
          <assigned_to name="Sukolsak Sakshuwong">sukolsak</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>matthew</cc>
    
    <cc>mifenton</cc>
    
    <cc>mpakulavelrutka</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rakeshchaitan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>tony</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>655077</commentid>
    <comment_count>0</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-21 17:48:43 -0700</bug_when>
    <thetext>Implement undoManager&apos;s undo, redo, length, position, clearUndo,, and clearRedo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655085</commentid>
    <comment_count>1</comment_count>
      <attachid>148926</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-21 17:52:33 -0700</bug_when>
    <thetext>Created attachment 148926
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655088</commentid>
    <comment_count>2</comment_count>
      <attachid>148928</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-21 18:01:21 -0700</bug_when>
    <thetext>Created attachment 148928
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655469</commentid>
    <comment_count>3</comment_count>
      <attachid>148928</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-06-22 08:11:34 -0700</bug_when>
    <thetext>Comment on attachment 148928
Patch

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

Nice :)  I have a couple of comments. What about the changes related to WK2 that you were asking about in IRC? Aren&apos;t they needed?

&gt; Source/WebCore/editing/UndoManager.cpp:58
&gt; +    if (m_undoStack.size() &gt; 0) {

Check m_undoStack.isEmpty() and return early.

&gt; Source/WebCore/editing/UndoManager.cpp:67
&gt; +    if (m_redoStack.size() &gt; 0) {

Check m_redoStack.isEmpty() and return early.

&gt; Source/WebCore/editing/UndoManager.h:71
&gt; +    Vector&lt;RefPtr&lt;UndoStep&gt; &gt; m_undoStack;
&gt; +    Vector&lt;RefPtr&lt;UndoStep&gt; &gt; m_redoStack;

An ideia: I think this could be improved so it uses only one Vector and one extra index, that would be to mark the position that separate entries that can be redone and undone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655493</commentid>
    <comment_count>4</comment_count>
      <attachid>148928</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 09:07:10 -0700</bug_when>
    <thetext>Comment on attachment 148928
Patch

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

&gt;&gt; Source/WebCore/editing/UndoManager.h:71
&gt;&gt; +    Vector&lt;RefPtr&lt;UndoStep&gt; &gt; m_redoStack;
&gt; 
&gt; An ideia: I think this could be improved so it uses only one Vector and one extra index, that would be to mark the position that separate entries that can be redone and undone.

If we do that, then undo or redo need to be O(n) instead of O(1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655529</commentid>
    <comment_count>5</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-06-22 09:57:59 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 148928 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148928&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/editing/UndoManager.h:71
&gt; &gt;&gt; +    Vector&lt;RefPtr&lt;UndoStep&gt; &gt; m_redoStack;
&gt; &gt; 
&gt; &gt; An ideia: I think this could be improved so it uses only one Vector and one extra index, that would be to mark the position that separate entries that can be redone and undone.
&gt; 
&gt; If we do that, then undo or redo need to be O(n) instead of O(1).

I was thinking something along these lines:

// in this case, I&apos;ve applied 5 operations, last one was e.
//
// vector = [a, b, c, d, e]
// index = 4

apply():
    increment index
    set vector[index] to new entry
    apply the new entry
    resize the vector to index + 1

undo():
    if (index &lt; 0)
        return
    unapply the entry at vector[index]
    decrement index

redo():
    if (index + 1 &gt;= vector.size)
        return
    increment index
    reapply the entry at vector[index]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655534</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-22 10:01:13 -0700</bug_when>
    <thetext>Oops, I meant to say clearRedo and clearUndo. Making clearRedo fast is pretty important because we do that all the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655538</commentid>
    <comment_count>7</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-06-22 10:04:58 -0700</bug_when>
    <thetext>Another question: how the WebKit layer will get informed about the undo/redo steps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655545</commentid>
    <comment_count>8</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-06-22 10:12:29 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Oops, I meant to say clearRedo and clearUndo. Making clearRedo fast is pretty important because we do that all the time.

Well, clearRedo() could use Vector::shrinkCapacity(index + 1) like I sketched in the pseudo code for apply(). In this patch is implemented as m_redoStack.clear() which in practice is shrinkCapacity(0). So I don&apos;t see the difference.

But yes, for clearUndo(), when there are entries for redo, we have some memory move. How common is this case (clearUndo without clearRedo)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655848</commentid>
    <comment_count>9</comment_count>
      <attachid>149124</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-22 15:36:16 -0700</bug_when>
    <thetext>Created attachment 149124
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655870</commentid>
    <comment_count>10</comment_count>
      <attachid>149124</attachid>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-06-22 15:59:48 -0700</bug_when>
    <thetext>Comment on attachment 149124
Patch

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

&gt; Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp:338
&gt;  void EditorClientQt::undo()
&gt;  {
&gt; +#if !ENABLE(UNDO_MANAGER)
&gt;  #ifndef QT_NO_UNDOSTACK
&gt;      m_inUndoRedo = true;
&gt;      m_page-&gt;undoStack()-&gt;undo();
&gt;      m_inUndoRedo = false;
&gt;  #endif
&gt; +#else
&gt; +    Frame* frame = m_page-&gt;d-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame();
&gt; +    if (!frame)
&gt; +        return;
&gt; +    Document* document = frame-&gt;document();
&gt; +    if (!document)
&gt; +        return;
&gt; +    document-&gt;undoManager()-&gt;undo();
&gt; +#endif
&gt;  }

I think there&apos;s something wrong with these changes to EditorClients. If we have UNDO_MANAGER enabled, these client functions will not be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>655999</commentid>
    <comment_count>11</comment_count>
      <attachid>149157</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-22 19:18:27 -0700</bug_when>
    <thetext>Created attachment 149157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656008</commentid>
    <comment_count>12</comment_count>
      <attachid>149160</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-22 20:04:19 -0700</bug_when>
    <thetext>Created attachment 149160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656009</commentid>
    <comment_count>13</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-06-22 20:06:40 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Another question: how the WebKit layer will get informed about the undo/redo steps?

The WebKit layer will call WebCore::Editor for information, which will in turn call WebCore::UndoManager.

For example, in WebKit/gtk/webkit/webkitwebview.cpp, we have &quot;webkit_web_view_real_redo&quot; calling &quot;frame-&gt;editor()-&gt;command(&quot;Redo&quot;).execute()&quot; and &quot;webkit_web_view_can_redo&quot; calling &quot;frame-&gt;editor()-&gt;canRedo()&quot;.

(In reply to comment #3)
&gt; (From update of attachment 148928 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148928&amp;action=review
&gt; 
&gt; Nice :)  I have a couple of comments. What about the changes related to WK2 that you were asking about in IRC? Aren&apos;t they needed?

There are some issues with the Mac port that I found while implementing it. On GTK, EFL, Chromium, and BlackBerry, WebKit maintains its own undo stack. On Mac, however, we need to use the system&apos;s NSUndoManager to make GUI work. So, basically we need to &quot;sync&quot; our undo manager with NSUndoManager all the time. This requires us to be able to inspect/manipulate contents of NSUndoManager. But there is no public API for doing that. So, I think we may not be able to support Mac for now. And Mac seems to be the only platform that supports undo/redo in WK2 at this point.


(In reply to comment #10)
&gt; (From update of attachment 149124 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149124&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/qt/WebCoreSupport/EditorClientQt.cpp:338
&gt; &gt;  void EditorClientQt::undo()
&gt; &gt;  {
&gt; &gt; +#if !ENABLE(UNDO_MANAGER)
&gt; &gt;  #ifndef QT_NO_UNDOSTACK
&gt; &gt;      m_inUndoRedo = true;
&gt; &gt;      m_page-&gt;undoStack()-&gt;undo();
&gt; &gt;      m_inUndoRedo = false;
&gt; &gt;  #endif
&gt; &gt; +#else
&gt; &gt; +    Frame* frame = m_page-&gt;d-&gt;page-&gt;focusController()-&gt;focusedOrMainFrame();
&gt; &gt; +    if (!frame)
&gt; &gt; +        return;
&gt; &gt; +    Document* document = frame-&gt;document();
&gt; &gt; +    if (!document)
&gt; &gt; +        return;
&gt; &gt; +    document-&gt;undoManager()-&gt;undo();
&gt; &gt; +#endif
&gt; &gt;  }
&gt; 
&gt; I think there&apos;s something wrong with these changes to EditorClients. If we have UNDO_MANAGER enabled, these client functions will not be called.

You&apos;re right. I have made them empty functions for the time being. Removing them will probably involve a lot of changes.

On GTK, EFL, Chromium, and BlackBerry, when the user undoes something via GUI, the call goes through WebCore::Editor::undo() first and then UndoManager. In Qt, I&apos;m not sure how it works. Could you please take a look at it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>656739</commentid>
    <comment_count>14</comment_count>
    <who name="Caio Marcelo de Oliveira Filho">cmarcelo</who>
    <bug_when>2012-06-25 11:19:28 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #7)
&gt; &gt; Another question: how the WebKit layer will get informed about the undo/redo steps?
&gt; 
&gt; The WebKit layer will call WebCore::Editor for information, which will in turn call WebCore::UndoManager.

Yes, but the question is how WebKit layer get informed about undo/redo steps that page will generate. I think maybe we are missing something here. Let&apos;s take a step back and see how things work today.

For example, when an editing command is applied (Editor::appliedEditing), the Editor make a call to the WebKit layer (EditorClient::registerUndoStep) passing and UndoStep object, that has the information to undo/redo the command. If there&apos;s no client, nothing is registered.

The other situation is when we undo (Editor::undo), and it simply delegates again to WebKit layer (EditorClient::undo). It is the client responsibility to handle the stack changes and call the corresponding UndoStep object. In short, currently WebCore doesn&apos;t implement any stack at all.

This design allows ports to expose full control of the undo/redo stack to the applications if needed. At least Qt/WK1 and Mac do that, via QUndoStack and NSUndoManager respectively.


&gt; There are some issues with the Mac port that I found while implementing it. On GTK, EFL, Chromium, and BlackBerry, WebKit maintains its own undo stack.

These ports don&apos;t expose full control. In practice, for them, would be fine if the code they implement for undo stack was provided by WebCore. As you are implementing here with the UndoManager, but...


&gt; On Mac, however, we need to use the system&apos;s NSUndoManager to make GUI work. So, basically we need to &quot;sync&quot; our undo manager with NSUndoManager all the time. This requires us to be able to inspect/manipulate contents of NSUndoManager.

...maybe that&apos;s not best design when the ports actually want control. And it isn&apos;t clear to me whether they want this level of control (like Qt/WK1 and Mac) for all the UndoManagers we could have in a page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661953</commentid>
    <comment_count>15</comment_count>
      <attachid>150531</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-02 21:51:04 -0700</bug_when>
    <thetext>Created attachment 150531
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661959</commentid>
    <comment_count>16</comment_count>
      <attachid>150531</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-02 22:14:46 -0700</bug_when>
    <thetext>Comment on attachment 150531
Work in progress

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

&gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:77
&gt; +    JSValue thisValue = exec-&gt;hostThisValue();
&gt; +    if (!thisValue.inherits(&amp;JSUndoManager::s_info))
&gt; +        return throwTypeError(exec);
&gt; +    JSUndoManager* castedThis = jsCast&lt;JSUndoManager*&gt;(asObject(thisValue));
&gt; +    ASSERT_GC_OBJECT_INHERITS(castedThis, &amp;JSUndoManager::s_info);
&gt; +    UndoManager* impl = static_cast&lt;UndoManager*&gt;(castedThis-&gt;impl());
&gt; +    if (exec-&gt;argumentCount() &lt; 2)
&gt; +        return throwError(exec, createNotEnoughArgumentsError(exec));
&gt; +    JSValue dictionary = MAYBE_MISSING_PARAMETER(exec, 0, DefaultIsUndefined);
&gt; +    if (exec-&gt;hadException())
&gt; +        return jsUndefined();
&gt; +    if (!dictionary.isObject())
&gt; +        return throwTypeError(exec);
&gt; +    bool merge(MAYBE_MISSING_PARAMETER(exec, 1, DefaultIsUndefined).toBoolean());
&gt; +    if (exec-&gt;hadException())
&gt; +        return jsUndefined();
&gt; +    ScriptExecutionContext* scriptContext = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject())-&gt;scriptExecutionContext();
&gt; +    if (!scriptContext)
&gt; +        return jsUndefined();
&gt; +    RefPtr&lt;DOMTransaction&gt; transaction = DOMTransaction::create(dictionary.getObject(), thisValue.getObject(), currentWorld(exec), scriptContext);
&gt; +    impl-&gt;transact(transaction, merge);
&gt; +    return jsUndefined();

You can make some use of blank lines.

&gt; Source/WebCore/editing/DOMTransaction.cpp:43
&gt; +using namespace JSC;

We need to support both V8 and JSC so we shouldn&apos;t be doing this here. Maybe this code belongs in Source/WebCore/binding?

&gt; Source/WebCore/editing/DOMTransaction.cpp:97
&gt; +        scriptExecutionContext-&gt;isDocument()
&gt; +            ? JSMainThreadExecState::call(exec, function, callType, callData, thisValue, args)
&gt; +            : JSC::call(exec, function, callType, callData, thisValue, args);

This is not an appropriate use of the ternary operator. Just use the regular if.

&gt; Source/WebCore/editing/DOMTransaction.h:48
&gt; +class DOMTransaction : public UndoStep {

I would have made two classes V8DOMTransaction and JSDOMTransaction that inherited from DOMTransaction and kept this class agnostic of JS engine we use.

&gt; Source/WebCore/editing/UndoManager.cpp:61
&gt; +    if (m_isApplying || m_isUnapplying || m_isReapplying)

It seems excessive to have a flag for each of applying, unapplying, and reapplying a transaction.
I would have added a single flag like m_isOperationInProgress (we need a better name).

&gt; Source/WebCore/editing/UndoManager.cpp:90
&gt; +        UndoStep* step = entry[i-1].get();

What&apos;s the point of this local variable? You also need a space before/after -.

&gt; Source/WebCore/editing/UndoManager.cpp:91
&gt; +        step-&gt;unapply();

You can just do entry[i-1]-&gt;unapply().

&gt; Source/WebCore/editing/UndoManager.cpp:109
&gt; +        UndoStep* step = entry[i-1].get();
&gt; +        step-&gt;reapply();

Ditto.

&gt; Source/WebCore/editing/UndoManager.cpp:119
&gt; +unsigned long UndoManager::length() const
&gt; +{
&gt; +    return m_undoStack.size() + m_redoStack.size();
&gt; +}

I would have made this inline.

&gt; Source/WebCore/editing/UndoManager.cpp:124
&gt; +unsigned long UndoManager::position() const
&gt; +{
&gt; +    return m_redoStack.size();
&gt;  }

Ditto.

&gt; Source/WebCore/editing/UndoManager.cpp:144
&gt; +bool UndoManager::canUndo() const
&gt; +{
&gt; +    return !m_undoStack.isEmpty();
&gt; +}
&gt; +
&gt; +bool UndoManager::canRedo() const
&gt; +{
&gt; +    return !m_redoStack.isEmpty();
&gt; +}

Ditto.

&gt; Source/WebCore/editing/UndoManager.cpp:173
&gt; +            if (step-&gt;isDOMTransaction()) {

Since we won&apos;t be fixing DOMTransaction &amp; EditCommandComposition (we should add some assertions to ensure this invariant), I would have continue&apos;d as soon as find that the first entry wasn&apos;t DOM transaction.

&gt; Source/WebCore/editing/UndoManager.cpp:175
&gt; +                DOMTransaction* transaction = static_cast&lt;DOMTransaction*&gt;(step);
&gt; +                transaction-&gt;visitDictionary(visitor);

This would be done in one line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661963</commentid>
    <comment_count>17</comment_count>
      <attachid>150531</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-02 22:27:16 -0700</bug_when>
    <thetext>Comment on attachment 150531
Work in progress

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

&gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:54
&gt; +JSValue JSUndoManager::transact(ExecState* exec)

Wow, this function is really complicated.  We can&apos;t auto-generate it?  It sounds like you just need CallWith=ScriptExecutoinContext,DOMWrapperWorld or something like that.

&gt; Source/WebCore/editing/DOMTransaction.cpp:47
&gt; +DOMTransaction::DOMTransaction(JSObject* function, JSObject* wrapper, DOMWrapperWorld* isolatedWorld, ScriptExecutionContext* context)

It&apos;s not correct to have JavaScriptCore-specific code in WebCore.  This is an illustration of the layering violation / reference cycle issue we discussed earlier.  The proper way to implement this is with a bunch of custom code in the bindings layer.  You probably don&apos;t want a C++ class for DOMTransaction at all.  You just want to use a native JavaScript object and hold it in WebCore proper using ScriptValue.

&gt; Source/WebCore/editing/DOMTransaction.cpp:65
&gt; +void DOMTransaction::callProperty(ScriptExecutionContext* scriptExecutionContext, const char* propertyName)

This function should all be in the bindings layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661965</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-02 22:30:31 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 150531 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=150531&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:54
&gt; &gt; +JSValue JSUndoManager::transact(ExecState* exec)
&gt; 
&gt; Wow, this function is really complicated.  We can&apos;t auto-generate it?  It sounds like you just need CallWith=ScriptExecutoinContext,DOMWrapperWorld or something like that.
&gt; 
&gt; &gt; Source/WebCore/editing/DOMTransaction.cpp:47
&gt; &gt; +DOMTransaction::DOMTransaction(JSObject* function, JSObject* wrapper, DOMWrapperWorld* isolatedWorld, ScriptExecutionContext* context)
&gt; 
&gt; It&apos;s not correct to have JavaScriptCore-specific code in WebCore.  This is an illustration of the layering violation / reference cycle issue we discussed earlier.  The proper way to implement this is with a bunch of custom code in the bindings layer.  You probably don&apos;t want a C++ class for DOMTransaction at all.  You just want to use a native JavaScript object and hold it in WebCore proper using ScriptValue.

We do need some subclass of UndoStep that wraps/holds the DOMTransaction object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661968</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-02 22:34:05 -0700</bug_when>
    <thetext>&gt; We do need some subclass of UndoStep that wraps/holds the DOMTransaction object.

Why not just hold a ScriptValue and let the bindings worry about the detailed JS structure of the object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661980</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-02 22:52:00 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; We do need some subclass of UndoStep that wraps/holds the DOMTransaction object.
&gt; 
&gt; Why not just hold a ScriptValue and let the bindings worry about the detailed JS structure of the object.

Yes, we should do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661984</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-02 22:55:19 -0700</bug_when>
    <thetext>We also need to do a bunch of the fancy stuff we do for event listeners.  This stuff is really subtle.  Please make sure you have a bindings expert review your patch before landing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665210</commentid>
    <comment_count>22</comment_count>
      <attachid>151328</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-09 15:05:27 -0700</bug_when>
    <thetext>Created attachment 151328
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665229</commentid>
    <comment_count>23</comment_count>
      <attachid>151328</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-09 15:30:00 -0700</bug_when>
    <thetext>Comment on attachment 151328
Work in progress

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

&gt; Source/WebCore/editing/DOMTransaction.h:53
&gt; +#if USE(JSC)
&gt; +    virtual void visitDictionary(JSC::SlotVisitor&amp;) { };
&gt; +#endif

This should be in JSDOMTransactionCustom instead.

&gt; Source/WebCore/editing/UndoManager.cpp:83
&gt; +    m_redoStack.append(emptyEntry);

This needs to happen after unapplying entries. Otherwise UndoManager::length() will return a wrong value inside undo functions implemented by scripts.

&gt; Source/WebCore/editing/UndoManager.cpp:99
&gt; +    m_undoStack.append(emptyEntry);

Ditto.

&gt; Source/WebCore/editing/UndoManager.cpp:110
&gt; +void UndoManager::registerUndoStep(PassRefPtr&lt;UndoStep&gt; cmd)

Please don&apos;t use abbreviations like cmd. Spell out command. Also, it isn&apos;t a command. It should probably be called step.

&gt; Source/WebCore/editing/UndoManager.cpp:142
&gt; +                static_cast&lt;DOMTransaction*&gt;(step)-&gt;visitDictionary(visitor);

You should just cast it to JSDOMTransaction here.

&gt; Source/WebCore/editing/UndoManager.h:75
&gt; +#if USE(JSC)
&gt; +    void visitTransactions(JSC::SlotVisitor&amp;);
&gt; +#endif

This should be in JSUndoManagerCustom instead. We should just expose undoStack &amp; redoStack since we&apos;ll need a V8 equivalent anyway.

&gt; LayoutTests/editing/undomanager/undomanager-undo-redo-expected.txt:3
&gt; +test
&gt; +
&gt; +PASS Untitled 

We need some test descriptions. Please add title element for the description.

&gt; LayoutTests/editing/undomanager/undomanager-undo-redo.html:12
&gt; +test(function() {

We should be calling test for each test case with some descriptive labels.

&gt; LayoutTests/editing/undomanager/undomanager-undo-redo.html:19
&gt; +    // start

These comments are not useful. Please get rid of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665375</commentid>
    <comment_count>24</comment_count>
      <attachid>151376</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-09 18:17:05 -0700</bug_when>
    <thetext>Created attachment 151376
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>665403</commentid>
    <comment_count>25</comment_count>
      <attachid>151376</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-09 18:54:01 -0700</bug_when>
    <thetext>Comment on attachment 151376
Work in progress

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

This looks like a very reasonable initial patch. We should wait for someone familiar with JSC binding to give us a feedback but you can probably submit a patch for a formal review now.

There&apos;s a pending discussion about whether we want to use the pure JS object &amp; callbacks but a review from binding expert will also help us answering that question.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28368
&gt; +				OTHER_CFLAGS = &quot;-DENABLE_UNDO_MANAGER&quot;;
&gt;  				STRIP_INSTALLED_PRODUCT = NO;
&gt; +				SYMROOT = /Volumes/project/webkit/WebKitBuild;

As you might be well aware, this shouldn&apos;t be in the final patch.

&gt; Source/WebCore/editing/UndoManager.cpp:83
&gt; +    Vector&lt;RefPtr&lt;UndoStep&gt; &gt; entry = m_undoStack.last();

This should be a const reference.

&gt; Source/WebCore/editing/UndoManager.h:77
&gt; +    Vector&lt;Vector&lt;RefPtr&lt;UndoStep&gt; &gt; &gt; m_undoStack;
&gt; +    Vector&lt;Vector&lt;RefPtr&lt;UndoStep&gt; &gt; &gt; m_redoStack;

We might want to consider using OwnPtr&lt;Vector&lt;RefPtr&lt;UndoStep&gt; &gt; &gt; &gt; instead so that we don&apos;t have to copy everything when we&apos;re resizing the vector.
(Please typedef it).

&gt; Source/WebCore/editing/UndoManager.h:79
&gt; +    bool m_isInProgress;
&gt; +    Vector&lt;RefPtr&lt;UndoStep&gt; &gt; m_inProgressEntry;

You can combine these two member variables if we had used OwnPtr because then m_inProgressEntry being null would imply that we&apos;re not in the progress.

&gt; Source/WebCore/editing/UndoManager.h:85
&gt; +inline unsigned long UndoManager::length() const
&gt; +{
&gt; +    return m_undoStack.size() + m_redoStack.size();
&gt;  }

We typically define these one line functions within the class declaration.

&gt; LayoutTests/editing/undomanager/undomanager-undo-redo-expected.txt:1
&gt; +test

Please add some test description in the body.

&gt; LayoutTests/editing/undomanager/undomanager-undo-redo-expected.txt:11
&gt; +PASS document has property undoManager. 
&gt; +PASS undoManager has properties undo, redo, length, and position. 
&gt; +PASS undoManager has correct initial values for length (0) and position (0). 
&gt; +PASS After inserting text &apos;test&apos; in a DIV, undoManager&apos;s length is 1 and position is 0. 
&gt; +PASS After bolding the text, undoManager&apos;s length is 2 and position is 0, and the result is a bold &apos;test&apos;. 
&gt; +PASS After undoing, undoManager&apos;s length is 2 and position is 1, and the result is a plain &apos;test&apos;. 
&gt; +PASS After undoing, undoManager&apos;s length is 2 and position is 2, and the result is empty. 
&gt; +PASS After redoing, undoManager&apos;s length is 2 and position is 1, and the result is a plain &apos;test&apos;. 
&gt; +PASS After redoing, undoManager&apos;s length is 2 and position is 0, and the result is a bold &apos;test&apos;. 

Thanks! These outputs look much better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666157</commentid>
    <comment_count>26</comment_count>
      <attachid>151551</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-10 16:45:03 -0700</bug_when>
    <thetext>Created attachment 151551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666168</commentid>
    <comment_count>27</comment_count>
      <attachid>151551</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-10 16:55:56 -0700</bug_when>
    <thetext>Comment on attachment 151551
Patch

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

&gt; Source/WebCore/ChangeLog:15
&gt; +        * WebCore.xcodeproj/project.pbxproj:

You also need to add your files to WebCore.vcproj.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:8998
&gt; +		76808B4D159DADFA002B5233 /* JSHTMLDialogElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSHTMLDialogElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		76808B4E159DADFA002B5233 /* JSHTMLDialogElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSHTMLDialogElement.h; sourceTree = &quot;&lt;group&gt;&quot;; };

It seems like this is an unrelated change?

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:25218
&gt; +				7B517E8515ACF1F500F16B7A /* JSDOMTransaction.h in Headers */,
&gt; +				7B517E8715ACF21100F16B7A /* DOMTransaction.h in Headers */,

Please sort these entries lexicologically.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28278
&gt; +				7B0992F515ACF1AD00ED6D20 /* JSUndoManagerCustom.cpp in Sources */,
&gt; +				7B517E8415ACF1F500F16B7A /* JSDOMTransaction.cpp in Sources */,

Ditto.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28393
&gt; +				SYMROOT = /Volumes/project/webkit/WebKitBuild;

You need to revert this change.

&gt; Source/WebCore/editing/UndoManager.cpp:107
&gt; +    for (size_t i = entry.size(); i &gt; 0; --i)
&gt; +        entry[i - 1]-&gt;reapply();

This is wrong. You need to call reapply in the order they appear (e.g. if you had t1 and t2 in entry and called
t2.unapply() and t1.unapply() in the respective order, then we should be calling t1.reapply() and t2.reapply() in the respective order).
r- because of this bug. And please add a test case for this.

&gt; Source/WebCore/editing/UndoManager.cpp:129
&gt; +        UndoManagerEntry* entry = new UndoManagerEntry;

You should declare OwnPtr here instead and adoptPtr immediately.

&gt; Source/WebCore/editing/UndoManager.cpp:131
&gt; +        m_undoStack.append(adoptPtr(entry));

And call release() on that OwnPtr here.

&gt; Source/WebCore/editing/UndoManager.cpp:144
&gt; +        UndoManagerEntry* entry = new UndoManagerEntry;
&gt; +        entry-&gt;append(step);
&gt; +        m_redoStack.append(adoptPtr(entry));

Ditto.

&gt; Source/WebCore/editing/UndoManager.idl:42
&gt; +        void undo()
&gt; +            raises(DOMException);
&gt; +        void redo()
&gt; +            raises(DOMException);

You can put the raises on the same line.

&gt; Source/WebCore/editing/UndoManager.idl:50
&gt; +        void clearUndo()
&gt; +            raises(DOMException);
&gt; +        void clearRedo()
&gt; +            raises(DOMException);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666215</commentid>
    <comment_count>28</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-10 17:52:54 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; &gt; Source/WebCore/editing/UndoManager.cpp:107
&gt; &gt; +    for (size_t i = entry.size(); i &gt; 0; --i)
&gt; &gt; +        entry[i - 1]-&gt;reapply();
&gt; 
&gt; This is wrong. You need to call reapply in the order they appear (e.g. if you had t1 and t2 in entry and called
&gt; t2.unapply() and t1.unapply() in the respective order, then we should be calling t1.reapply() and t2.reapply() in the respective order).
&gt; r- because of this bug. And please add a test case for this.
&gt; 

This is actually correct. Let&apos;s say we transact(t1, false); transact(t2, true);. The undo stack will be &lt;[t1, t2]&gt;. When we undo, we unapply t2 first and then t1. Therefore, t2 is pushed to m_inProgressEntry first and then t1. Hence, the redo stack will be &lt;[t2, t1]&gt;. Therefore, we need to reapply in reverse order. If you want to apply in order they appear, I can change it so that undo steps are always inserted at the front when pushed to m_inProgressEntry. Or I can change it so that undo steps in m_inProgressEntry are reversed after we are done undoing. But either way will incur some performance penalty.

Because entries are exposed to the web only through the item() method, we can do reversion there. And since we create a new array in that method anyway, I think it&apos;s better to do it there.

&gt; &gt; Source/WebCore/editing/UndoManager.idl:42
&gt; &gt; +        void undo()
&gt; &gt; +            raises(DOMException);
&gt; &gt; +        void redo()
&gt; &gt; +            raises(DOMException);
&gt; 
&gt; You can put the raises on the same line.
&gt; 
&gt; &gt; Source/WebCore/editing/UndoManager.idl:50
&gt; &gt; +        void clearUndo()
&gt; &gt; +            raises(DOMException);
&gt; &gt; +        void clearRedo()
&gt; &gt; +            raises(DOMException);
&gt; 
&gt; Ditto.

Every IDL file that I have seen so far seems to put it in another line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666271</commentid>
    <comment_count>29</comment_count>
      <attachid>151580</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-10 19:37:24 -0700</bug_when>
    <thetext>Created attachment 151580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666273</commentid>
    <comment_count>30</comment_count>
      <attachid>151580</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-10 19:49:19 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

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

The patch looks good in general. We need someone familiar with JSC binding code to review the JS* code.

&gt; Source/WebCore/editing/UndoManager.cpp:130
&gt; +        OwnPtr&lt;UndoManagerEntry&gt; entry = adoptPtr(new UndoManagerEntry);
&gt; +        entry-&gt;append(step);

It might make sense to put add some helper function for these two lines since they appear quite often.

&gt; Source/WebCore/editing/UndoManager.cpp:134
&gt; +        ExceptionCode ec;
&gt; +        clearRedo(ec);

We should probably use ASSERT_NO_EXCEPTION as the default value in clearUndo &amp; clearRedo.

&gt; LayoutTests/editing/undomanager/undomanager-transact.html:30
&gt; +    		edit.innerHTML += &quot;1e &quot;;

Nit: There&apos;s a tab character. There are multiple tab characters in this file. Please replace them all by 4 spaces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666274</commentid>
    <comment_count>31</comment_count>
      <attachid>151580</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-10 19:51:07 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

Attachment 151580 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13201173</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666277</commentid>
    <comment_count>32</comment_count>
      <attachid>151580</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-10 19:58:08 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

Attachment 151580 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13202152</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666280</commentid>
    <comment_count>33</comment_count>
      <attachid>151580</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-10 20:06:51 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

Attachment 151580 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/13205184</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666296</commentid>
    <comment_count>34</comment_count>
      <attachid>151580</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-10 20:49:18 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

Attachment 151580 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13202165</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666302</commentid>
    <comment_count>35</comment_count>
      <attachid>151580</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-10 21:00:54 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

Attachment 151580 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13205194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666306</commentid>
    <comment_count>36</comment_count>
      <attachid>151580</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-07-10 21:08:25 -0700</bug_when>
    <thetext>Comment on attachment 151580
Patch

Attachment 151580 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13201190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667007</commentid>
    <comment_count>37</comment_count>
      <attachid>151759</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-11 13:21:23 -0700</bug_when>
    <thetext>Created attachment 151759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667023</commentid>
    <comment_count>38</comment_count>
      <attachid>151763</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-11 13:47:18 -0700</bug_when>
    <thetext>Created attachment 151763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667185</commentid>
    <comment_count>39</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-11 16:11:17 -0700</bug_when>
    <thetext>Sam, could you take a look at Sukolsak&apos;s patch for JSC binding?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670913</commentid>
    <comment_count>40</comment_count>
      <attachid>152682</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-16 19:30:23 -0700</bug_when>
    <thetext>Created attachment 152682
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671777</commentid>
    <comment_count>41</comment_count>
      <attachid>152880</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-17 17:16:30 -0700</bug_when>
    <thetext>Created attachment 152880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673128</commentid>
    <comment_count>42</comment_count>
      <attachid>153172</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-18 21:09:34 -0700</bug_when>
    <thetext>Created attachment 153172
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673173</commentid>
    <comment_count>43</comment_count>
      <attachid>153172</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-18 22:25:28 -0700</bug_when>
    <thetext>Comment on attachment 153172
Work in progress

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

&gt; Source/WebCore/dom/ContainerNode.cpp:208
&gt; +    if (DOMTransaction::isCapturingDOMChanges(this))

isRecordingAutomaticTransaction might be better.

&gt; Source/WebCore/editing/DOMChange.cpp:63
&gt; +    m_parent-&gt;removeChild(m_child.get(), ASSERT_NO_EXCEPTION);

I don&apos;t think we should assert exception here. It&apos;s totally possible for mutation events to mess things up.

&gt; Source/WebCore/editing/DOMChange.cpp:73
&gt; +    m_parent-&gt;insertBefore(m_child, m_refChild.get(), ASSERT_NO_EXCEPTION);

Ditto.

&gt; Source/WebCore/editing/DOMChange.cpp:92
&gt; +    m_parent-&gt;insertBefore(m_child, m_refChild.get(), ASSERT_NO_EXCEPTION);

Ditto.

&gt; Source/WebCore/editing/DOMChange.cpp:99
&gt; +    m_parent-&gt;removeChild(m_child.get(), ASSERT_NO_EXCEPTION);

Ditto.

&gt; Source/WebCore/editing/DOMChange.h:44
&gt; +class DOMChange : public RefCounted&lt;DOMChange&gt; {

I&apos;m not sure if DOMChange is such a good name since DOM mutation/change is such an overloaded name.
How about DOMTransactionStep?

&gt; Source/WebCore/editing/DOMChange.h:79
&gt; +

It seems like you&apos;re missing the class for attribute changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673253</commentid>
    <comment_count>44</comment_count>
      <attachid>152880</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-07-19 00:36:15 -0700</bug_when>
    <thetext>Comment on attachment 152880
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        Tests: editing/undomanager/undomanager-undo-redo.html
&gt; +               editing/undomanager/undomanager-transact.html

Would you add test cases where gc() happens while undomanager is working?

&gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:100
&gt; +    RefPtr&lt;JSDOMTransaction&gt; transaction = JSDOMTransaction::create(dictionary.getObject(), thisValue.getObject(), currentWorld(exec), scriptContext);

Per the bindings convention (https://trac.webkit.org/wiki/WebKitIDL#CallWith), let&apos;s put ScriptExecutionContext on the first argument of the method.

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.cpp:48
&gt; +    V8DOMTransaction* dictionary = static_cast&lt;V8DOMTransaction*&gt;(parameter);

Nit: Shall we rename &apos;dictionary&apos; to &apos;transaction&apos;?

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.cpp:96
&gt; +    if (context-&gt;isJSExecutionForbidden())

Don&apos;t we need to check if &apos;context&apos; is 0?

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.cpp:123
&gt; +            proxy-&gt;callFunction(handlerFunction, receiver, 1, parameters);

1 =&gt; 0

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.h:57
&gt; +    v8::Persistent&lt;v8::Object&gt; existingDictionaryObjectPersistentHandle() { return m_dictionary; }

Nit: Rename to dictionaryJSObject()?

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.h:58
&gt; +    bool hasExistingDictionaryObject() { return !m_dictionary.IsEmpty(); }

Let&apos;s remove this method, and check IsEmpty() in the caller side.

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:41
&gt; +#include &quot;V8IsolatedContext.h&quot;

Is this needed?

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:43
&gt; +#include &lt;wtf/UnusedParam.h&gt;

Is this needed?

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:60
&gt; +                if (!transaction-&gt;hasExistingDictionaryObject())
&gt; +                    continue;
&gt; +                dictionaries.append(transaction-&gt;existingDictionaryObjectPersistentHandle());

This could be:

  Persistent&lt;Value&gt; dictionary = transaction-&gt;dictionaryJSObject();
  if (!dictionry.IsEmtpy())
    dictionaries.append(dictionary);

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:85
&gt; +        if (!dictionary.IsEmpty() &amp;&amp; !dictionary-&gt;IsObject())

This check should be &apos;if (dictionary.IsEmpty() || !dictionary-&gt;IsObject())&apos;.

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:92
&gt; +            return v8::Undefined();

Nit: Given that you are returning v8::Handle&lt;v8::Value&gt;() at the end of this method, let&apos;s return v8::Handle&lt;v8::Value&gt;() here too for consistency. (v8::Handle&lt;v8::Value&gt;() is equivalent to v8::Undefined().)

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:94
&gt; +        RefPtr&lt;V8DOMTransaction&gt; transaction = V8DOMTransaction::create(v8::Local&lt;v8::Object&gt;::Cast(dictionary), WorldContextHandle(UseCurrentWorld), context);

Per the bindings convention, &apos;context&apos; should come first.

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:97
&gt; +        if (UNLIKELY(ec))

Nit: UNLIKELY is not needed. LIKELY/UNLIKELY would have no performance impact in such a complicated not-inlined method.

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:98
&gt; +            goto fail;

You can just return V8Proxy::setDOMException(ec, args.GetIsolate()) here.

&gt; Source/WebCore/bindings/v8/custom/V8UndoManagerCustom.cpp:102
&gt; +fail:
&gt; +    return V8Proxy::setDOMException(ec, args.GetIsolate());

Remove this.

&gt; Source/WebCore/editing/DOMTransaction.h:37
&gt; +#include &lt;wtf/RefCounted.h&gt;

Is this needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678750</commentid>
    <comment_count>45</comment_count>
      <attachid>153172</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 19:10:20 -0700</bug_when>
    <thetext>Comment on attachment 153172
Work in progress

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

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.h:74
&gt; +    RefPtr&lt;ScriptExecutionContext&gt; m_context;

This RefPtr is very worrisome.  If V8DOMTransaction is kept alive by the garbage collector, then it will keep the ScriptExecutionContext alive, which will keep a ton of JS objects alive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680983</commentid>
    <comment_count>46</comment_count>
      <attachid>155025</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-07-27 12:43:25 -0700</bug_when>
    <thetext>Created attachment 155025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680994</commentid>
    <comment_count>47</comment_count>
      <attachid>155025</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-27 12:51:01 -0700</bug_when>
    <thetext>Comment on attachment 155025
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMTransaction.h:66
&gt; +    RefPtr&lt;DOMWrapperWorld&gt; m_isolatedWorld;

We shouldn&apos;t have a strong ref to the isolated world. Instead, retrieve this information from the document as needed.

&gt; Source/WebCore/bindings/v8/V8DOMTransaction.h:62
&gt; +    WorldContextHandle m_worldContext;

We shouldn&apos;t be storing the world context. Instead, retrieve it from the document.

&gt; Source/WebCore/editing/UndoManager.h:53
&gt;  class UndoManager : public RefCounted&lt;UndoManager&gt; {

Per discussion with abarth, this needs to be an active DOM object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687380</commentid>
    <comment_count>48</comment_count>
      <attachid>156514</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-03 22:13:53 -0700</bug_when>
    <thetext>Created attachment 156514
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687391</commentid>
    <comment_count>49</comment_count>
      <attachid>156514</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 23:02:34 -0700</bug_when>
    <thetext>Comment on attachment 156514
Patch

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

&gt; Source/WebCore/bindings/js/DOMTransaction.cpp:43
&gt; +DOMTransaction::DOMTransaction(DOMWrapperWorld* isolatedWorld)

Sooooooo much custom code!!!

&gt; Source/WebCore/bindings/js/DOMTransaction.cpp:72
&gt; +static bool getProperty(JSC::JSObject* object, const char* propertyName, JSC::JSValue &amp;value, JSC::ExecState* exec)
&gt; +{
&gt; +    JSC::Identifier identifier(exec, propertyName);
&gt; +    JSC::PropertySlot slot(object);
&gt; +    if (!object-&gt;getPropertySlot(exec, identifier, slot))
&gt; +        return false;
&gt; +    if (exec-&gt;hadException())
&gt; +        return false;
&gt; +    value = slot.getValue(exec, identifier);
&gt; +    return !exec-&gt;hadException();
&gt; +}

This code doesn&apos;t seem to have anything to do with DOMTransaction.  Should this be in a more general location?

&gt; Source/WebCore/editing/UndoManager.cpp:89
&gt; +        entry[i - 1]-&gt;unapply();

As far as I can tell, unapply can run script, which means it can mutate m_undoStack, which means this line of code is almost certainly a use-after-free vulnerability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687392</commentid>
    <comment_count>50</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 23:03:36 -0700</bug_when>
    <thetext>I&apos;m not sure how to help you succeed with this patch.  This stuff is just very complicated and subtle.  :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687394</commentid>
    <comment_count>51</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 23:06:48 -0700</bug_when>
    <thetext>I think the API is just poorly designed.  It&apos;s too hard to implement correctly.

I&apos;m not really being helpful.  I need to walk away from the patient.  I&apos;m sorry that I won&apos;t be able to review further patches on this feature.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687404</commentid>
    <comment_count>52</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-03 23:54:29 -0700</bug_when>
    <thetext>(In reply to comment #51)
&gt; I think the API is just poorly designed.  It&apos;s too hard to implement correctly.

I think if APIs were designed based on event listeners (i.e. onundo, onredo, etc), the implementation would become much clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688565</commentid>
    <comment_count>53</comment_count>
      <attachid>156794</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-06 16:47:34 -0700</bug_when>
    <thetext>Created attachment 156794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689396</commentid>
    <comment_count>54</comment_count>
      <attachid>156794</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 14:34:58 -0700</bug_when>
    <thetext>Comment on attachment 156794
Patch

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

&gt; Source/WebCore/bindings/js/DOMTransaction.cpp:99
&gt; +    JSDOMGlobalObject* globalObject = jsCast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject());
&gt; +    JSObject* wrapper = asObject(toJS(exec, globalObject, this));
&gt; +
&gt; +    JSValue data = wrapper-&gt;get(exec, Identifier(exec, &quot;data&quot;));

Why are we grabbing &quot;data&quot; out of the global scope?  That&apos;s strange.

&gt; Source/WebCore/editing/UndoManager.cpp:77
&gt; +    m_isInProgress = true;
&gt; +    transaction-&gt;apply();
&gt; +    m_isInProgress = false;

Can we be re-entered here?  If so, we might need to use a counter.  I guess we test for m_isInProgress at the top of the function, so maybe that solves this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689402</commentid>
    <comment_count>55</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 14:36:27 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/editing/UndoManager.cpp:89
&gt; &gt; +        entry[i - 1]-&gt;unapply();
&gt; 
&gt; As far as I can tell, unapply can run script, which means it can mutate m_undoStack, which means this line of code is almost certainly a use-after-free vulnerability.

This still seems to be an issue.  It looks like you&apos;ve tried to mitigate this using the m_isInProgress flag, but it seems like the whole UndoManager can be destroyed synchronously at this program point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689411</commentid>
    <comment_count>56</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-07 14:42:28 -0700</bug_when>
    <thetext>(In reply to comment #55)
&gt; &gt; &gt; Source/WebCore/editing/UndoManager.cpp:89
&gt; &gt; &gt; +        entry[i - 1]-&gt;unapply();
&gt; &gt; 
&gt; &gt; As far as I can tell, unapply can run script, which means it can mutate m_undoStack, which means this line of code is almost certainly a use-after-free vulnerability.
&gt; 
&gt; This still seems to be an issue.  It looks like you&apos;ve tried to mitigate this using the m_isInProgress flag, but it seems like the whole UndoManager can be destroyed synchronously at this program point.

I make a local copy of the last entry of m_undoStack before the loop. So, it shouldn&apos;t matter if m_undoStack gets mutated during unapplying/reapplying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689425</commentid>
    <comment_count>57</comment_count>
      <attachid>156794</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 14:51:52 -0700</bug_when>
    <thetext>Comment on attachment 156794
Patch

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

&gt; Source/WebCore/editing/UndoManager.cpp:121
&gt; +    m_isInProgress = false;
&gt; +
&gt; +    m_undoStack.append(m_inProgressEntry.release());
&gt; +    m_redoStack.removeLast();

Right, but nothing is keeping the whole UndoManager alive.  All these writes are to potentially unallocated memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689455</commentid>
    <comment_count>58</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-07 15:03:04 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (From update of attachment 156794 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156794&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/UndoManager.cpp:121
&gt; &gt; +    m_isInProgress = false;
&gt; &gt; +
&gt; &gt; +    m_undoStack.append(m_inProgressEntry.release());
&gt; &gt; +    m_redoStack.removeLast();
&gt; 
&gt; Right, but nothing is keeping the whole UndoManager alive.  All these writes are to potentially unallocated memory.

I see. I&apos;ll fix it with &quot;RefPtr&lt;UndoManager&gt; protect(this)&quot; in the new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689509</commentid>
    <comment_count>59</comment_count>
      <attachid>156794</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-07 15:45:55 -0700</bug_when>
    <thetext>Comment on attachment 156794
Patch

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

&gt;&gt; Source/WebCore/bindings/js/DOMTransaction.cpp:99
&gt;&gt; +    JSValue data = wrapper-&gt;get(exec, Identifier(exec, &quot;data&quot;));
&gt; 
&gt; Why are we grabbing &quot;data&quot; out of the global scope?  That&apos;s strange.

I misunderstood.  You&apos;re getting the data property out of the DOMTransaction wrapper.

&gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:69
&gt; +    Identifier dataName(exec, &quot;data&quot;);

Should we make &quot;data&quot; a named constance so that we can share it here and in JSDOMTransaction?

Also, what happens if there&apos;s a setter for &quot;data&quot; defined on Object.prototype?  Will we trigger that here?  Should we test that case?  In the V8 bindings, we can use a hidden property, which solves these problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689822</commentid>
    <comment_count>60</comment_count>
      <attachid>157100</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-07 20:44:28 -0700</bug_when>
    <thetext>Created attachment 157100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690134</commentid>
    <comment_count>61</comment_count>
      <attachid>157175</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-08 04:13:37 -0700</bug_when>
    <thetext>Created attachment 157175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690867</commentid>
    <comment_count>62</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-08 16:06:17 -0700</bug_when>
    <thetext>(In reply to comment #59)
Thanks for the comment

&gt; &gt; Source/WebCore/bindings/js/JSUndoManagerCustom.cpp:69
&gt; &gt; +    Identifier dataName(exec, &quot;data&quot;);
&gt; 
&gt; Should we make &quot;data&quot; a named constance so that we can share it here and in JSDOMTransaction?

Done.

&gt; Also, what happens if there&apos;s a setter for &quot;data&quot; defined on Object.prototype?  Will we trigger that here?  Should we test that case?  In the V8 bindings, we can use a hidden property, which solves these problems.

We will not trigger it because we use JSObject::putDirect. I&apos;ve added a test in the latest patch to test that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692501</commentid>
    <comment_count>63</comment_count>
      <attachid>157175</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-10 05:53:23 -0700</bug_when>
    <thetext>Comment on attachment 157175
Patch

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

I looked at bindings/js/* and the IDL file. I added some minor comments. As the patch is doing something beyond my JSC knowledge, I&apos;d be happy if JSC folks could take a look.

&gt; Source/WebCore/bindings/js/DOMTransaction.h:45
&gt; +class Node;
&gt; +class ScriptExecutionContext;

Is this needed?

&gt; Source/WebCore/bindings/js/DOMTransaction.h:50
&gt; +    static PassRefPtr&lt;DOMTransaction&gt; create(DOMWrapperWorld* isolatedWorld);

Nit: &quot;isolatedWorld&quot; is not needed.

&gt; Source/WebCore/bindings/js/DOMTransaction.h:63
&gt; +    DOMTransaction(DOMWrapperWorld* isolatedWorld);

Ditto.

&gt; Source/WebCore/bindings/js/JSDOMTransactionCustom.cpp:50
&gt; +    if (!undoManager)
&gt; +        return false;
&gt; +    if (!undoManager-&gt;undoScopeHost())

!undoManager || !undoManager-&gt;undoScopeHost()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>698473</commentid>
    <comment_count>64</comment_count>
      <attachid>159157</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2012-08-17 10:37:01 -0700</bug_when>
    <thetext>Created attachment 159157
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757432</commentid>
    <comment_count>65</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-02 12:02:29 -0700</bug_when>
    <thetext>UndoManager has been removed from trunk in bug 100711.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148926</attachid>
            <date>2012-06-21 17:52:33 -0700</date>
            <delta_ts>2012-06-21 18:01:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120621175352.patch</filename>
            <type>text/plain</type>
            <size>11997</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDk4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5k
byk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAg
ICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFu
YWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8p
OgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6aXRlbSk6CisgICAgICAgIChXZWJD
b3JlOjpVbmRvTWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
Ojpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFn
ZXI6OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5k
b1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAp
OgorICAgICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKwogMjAxMi0wNi0yMSAgSnVs
aWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3Vw
cG9ydCBmb3IgdGhlIGdyaWQgYW5kIGlubGluZS1ncmlkIGRpc3BsYXkgdHlwZXMuCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTIwOTgzKQorKysgU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI1NDUsMyArMjU0NSwxMiBAQCBfX1pON1dl
YkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dlYkNvcmUyNFRleHRBbHRl
cm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdX
ZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRT
dHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQog
I2VuZGlmCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorX19aTjdXZWJDb3JlOERvY3VtZW50
MTF1bmRvTWFuYWdlckV2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHJlZG9FdgorX19aTjdX
ZWJDb3JlMTFVbmRvTWFuYWdlcjR1bmRvRXYKK19fWk5LN1dlYkNvcmUxMVVuZG9NYW5hZ2VyNGl0
ZW1FbQorX19aTks3V2ViQ29yZTExVW5kb01hbmFnZXI2bGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUx
MVVuZG9NYW5hZ2VyOHBvc2l0aW9uRXYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAkocmV2aXNpb24gMTIwOTgzKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiVGV4dEV2
ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFu
ZC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1
cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1
cC5oIgpAQCAtODAyLDggKzgwMywxMiBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFz
c1JlZlB0cjxDCiAgICAgICAgIC8vIE9ubHkgcmVnaXN0ZXIgYSBuZXcgdW5kbyBjb21tYW5kIGlm
IHRoZSBjb21tYW5kIHBhc3NlZCBpbiBpcwogICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSB0aGUg
bGFzdCBjb21tYW5kCiAgICAgICAgIG1fbGFzdEVkaXRDb21tYW5kID0gY21kOworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGll
bnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRp
b24oKSk7CisjZWxzZQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigp
LT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigp
KTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxl
Y3Rpb24pOwpAQCAtODIwLDggKzgyNSwxMiBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGlu
ZyhQYXNzUmVmUHRyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZXNwb25kVG9V
bmFwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQg
PSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAg
ICAgY2xpZW50KCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2VuZGlm
ICAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAt
ODM1LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRy
CiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxl
Y3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwog
ICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVw
KGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJl
Z2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50
cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsxMjU1LDQwIEBAIHZvaWQgRWRpdG9y
OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50
KCktPmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6dW5kbygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAg
ICBjbGllbnQoKS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRv
TWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3I6OmNhblJlZG8oKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGll
bnQoKS0+Y2FuUmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dW5kb01hbmFnZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpyZWRv
KCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAg
ICAgIGNsaWVudCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6ZGlkQmVnaW5F
ZGl0aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZp
c2lvbiAxMjA5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBV
bmRvTWFuYWdlcjo6Y3JlCiAKIFVuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcihOb2RlKiBob3N0KQog
ICAgIDogbV91bmRvU2NvcGVIb3N0KGhvc3QpCisgICAgLCBtX2lzUmVkb2luZyhmYWxzZSkKIHsK
IH0KIApAQCAtNTQsMTggKzU1LDc0IEBAIHZvaWQgVW5kb01hbmFnZXI6OnVuZG9TY29wZUhvc3RE
ZXN0cm95ZWQKIAogdm9pZCBVbmRvTWFuYWdlcjo6dW5kbygpCiB7CisgICAgaWYgKG1fdW5kb1N0
YWNrLnNpemUoKSA+IDApIHsKKyAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBtX3VuZG9TdGFjay5s
YXN0KCkuZ2V0KCk7CisgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKKyAgICAgICAgbV91bmRvU3Rh
Y2sucmVtb3ZlTGFzdCgpOworICAgIH0KIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6cmVkbygpCiB7
CisgICAgaWYgKG1fcmVkb1N0YWNrLnNpemUoKSA+IDApIHsKKyAgICAgICAgVW5kb1N0ZXAqIHN0
ZXAgPSBtX3JlZG9TdGFjay5sYXN0KCkuZ2V0KCk7CisgICAgICAgIG1faXNSZWRvaW5nID0gdHJ1
ZTsKKyAgICAgICAgc3RlcC0+cmVhcHBseSgpOworICAgICAgICBtX2lzUmVkb2luZyA9IGZhbHNl
OworICAgICAgICBtX3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7CisgICAgfQorfQorCitQYXNzUmVm
UHRyPFVuZG9TdGVwPiBVbmRvTWFuYWdlcjo6aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KSBjb25z
dAoreworICAgIGlmIChpbmRleCA8IG1fdW5kb1N0YWNrLnNpemUoKSArIG1fcmVkb1N0YWNrLnNp
emUoKSkgeworICAgICAgICBpZiAoaW5kZXggPCBtX3JlZG9TdGFjay5zaXplKCkpCisgICAgICAg
ICAgICByZXR1cm4gbV9yZWRvU3RhY2tbaW5kZXhdOworICAgICAgICByZXR1cm4gbV91bmRvU3Rh
Y2tbbV91bmRvU3RhY2suc2l6ZSgpICsgbV9yZWRvU3RhY2suc2l6ZSgpIC0gaW5kZXggLSAxXTsK
KyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisgICAgCit1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2Vy
OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3Jl
ZG9TdGFjay5zaXplKCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgVW5kb01hbmFnZXI6OnBvc2l0aW9u
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOwogfQogCiB2b2lkIFVu
ZG9NYW5hZ2VyOjpjbGVhclVuZG8oKQogeworICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAK
IHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbygpCiB7CisgICAgbV9yZWRvU3RhY2suY2xlYXIo
KTsKK30KKyAgICAKK2Jvb2wgVW5kb01hbmFnZXI6OmNhblVuZG8oKSBjb25zdAoreworICAgIHJl
dHVybiBtX3VuZG9TdGFjay5zaXplKCkgPiAwOworfQorCitib29sIFVuZG9NYW5hZ2VyOjpjYW5S
ZWRvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpID4gMDsKK30KKwor
dm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBj
bWQpCit7CisgICAgbV91bmRvU3RhY2suYXBwZW5kKGNtZCk7CisgICAgaWYgKCFtX2lzUmVkb2lu
ZykKKyAgICAgICAgY2xlYXJSZWRvKCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVy
UmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gY21kKQoreworICAgIG1fcmVkb1N0YWNrLmFw
cGVuZChjbWQpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5h
Z2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5o
CShyZXZpc2lvbiAxMjA5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMzLDExIEBACiAKICNpZiBFTkFCTEUoVU5ET19N
QU5BR0VSKQogCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
OCwxMyArNTAsMjcgQEAgcHVibGljOgogCiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRv
KCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxVbmRvU3RlcD4gaXRlbSh1bnNpZ25lZCBsb25nIGlu
ZGV4KSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0OworICAgIHVuc2ln
bmVkIGxvbmcgcG9zaXRpb24oKSBjb25zdDsKIAogICAgIHZvaWQgY2xlYXJVbmRvKCk7CiAgICAg
dm9pZCBjbGVhclJlZG8oKTsKKyAgICAKKyAgICBib29sIGNhblVuZG8oKSBjb25zdDsKKyAgICBi
b29sIGNhblJlZG8oKSBjb25zdDsKKyAgICAKKyAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFz
c1JlZlB0cjxVbmRvU3RlcD4gY21kKTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1Jl
ZlB0cjxVbmRvU3RlcD4gY21kKTsKIAogcHJpdmF0ZToKICAgICBVbmRvTWFuYWdlcihOb2RlKiBo
b3N0KTsKICAgICBOb2RlKiBtX3VuZG9TY29wZUhvc3Q7CisgICAgCisgICAgVmVjdG9yPFJlZlB0
cjxVbmRvU3RlcD4gPiBtX3VuZG9TdGFjazsKKyAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+
IG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc1JlZG9pbmc7CiB9OwogICAgIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHJldmlzaW9uIDEyMDk4MykKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSw2ICszNSw5IEBAIG1vZHVsZSBjb3JlIHsKICAgICBdIFVuZG9NYW5hZ2VyIHsKICAgICAg
ICAgdm9pZCB1bmRvKCk7CiAgICAgICAgIHZvaWQgcmVkbygpOworICAgICAgICAKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBwb3NpdGlvbjsKIAogICAgICAgICB2b2lkIGNsZWFy
VW5kbygpOwogICAgICAgICB2b2lkIGNsZWFyUmVkbygpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTIw
OTg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTItMDYtMjEgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRvTWFuYWdlcidzIHVuZG8sIHJlZG8sIGxlbmd0
aCwgcG9zaXRpb24sIGNsZWFyVW5kbywsIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9t
YW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
dW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2
LTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAg
IEFkZCBzdXBwb3J0IGZvciB0aGUgZ3JpZCBhbmQgaW5saW5lLWdyaWQgZGlzcGxheSB0eXBlcy4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1y
ZWRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAordGVzdAorCitQQVNTIFVu
dGl0bGVkIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5h
Z2VyLXVuZG8tcmVkby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5k
b21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9
InRydWUiPjwvZGl2PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2Vy
Iik7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRv
Iik7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRv
Iik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0
aCIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3Np
dGlvbiIpOworICAgIAorICAgIC8vIHN0YXJ0CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIubGVuZ3RoID09IDApOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5h
Z2VyLnBvc2l0aW9uID09IDApOworICAgIAorICAgIC8vIGluc2VydCB0ZXh0CisgICAgdmFyIGVk
aXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdCIpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgi
SW5zZXJ0SFRNTCIsIGZhbHNlLCAidGVzdCIpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICAKKyAgICAvLyB0aGVuIGJvbGQgaXQKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5v
ZGVDb250ZW50cyhlZGl0KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJCb2xkIiwgZmFsc2UsIG51bGwpOworICAg
IAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBh
c3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKKyAgICAKKyAgICAv
LyB0aGVuIHVuZG8KKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAg
YXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2Vy
dF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90
cnVlKGVkaXQuaW5uZXJIVE1MID09ICJ0ZXN0Iik7CisgICAgCisgICAgLy8gdGhlbiB1bmRvCisg
ICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVy
SFRNTCA9PSAiIik7CisgICAgCisgICAgLy8gdGhlbiByZWRvCisgICAgZG9jdW1lbnQudW5kb01h
bmFnZXIucmVkbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
Lmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3Np
dGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOwor
ICAgIAorICAgIC8vIHRoZW4gcmVkbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsK
KyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7
CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cisg
ICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7Cit9KQorCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148928</attachid>
            <date>2012-06-21 18:01:21 -0700</date>
            <delta_ts>2012-06-22 15:35:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120621180240.patch</filename>
            <type>text/plain</type>
            <size>10828</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDk4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5k
b01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAg
ICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKwogMjAxMi0wNi0yMSAgSnVsaWVuIENoYWZm
cmFpeCAgPGpjaGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3Ig
dGhlIGdyaWQgYW5kIGlubGluZS1ncmlkIGRpc3BsYXkgdHlwZXMuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMjA5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRl
ICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBp
bmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyVHlw
aW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVk
ZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRp
dGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSByZWdpc3RlciBhIG5ldyB1bmRvIGNv
bW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAgICAgICAgIC8vIGRpZmZlcmVudCBm
cm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSBjbWQ7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
ICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVD
b21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9N
YW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBv
c2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxp
ZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJl
c3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAKICAgICBtX2xhc3RFZGl0
Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgp
KQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2Vsc2UKKyAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7
CisjZW5kaWYgIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwog
fQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBh
c3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBG
cmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdT
dHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVy
VW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFn
ZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlmCiAgICAgcmVzcG9uZFRvQ2hhbmdl
ZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEyNDIsMjQgKzEyNTUsNDAgQEAgdm9p
ZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIAogYm9vbCBFZGl0b3I6OmNhblVu
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAm
JiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkp
CiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvcjo6Y2Fu
UmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgp
ICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0
b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQo
KSkKICAgICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpk
aWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5j
cHAJKHJldmlzaW9uIDEyMDk4MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NSZWZQdHI8VW5kb01h
bmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmUKIAogVW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKE5vZGUq
IGhvc3QpCiAgICAgOiBtX3VuZG9TY29wZUhvc3QoaG9zdCkKKyAgICAsIG1faXNSZWRvaW5nKGZh
bHNlKQogewogfQogCkBAIC01NCwxOCArNTUsNjQgQEAgdm9pZCBVbmRvTWFuYWdlcjo6dW5kb1Nj
b3BlSG9zdERlc3Ryb3llZAogCiB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKCkKIHsKKyAgICBpZiAo
bV91bmRvU3RhY2suc2l6ZSgpID4gMCkgeworICAgICAgICBVbmRvU3RlcCogc3RlcCA9IG1fdW5k
b1N0YWNrLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgc3RlcC0+dW5hcHBseSgpOworICAgICAgICBt
X3VuZG9TdGFjay5yZW1vdmVMYXN0KCk7CisgICAgfQogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpy
ZWRvKCkKIHsKKyAgICBpZiAobV9yZWRvU3RhY2suc2l6ZSgpID4gMCkgeworICAgICAgICBVbmRv
U3RlcCogc3RlcCA9IG1fcmVkb1N0YWNrLmxhc3QoKS5nZXQoKTsKKyAgICAgICAgbV9pc1JlZG9p
bmcgPSB0cnVlOworICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CisgICAgICAgIG1faXNSZWRvaW5n
ID0gZmFsc2U7CisgICAgICAgIG1fcmVkb1N0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICB9Cit9Cisg
ICAgCit1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7Cit9CisKK3Vuc2ln
bmVkIGxvbmcgVW5kb01hbmFnZXI6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZWRvU3RhY2suc2l6ZSgpOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVuZG8oKQogewor
ICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVk
bygpCiB7CisgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKK30KKyAgICAKK2Jvb2wgVW5kb01hbmFn
ZXI6OmNhblVuZG8oKSBjb25zdAoreworICAgIHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgPiAw
OworfQorCitib29sIFVuZG9NYW5hZ2VyOjpjYW5SZWRvKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yZWRvU3RhY2suc2l6ZSgpID4gMDsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJV
bmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBjbWQpCit7CisgICAgbV91bmRvU3RhY2suYXBw
ZW5kKGNtZCk7CisgICAgaWYgKCFtX2lzUmVkb2luZykKKyAgICAgICAgY2xlYXJSZWRvKCk7Cit9
CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3Rl
cD4gY21kKQoreworICAgIG1fcmVkb1N0YWNrLmFwcGVuZChjbWQpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjA5ODMpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkg
KzMzLDExIEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiVW5kb1N0
ZXAuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCwxMyArNTAsMjYgQEAgcHVibGljOgogCiAg
ICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgdW5zaWduZWQgbG9u
ZyBsZW5ndGgoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3Q7CiAK
ICAgICB2b2lkIGNsZWFyVW5kbygpOwogICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgCisgICAg
Ym9vbCBjYW5VbmRvKCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAgCisg
ICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CisgICAg
dm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CiAKIHByaXZh
dGU6CiAgICAgVW5kb01hbmFnZXIoTm9kZSogaG9zdCk7CiAgICAgTm9kZSogbV91bmRvU2NvcGVI
b3N0OworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gbV91bmRvU3RhY2s7Cisg
ICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBtX3JlZG9TdGFjazsKKyAgICBib29sIG1faXNS
ZWRvaW5nOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaWRsCShyZXZpc2lvbiAxMjA5ODMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9N
YW5hZ2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgXSBVbmRvTWFuYWdlciB7CiAgICAgICAgIHZvaWQgdW5kbygpOwogICAgICAgICB2b2lk
IHJlZG8oKTsKKyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBs
b25nIGxlbmd0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcG9z
aXRpb247CiAKICAgICAgICAgdm9pZCBjbGVhclVuZG8oKTsKICAgICAgICAgdm9pZCBjbGVhclJl
ZG8oKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMDk4NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTIxICBTdWtvbHNhayBT
YWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5k
b01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sLCBhbmQg
Y2xlYXJSZWRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD04OTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8t
cmVkby5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yMSAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFm
ZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGdyaWQgYW5k
IGlubGluZS1ncmlkIGRpc3BsYXkgdHlwZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8t
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQgQEAKK3Rlc3QKKworUEFTUyBVbnRpdGxlZCAKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVk
by5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91
bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0iZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+
PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9vd25fcHJv
cGVydHkoZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIpOworICAgIGFzc2VydF9pZGxfYXR0cmlidXRl
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAidW5kbyIpOworICAgIGFzc2VydF9pZGxfYXR0cmlidXRl
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicmVkbyIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHko
ZG9jdW1lbnQudW5kb01hbmFnZXIsICJsZW5ndGgiKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicG9zaXRpb24iKTsKKyAgICAKKyAgICAvLyBzdGFydAor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICAKKyAg
ICAvLyBpbnNlcnQgdGV4dAorICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImVkaXQiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsK
KyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7
CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cisg
ICAgCisgICAgLy8gdGhlbiBib2xkIGl0CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdCk7CisgICAgd2luZG93
LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFu
ZCgiQm9sZCIsIGZhbHNlLCBudWxsKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01h
bmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
IjxiPnRlc3Q8L2I+Iik7CisgICAgCisgICAgLy8gdGhlbiB1bmRvCisgICAgZG9jdW1lbnQudW5k
b01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5h
Z2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5w
b3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIp
OworICAgIAorICAgIC8vIHRoZW4gdW5kbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8o
KTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0g
Mik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMik7
CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworICAgIAorICAgIC8vIHRo
ZW4gcmVkbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3Nl
cnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUo
ZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsKKyAgICAKKyAgICAvLyB0aGVuIHJlZG8KKyAgICBk
b2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1l
bnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1M
ID09ICI8Yj50ZXN0PC9iPiIpOworfSkKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149124</attachid>
            <date>2012-06-22 15:36:16 -0700</date>
            <delta_ts>2012-06-22 19:18:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120622153736.patch</filename>
            <type>text/plain</type>
            <size>29983</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5k
b01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAg
ICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKwogMjAxMi0wNi0yMiAgSm9zaHVhIEJlbGwg
IDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogU25hcHNob3QgbWV0
YWRhdGEgaW4gZnJvbnQgZW5kIHRvIGF2b2lkIElQQyByb3VuZC10cmlwcwpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHJldmlzaW9uIDEyMTA1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQ1LDMgKzI1NDUsMTMgQEAgX19aTjdXZWJDb3Jl
MjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9fWk43V2ViQ29y
ZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5n
Uk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNlbmRp
ZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1bWVudDExdW5k
b01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19fWk43V2ViQ29y
ZTExVW5kb01hbmFnZXI0dW5kb0V2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyOWNsZWFyUmVk
b0V2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyOWNsZWFyVW5kb0V2CitfX1pOSzdXZWJDb3Jl
MTFVbmRvTWFuYWdlcjZsZW5ndGhFdgorX19aTks3V2ViQ29yZTExVW5kb01hbmFnZXI4cG9zaXRp
b25FdgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjEwNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIs
NyBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5LmgnLAogICAgICAgICAg
ICAgJ2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVHlwaW5n
Q29tbWFuZC5oJywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9NYW5hZ2VyLmgnLAogICAgICAg
ICAgICAgJ2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1dyaXRpbmdEaXJlY3Rp
b24uaCcsCkBAIC0yNjY5LDYgKzI2NzAsOCBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dElu
c2VydGlvbkJhc2VDb21tYW5kLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCcsCisgICAgICAg
ICAgICAnZWRpdGluZy9VbmRvTWFuYWdlci5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcvVW5k
b01hbmFnZXIuaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9VbmRvU3RlcC5oJywKICAgICAgICAg
ICAgICdlZGl0aW5nL1VubGlua0NvbW1hbmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL1Vu
bGlua0NvbW1hbmQuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjEwNTkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0
MjgsMTAgKzE0MjgsMTAgQEAKIAkJNEYxNTM0REUxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdC
ZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEYxNTM0REQxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMTUzNEUwMTFCNTMzMDIw
MDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRp
bmdCZWhhdmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MjEy
RUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk0RjMyQkIxQjE0RkE4NUU4MDBGNkMxQTMgLyog
TWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA0RjMyQkIxQTE0RkE4NUFBMDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJNEYyRDIwNTUxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUzMTJFQUU3QjMw
MDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi87IH07CiAJCTRGMzI4OUI1MTFBNDJBQUIw
MDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3Rv
clZhbHVlcy5jcHAgKi87IH07CiAJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0
b3JWYWx1ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0RjMyQkIxQjE0RkE4NUU4
MDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyQkIxQTE0RkE4NUFBMDBGNkMxQTMgLyogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250
ZW5kLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRG
NEY1RkZBMTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CiAJ
CTRGNkZERDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVE
RDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTRGNkZERDY1MTM0
MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJ
bnNwZWN0b3JQYWdlQWdlbnQuaCAqLzsgfTsKQEAgLTE5MzIsNyArMTkzMiw3IEBACiAJCTdCMUVB
MENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAv
KiBKU1VuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0YxNTc2QzVCNTAwNjAxNzdEIC8q
IEpTVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggKi87IH07
CiAJCTdCOTE4NEQyMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkxODRDRjE1NzU4RTQyMDA5
MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwICovOyB9OwotCQk3QjkxODREMzE1NzU4RTQyMDA5MkFB
OTMgLyogVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9
OworCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3NThFNDIwMDky
QUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0Qw
MDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAv
KiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxv
YWRlckNGLmNwcCAqLzsgfTsKIAkJN0U5OUFGNTEwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0Zv
Y3VzQWxsb3dlZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxv
d2VkSW5kaWNhdG9yLmNwcCAqLzsgfTsKQEAgLTg1MDIsMTAgKzg1MDIsMTAgQEAKIAkJNEYxNTM0
REQxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvclR5cGVz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMyQkIxQTE0
RkE4NUFBMDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdl
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdl
bnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCMzExQTQyQUFCMDA1
QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0
cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZBMTFD
QkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9u
dGVuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVu
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjZGREQ2MjEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluc3BlY3RvclBhZ2VBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMjEwNTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDYgKzg2LDcgQEAKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIu
aCIKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0
bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZv
aWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSBy
ZWdpc3RlciBhIG5ldyB1bmRvIGNvbW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAg
ICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0
RWRpdENvbW1hbmQgPSBjbWQ7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlm
IChjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFz
dEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRp
dENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVz
cG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBA
IHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsK
ICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3Rl
cChjbWQpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5y
ZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZW5kaWYgIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250
ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9y
OjpyZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNv
bW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNl
bGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQg
PSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAg
ICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlm
CiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEy
NDIsMjQgKzEyNTUsNDAgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkK
IAogYm9vbCBFZGl0b3I6OmNhblVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICBy
ZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQor
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgog
fQogCiBib29sIEVkaXRvcjo6Y2FuUmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAg
IHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNl
CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yOjpkaWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyMTA1OSkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3
IEBAIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmUKIAogVW5kb01hbmFn
ZXI6OlVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpCiAgICAgOiBtX3VuZG9TY29wZUhvc3QoaG9zdCkK
KyAgICAsIG1faXNSZWRvaW5nKGZhbHNlKQogewogfQogCkBAIC01NCwxOCArNTUsNjQgQEAgdm9p
ZCBVbmRvTWFuYWdlcjo6dW5kb1Njb3BlSG9zdERlc3Ryb3llZAogCiB2b2lkIFVuZG9NYW5hZ2Vy
Ojp1bmRvKCkKIHsKKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgVW5kb1N0ZXAqIHN0ZXAgPSBtX3VuZG9TdGFjay5sYXN0KCkuZ2V0KCk7CisgICAg
c3RlcC0+dW5hcHBseSgpOworICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAogdm9p
ZCBVbmRvTWFuYWdlcjo6cmVkbygpCiB7CisgICAgaWYgKG1fcmVkb1N0YWNrLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIFVuZG9TdGVwKiBzdGVwID0gbV9yZWRvU3RhY2subGFzdCgp
LmdldCgpOworICAgIG1faXNSZWRvaW5nID0gdHJ1ZTsKKyAgICBzdGVwLT5yZWFwcGx5KCk7Cisg
ICAgbV9pc1JlZG9pbmcgPSBmYWxzZTsKKyAgICBtX3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9
CisgICAgCit1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpsZW5ndGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7Cit9CisKK3Vu
c2lnbmVkIGxvbmcgVW5kb01hbmFnZXI6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9yZWRvU3RhY2suc2l6ZSgpOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVuZG8oKQog
eworICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFy
UmVkbygpCiB7CisgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKK30KKyAgICAKK2Jvb2wgVW5kb01h
bmFnZXI6OmNhblVuZG8oKSBjb25zdAoreworICAgIHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0
eSgpOworfQorCitib29sIFVuZG9NYW5hZ2VyOjpjYW5SZWRvKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0
ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBjbWQpCit7CisgICAgbV91bmRvU3RhY2su
YXBwZW5kKGNtZCk7CisgICAgaWYgKCFtX2lzUmVkb2luZykKKyAgICAgICAgY2xlYXJSZWRvKCk7
Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRv
U3RlcD4gY21kKQoreworICAgIG1fcmVkb1N0YWNrLmFwcGVuZChjbWQpOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjEwNTkpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDkgKzMzLDExIEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiVW5k
b1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCwxMyArNTAsMjYgQEAgcHVibGljOgog
CiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgdW5zaWduZWQg
bG9uZyBsZW5ndGgoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3Q7
CiAKICAgICB2b2lkIGNsZWFyVW5kbygpOwogICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgCisg
ICAgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAg
CisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7Cisg
ICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CiAKIHBy
aXZhdGU6CiAgICAgVW5kb01hbmFnZXIoTm9kZSogaG9zdCk7CiAgICAgTm9kZSogbV91bmRvU2Nv
cGVIb3N0OworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gbV91bmRvU3RhY2s7
CisgICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBtX3JlZG9TdGFjazsKKyAgICBib29sIG1f
aXNSZWRvaW5nOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5k
b01hbmFnZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuaWRsCShyZXZpc2lvbiAxMjEwNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOSBAQCBtb2R1bGUgY29y
ZSB7CiAgICAgXSBVbmRvTWFuYWdlciB7CiAgICAgICAgIHZvaWQgdW5kbygpOwogICAgICAgICB2
b2lkIHJlZG8oKTsKKyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGxlbmd0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
cG9zaXRpb247CiAKICAgICAgICAgdm9pZCBjbGVhclVuZG8oKTsKICAgICAgICAgdm9pZCBjbGVh
clJlZG8oKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlz
aW9uIDEyMTA1OSkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIK
ICNpbmNsdWRlICJTZWxlY3Rpb25IYW5kbGVyLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIK
ICNpbmNsdWRlICJXZWJQYWdlX3AuaCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5o
IgogCkBAIC0yNzcsMTggKzI3OCw0OSBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJl
Z2lzdGVyUmVkCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNr
LmNsZWFyKCk7CiAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKKyNlbHNlCisgICAgY29uc3QgRnJh
bWUqIGZyYW1lID0gbV93ZWJWaWV3LT5mb2N1c2VkV2ViQ29yZUZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBkb2N1
bWVudC0+dW5kb01hbmFnZXIoKS0+Y2xlYXJVbmRvKCk7CisgICAgZG9jdW1lbnQtPnVuZG9NYW5h
Z2VyKCktPmNsZWFyUmVkbygpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIGNvbnN0IEZyYW1lKiBm
cmFtZSA9IG1fd2ViVmlldy0+Zm9jdXNlZFdlYkNvcmVGcmFtZSgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgcmV0dXJuIGRvY3VtZW50LT51bmRvTWFuYWdlcigpLT5jYW5VbmRvKCk7CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsK
KyNlbHNlCisgICAgY29uc3QgRnJhbWUqIGZyYW1lID0gbV93ZWJWaWV3LT5mb2N1c2VkV2ViQ29y
ZUZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIERv
Y3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnVuZG9NYW5hZ2Vy
KCktPmNhblJlZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OmNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMwMyw2ICsz
MzUsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblBhc3RlKEZyCiAKIHZvaWQg
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVy
YXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVw
PiBjb21tYW5kKCpiYWNrKTsKQEAgLTMxMSwxMCArMzQ0LDIwIEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6dW5kbygpCiAgICAgICAgIC8vIFVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sg
dG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICAgICAgY29tbWFu
ZC0+dW5hcHBseSgpOwogICAgIH0KKyNlbHNlCisgICAgY29uc3QgRnJhbWUqIGZyYW1lID0gbV93
ZWJQYWdlUHJpdmF0ZS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgp
OworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBkb2N1bWVudC0+dW5k
b01hbmFnZXIoKS0+dW5kbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJl
ZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3Jl
ZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBjb21tYW5kKCpiYWNrKTsK
QEAgLTMyNyw2ICszNzAsMTUgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkK
ICAgICAgICAgY29tbWFuZC0+cmVhcHBseSgpOwogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwog
ICAgIH0KKyNlbHNlCisgICAgY29uc3QgRnJhbWUqIGZyYW1lID0gbV93ZWJQYWdlUHJpdmF0ZS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBkb2N1bWVudC0+dW5kb01hbmFnZXIoKS0+cmVk
bygpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJsS2V5ID0gMSA8PCAw
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHAJKHJldmlzaW9uIDEyMTA1OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
cGVsbENoZWNrZXIuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgogI2luY2x1ZGUgIlVuZG9T
dGVwLmgiCiAKICNpbmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCkBAIC0zMDksOCArMzEw
LDE5IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJSZWRvU3RlcCgKIAogdm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9TdGFj
ay5jbGVhcigpOworI2Vsc2UKKyAgICBjb25zdCBGcmFtZSogZnJhbWUgPSBtX3dlYlZpZXctPmZv
Y3VzZWRXZWJDb3JlRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47Cisg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1
bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGRvY3VtZW50LT51bmRvTWFuYWdlcigpLT5jbGVh
clVuZG8oKTsKKyAgICBkb2N1bWVudC0+dW5kb01hbmFnZXIoKS0+Y2xlYXJSZWRvKCk7CisjZW5k
aWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZyYW1lKiBmcmFtZSwg
Ym9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzM0MSwzNyBAQCBib29sIEVkaXRv
ckNsaWVudEltcGw6OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6
Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJu
ICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIGNvbnN0IEZyYW1lKiBmcmFtZSA9
IG1fd2ViVmlldy0+Zm9jdXNlZFdlYkNvcmVGcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0
dXJuIGRvY3VtZW50LT51bmRvTWFuYWdlcigpLT5jYW5VbmRvKCk7CisjZW5kaWYKIH0KIAogYm9v
bCBFZGl0b3JDbGllbnRJbXBsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAg
Y29uc3QgRnJhbWUqIGZyYW1lID0gbV93ZWJWaWV3LT5mb2N1c2VkV2ViQ29yZUZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnVuZG9NYW5hZ2VyKCktPmNhblJlZG8o
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgVW5kb01h
bmFnZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAg
IFJlZlB0cjxVbmRvU3RlcD4gc3RlcCgqYmFjayk7CkBAIC0zNDYsMTAgKzM3OSwyMCBAQCB2b2lk
IEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAg
ICAgIC8vIHVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250
byB0aGUgcmVkbyBzdGFjay4KICAgICB9CisjZWxzZQorICAgIGNvbnN0IEZyYW1lKiBmcmFtZSA9
IG1fd2ViVmlldy0+Zm9jdXNlZFdlYkNvcmVGcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAg
ICAgIHJldHVybjsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
KyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1lbnQtPnVuZG9N
YW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJl
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsK
ICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9yZWRvU3RhY2su
ZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gc3RlcCgqYmFjayk7CkBAIC0zNjEsNiAr
NDA0LDE1IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiAgICAgICAgIC8vIHJlYXBw
bHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBz
dGFjay4KICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZWxzZQorICAgIGNvbnN0
IEZyYW1lKiBmcmFtZSA9IG1fd2ViVmlldy0+Zm9jdXNlZFdlYkNvcmVGcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAg
ZG9jdW1lbnQtPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiAvLwpJbmRleDog
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRH
dGsuY3BwCShyZXZpc2lvbiAxMjEwNTkpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmRIZWxwZXIuaCIKICNpbmNs
dWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgog
I2luY2x1ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgogI2lu
Y2x1ZGUgIldlYktpdERPTUNTU1N0eWxlRGVjbGFyYXRpb25Qcml2YXRlLmgiCkBAIC0zMDIsOCAr
MzAzLDE3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFdURjoKIAogdm9p
ZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2suY2xlYXIoKTsKICAgICByZWRvU3RhY2suY2xl
YXIoKTsKKyNlbHNlCisgICAgRnJhbWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAg
ZG9jdW1lbnQtPnVuZG9NYW5hZ2VyKCktPmNsZWFyVW5kbygpOworICAgIGRvY3VtZW50LT51bmRv
TWFuYWdlcigpLT5jbGVhclJlZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6
Y2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApAQCAt
MzE4LDI2ICszMjgsNTEgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBhc3RlKFdlYkNvcmU6OkZy
YQogCiBib29sIEVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG9j
dW1lbnQtPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRv
ckNsaWVudDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgcmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICBGcmFtZSogZnJhbWUg
PSBjb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1l
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPnVuZG9NYW5h
Z2VyKCktPmNhblJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5lbmQoKSkp
OwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAgICAgICAg
Ly8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRo
ZSByZWRvIHN0YWNrLgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2Vsc2UKKyAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlUGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwor
ICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBkb2N1bWVudC0+dW5kb01h
bmFnZXIoKS0+dW5kbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7
CiAgICAgICAgIHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpAQCAtMzQ4LDYg
KzM4MywxMyBAQCB2b2lkIEVkaXRvckNsaWVudDo6cmVkbygpCiAgICAgICAgIHN0ZXAtPnJlYXBw
bHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbHNlCisgICAgRnJh
bWUqIGZyYW1lID0gY29yZVBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBp
ZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1lbnQtPnVuZG9NYW5hZ2Vy
KCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0
Tm9kZShOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24p
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudFF0LmNwcAkocmV2aXNpb24gMTIxMDU5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcg
QEAKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNwYXRpYWxOYXZpZ2F0aW9uLmgi
CiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKICNpbmNsdWRlICJxd2VicGFnZS5o
IgogI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKQEAgLTI1Myw5ICsyNTQsMjAgQEAgdm9pZCBFZGl0
b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVAogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojpj
bGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAj
aWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygpLT5j
bGVhcigpOwogI2VuZGlmCisjZWxzZQorICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJh
bWUpCisgICAgICAgIHJldHVybjsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1l
bnQtPnVuZG9NYW5hZ2VyKCktPmNsZWFyVW5kbygpOworICAgIGRvY3VtZW50LT51bmRvTWFuYWdl
cigpLT5jbGVhclJlZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5D
b3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yNzAs
MzggKzI4Miw3OCBAQCBib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpGCiAK
IGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNl
bHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRpZgor
I2Vsc2UKKyAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1
cm47CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkb2N1bWVudC0+
dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
UXQ6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmZGVm
IFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgcmV0dXJuIG1f
cGFnZS0+dW5kb1N0YWNrKCktPmNhblJlZG8oKTsKICNlbmRpZgorI2Vsc2UKKyAgICBGcmFtZSog
ZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWlu
RnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBkb2N1bWVudC0+dW5kb01hbmFnZXIoKS0+Y2Fu
UmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVuZG8oKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBtX2lu
VW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnVuZG8oKTsKICAgICBt
X2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2Vsc2UKKyAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
KyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJu
OworICAgIGRvY3VtZW50LT51bmRvTWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRRdDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAj
aWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CiAgICAgbV9w
YWdlLT51bmRvU3RhY2soKS0+cmVkbygpOwogICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOwogI2Vu
ZGlmCisjZWxzZQorICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250
cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybjsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAg
ICBpZiAoIWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisgICAgZG9jdW1lbnQtPnVuZG9NYW5h
Z2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRJ
bnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFj
dGlvbikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA1OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTIxICBTdWtvbHNhayBT
YWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5k
b01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBj
bGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1y
ZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTIyICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBTbmFwc2hvdCBtZXRhZGF0YSBpbiBmcm9u
dCBlbmQgdG8gYXZvaWQgSVBDIHJvdW5kLXRyaXBzCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJl
ZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
bWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQgQEAKK3Rlc3QKKworUEFTUyBVbnRpdGxlZCAKKwpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8t
cmVkby5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PGRpdiBpZD0iZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxkaXYgaWQ9Imxv
ZyI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9vd25f
cHJvcGVydHkoZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIpOworICAgIGFzc2VydF9pZGxfYXR0cmli
dXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAidW5kbyIpOworICAgIGFzc2VydF9pZGxfYXR0cmli
dXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicmVkbyIpOworICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJsZW5ndGgiKTsKKyAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicG9zaXRpb24iKTsKKyAgICAKKyAgICAvLyBzdGFy
dAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICAK
KyAgICAvLyBpbnNlcnQgdGV4dAorICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImVkaXQiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwg
MCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3Qi
KTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0g
MSk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7
CisgICAgCisgICAgLy8gdGhlbiBib2xkIGl0CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3Jl
YXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdCk7CisgICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBkb2N1bWVudC5leGVjQ29t
bWFuZCgiQm9sZCIsIGZhbHNlLCBudWxsKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gIjxiPnRlc3Q8L2I+Iik7CisgICAgCisgICAgLy8gdGhlbiB1bmRvCisgICAgZG9jdW1lbnQu
dW5kb01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9N
YW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdl
ci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVz
dCIpOworICAgIAorICAgIC8vIHRoZW4gdW5kbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVu
ZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGgg
PT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0g
Mik7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworICAgIAorICAgIC8v
IHRoZW4gcmVkbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3Ry
dWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsKKyAgICAKKyAgICAvLyB0aGVuIHJlZG8KKyAg
ICBkb2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50
LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSkKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149157</attachid>
            <date>2012-06-22 19:18:27 -0700</date>
            <delta_ts>2012-06-22 20:04:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120622191947.patch</filename>
            <type>text/plain</type>
            <size>28738</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5k
b01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAg
ICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKwogMjAxMi0wNi0yMiAgRXVnZW5lIEtseXVj
aG5pa292ICA8ZXVzdGFzLmJpZ0BnbWFpbC5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjog
Rml4IG5lZ2F0aXZlIHRpbWUgaW50ZXJ2YWwgb24gem9vbS1pbgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDEyMTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yNTQ1LDMgKzI1NDUsMTMgQEAgX19aTjdXZWJDb3JlMjdBbHRl
cm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRpdmVXaXRo
UmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTMyY29s
bGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5nUk4zV1RG
NlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNlbmRpZgorCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1bWVudDExdW5kb01hbmFn
ZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19fWk43V2ViQ29yZTExVW5k
b01hbmFnZXI0dW5kb0V2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyOWNsZWFyUmVkb0V2Citf
X1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyOWNsZWFyVW5kb0V2CitfX1pOSzdXZWJDb3JlMTFVbmRv
TWFuYWdlcjZsZW5ndGhFdgorX19aTks3V2ViQ29yZTExVW5kb01hbmFnZXI4cG9zaXRpb25Fdgor
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMjEwODQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQAog
ICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEdyYW51bGFyaXR5LmgnLAogICAgICAgICAgICAgJ2Vk
aXRpbmcvVGV4dEl0ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVHlwaW5nQ29tbWFu
ZC5oJywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9NYW5hZ2VyLmgnLAogICAgICAgICAgICAg
J2VkaXRpbmcvVmlzaWJsZVBvc2l0aW9uLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1dyaXRpbmdEaXJlY3Rpb24uaCcs
CkBAIC0yNjY5LDYgKzI2NzAsOCBAQAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEluc2VydGlv
bkJhc2VDb21tYW5kLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcCcsCisgICAgICAgICAgICAn
ZWRpdGluZy9VbmRvTWFuYWdlci5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcvVW5kb01hbmFn
ZXIuaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9VbmRvU3RlcC5oJywKICAgICAgICAgICAgICdl
ZGl0aW5nL1VubGlua0NvbW1hbmQuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL1VubGlua0Nv
bW1hbmQuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjEwODQpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE0MjgsMTAg
KzE0MjgsMTAgQEAKIAkJNEYxNTM0REUxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0
REQxMUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMTUzNEUwMTFCNTMzMDIwMDIxRkQ4
NiAvKiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhh
dmlvclR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNEYyRDIwNTQxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MjEyRUFFN0Iz
MDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwotCQk0RjMyQkIxQjE0RkE4NUU4MDBGNkMxQTMgLyogTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RjMyQkIxQTE0RkE4NUFBMDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNEYy
RDIwNTUxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMkQyMDUzMTJFQUU3QjMwMDVDMjg3
NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgKi87IH07CiAJCTRGMzI4OUI1MTFBNDJBQUIwMDVBQkU3
RSAvKiBJbnNwZWN0b3JWYWx1ZXMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNEYzMjg5QjMxMUE0MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVl
cy5jcHAgKi87IH07CiAJCTRGMzI4OUI2MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4
OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0RjMyQkIxQjE0RkE4NUU4MDBGNkMx
QTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyQkIxQTE0RkE4NUFBMDBGNkMxQTMgLyogTWVtb3J5SW5z
dHJ1bWVudGF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJNEY0RjVGRkIxMUNCRDJFMTAwQTE4NkJGIC8qIEluc3BlY3RvckZyb250ZW5kLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNEY1RkZB
MTFDQkQyRDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi87IH07CiAJCTRGNkZE
RDY0MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEY2RkRENjIxMzQxREVERDAwMUY4
RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi87IH07CiAJCTRGNkZERDY1MTM0MURFREQw
MDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYzMTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0
b3JQYWdlQWdlbnQuaCAqLzsgfTsKQEAgLTE5MzIsNyArMTkzMiw3IEBACiAJCTdCMUVBMENFMTU3
NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1Vu
ZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0YxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5k
b01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggKi87IH07CiAJCTdC
OTE4NEQyMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMg
LyogVW5kb01hbmFnZXIuY3BwICovOyB9OwotCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyog
VW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OworCQk3
QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAv
KiBVbmRvTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEyN0Yz
NDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJy
ZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNG
LmNwcCAqLzsgfTsKIAkJN0U5OUFGNTEwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxs
b3dlZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5k
aWNhdG9yLmNwcCAqLzsgfTsKQEAgLTg1MDIsMTAgKzg1MDIsMTAgQEAKIAkJNEYxNTM0REQxMUI1
MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFZGl0aW5nQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvclR5cGVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAvKiBJ
bnNwZWN0b3JBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0
b3JBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMyQkIxQTE0RkE4NUFB
MDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCMzExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRG
MzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1bWVu
dGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZBMTFDQkQyRDIw
MEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMgLyog
SW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3RvclBhZ2VBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMjEwODQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDcgQEAKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKICNp
bmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZvaWQgRWRp
dG9yOjphcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSByZWdpc3Rl
ciBhIG5ldyB1bmRvIGNvbW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAgICAgICAg
IC8vIGRpZmZlcmVudCBmcm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0RWRpdENv
bW1hbmQgPSBjbWQ7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlmIChjbGll
bnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRD
b21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1h
bmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBAIHZvaWQg
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAK
ICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQp
OworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3Rl
clJlZG9TdGVwKGNtZCk7CisjZW5kaWYgIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhu
ZXdTZWxlY3Rpb24pOwogfQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9yOjpyZWFw
cGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlv
bjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOwor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xp
ZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlmCiAgICAg
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEyNDIsMjQg
KzEyNTUsNDAgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIAogYm9v
bCBFZGl0b3I6OmNhblVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJl
dHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICByZXR1cm4g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlmCiB9
CiAKIHZvaWQgRWRpdG9yOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQorICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQogCiBi
b29sIEVkaXRvcjo6Y2FuUmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJldHVy
biBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNlCisgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yOjpkaWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyMTA4NCkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIFBh
c3NSZWZQdHI8VW5kb01hbmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmUKIAogVW5kb01hbmFnZXI6OlVu
ZG9NYW5hZ2VyKE5vZGUqIGhvc3QpCiAgICAgOiBtX3VuZG9TY29wZUhvc3QoaG9zdCkKKyAgICAs
IG1faXNSZWRvaW5nKGZhbHNlKQogewogfQogCkBAIC01NCwxOCArNTUsNjQgQEAgdm9pZCBVbmRv
TWFuYWdlcjo6dW5kb1Njb3BlSG9zdERlc3Ryb3llZAogCiB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRv
KCkKIHsKKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgVW5kb1N0ZXAqIHN0ZXAgPSBtX3VuZG9TdGFjay5sYXN0KCkuZ2V0KCk7CisgICAgc3RlcC0+
dW5hcHBseSgpOworICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAogdm9pZCBVbmRv
TWFuYWdlcjo6cmVkbygpCiB7CisgICAgaWYgKG1fcmVkb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFVuZG9TdGVwKiBzdGVwID0gbV9yZWRvU3RhY2subGFzdCgpLmdldCgp
OworICAgIG1faXNSZWRvaW5nID0gdHJ1ZTsKKyAgICBzdGVwLT5yZWFwcGx5KCk7CisgICAgbV9p
c1JlZG9pbmcgPSBmYWxzZTsKKyAgICBtX3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisgICAg
Cit1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVy
biBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7Cit9CisKK3Vuc2lnbmVk
IGxvbmcgVW5kb01hbmFnZXI6OnBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWRv
U3RhY2suc2l6ZSgpOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVuZG8oKQogeworICAg
IG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbygp
CiB7CisgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKK30KKyAgICAKK2Jvb2wgVW5kb01hbmFnZXI6
OmNhblVuZG8oKSBjb25zdAoreworICAgIHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOwor
fQorCitib29sIFVuZG9NYW5hZ2VyOjpjYW5SZWRvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1f
cmVkb1N0YWNrLmlzRW1wdHkoKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRv
U3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBjbWQpCit7CisgICAgbV91bmRvU3RhY2suYXBwZW5k
KGNtZCk7CisgICAgaWYgKCFtX2lzUmVkb2luZykKKyAgICAgICAgY2xlYXJSZWRvKCk7Cit9CisK
K3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4g
Y21kKQoreworICAgIG1fcmVkb1N0YWNrLmFwcGVuZChjbWQpOwogfQogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjEwODQpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDkgKzMz
LDExIEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiVW5kb1N0ZXAu
aCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OCwxMyArNTAsMjYgQEAgcHVibGljOgogCiAgICAg
dm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgdW5zaWduZWQgbG9uZyBs
ZW5ndGgoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3Q7CiAKICAg
ICB2b2lkIGNsZWFyVW5kbygpOwogICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgCisgICAgYm9v
bCBjYW5VbmRvKCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAgCisgICAg
dm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CisgICAgdm9p
ZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CiAKIHByaXZhdGU6
CiAgICAgVW5kb01hbmFnZXIoTm9kZSogaG9zdCk7CiAgICAgTm9kZSogbV91bmRvU2NvcGVIb3N0
OworICAgIAorICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gbV91bmRvU3RhY2s7CisgICAg
VmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBtX3JlZG9TdGFjazsKKyAgICBib29sIG1faXNSZWRv
aW5nOwogfTsKICAgICAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIu
aWRsCShyZXZpc2lvbiAxMjEwODQpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5h
Z2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgXSBVbmRvTWFuYWdlciB7CiAgICAgICAgIHZvaWQgdW5kbygpOwogICAgICAgICB2b2lkIHJl
ZG8oKTsKKyAgICAgICAgCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxlbmd0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcG9zaXRp
b247CiAKICAgICAgICAgdm9pZCBjbGVhclVuZG8oKTsKICAgICAgICAgdm9pZCBjbGVhclJlZG8o
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEy
MTA4NCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZGlkU2V0U2VsZWMKIAogdm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgLy8gUmVtb3ZlIHRoZSBvbGRlc3Qg
aXRlbSBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciB0aGUgc3RhY2su
CiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAg
ICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7CkBAIC0yNjgsMjcgKzI2OSw0NCBAQCB2
b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyVW5kCiAgICAgICAgIG1fcmVkb1N0
YWNrLmNsZWFyKCk7CiAKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNr
LmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5V
bmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1f
dW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OmNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QK
QEAgLTMwMyw2ICszMjEsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblBhc3Rl
KEZyCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFu
ZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVm
UHRyPFVuZG9TdGVwPiBjb21tYW5kKCpiYWNrKTsKQEAgLTMxMSwxMCArMzMwLDEyIEBAIHZvaWQg
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiAgICAgICAgIC8vIFVuYXBwbHkgd2lsbCBj
YWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAg
ICAgICAgY29tbWFuZC0+dW5hcHBseSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3Ig
YmFjayA9IC0tbV9yZWRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29t
bWFuZCgqYmFjayk7CkBAIC0zMjcsNiArMzQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpyZWRvKCkKICAgICAgICAgY29tbWFuZC0+cmVhcHBseSgpOwogICAgICAgICBtX2luUmVk
byA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3Ry
bEtleSA9IDEgPDwgMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjEwODQpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDIy
ICsyOTUsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxlY3Rpb25UeQogCiB2
b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3Rl
cD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAobV91bmRvU3Rh
Y2suc2l6ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgbV91bmRvU3RhY2su
cmVtb3ZlRmlyc3QoKTsgLy8gZHJvcCBvbGRlc3QgaXRlbSBvZmYgdGhlIGZhciBlbmQKICAgICBp
ZiAoIW1faW5SZWRvKQogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogICAgIG1fdW5kb1N0
YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRy
PFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVk
b1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2Vu
ZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMo
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7
CiAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dEltcGw6OmNhbkNvcHlDdXQoRnJhbWUqIGZyYW1lLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QK
QEAgLTMyOSwxNiArMzM5LDI1IEBAIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUGFzdGUoRnJh
bWUqIGYKIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
SW1wbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgVW5kb01hbmFn
ZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJl
ZlB0cjxVbmRvU3RlcD4gc3RlcCgqYmFjayk7CkBAIC0zNDYsMTAgKzM2NSwxMiBAQCB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnVuZG8oKQogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgICAg
IC8vIHVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0
aGUgcmVkbyBzdGFjay4KICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygp
KSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0
YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzYx
LDYgKzM4Miw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiAgICAgICAgIC8vIHJl
YXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5k
byBzdGFjay4KICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAog
Ly8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTIxMDg0KQorKysgU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4
LDIwICsxNzgsMzAgQEAgdm9pZCBFZGl0b3JDbGllbnRFZmw6OmRpZFNldFNlbGVjdGlvblR5cAog
CiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8
VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKCFt
X2lzSW5SZWRvKQogICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKICAgICB1bmRvU3RhY2sucHJl
cGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxV
bmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3Rh
Y2sucHJlcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAg
cmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNh
bkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTIwNiwyNCArMjE2
LDM1IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5QYXN0ZShGcmFtZSosIGIKIAogYm9vbCBF
ZGl0b3JDbGllbnRFZmw6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29u
c3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5p
c0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudEVmbDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAg
PSB1bmRvU3RhY2sudGFrZUZpcnN0KCk7CiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gcmVkb1N0YWNrLnRha2VGaXJzdCgpOwogCkBAIC0yMzIs
NiArMjUzLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogICAgICAgICBzdGVwLT5y
ZWFwcGx5KCk7CiAgICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFu
Z2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZp
c2lvbiAxMjEwODQpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsMjIgKzI4OCwzMiBAQCB2b2lkIEVk
aXRvckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGCiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9
PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmVGaXJzdCgp
OwogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAg
dW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOwor
I2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICByZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2su
Y2xlYXIoKTsKICAgICByZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRv
ckNsaWVudDo6Y2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdApAQCAtMzE4LDI2ICszMjgsMzcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBhc3RlKFdl
YkNvcmU6OkZyYQogCiBib29sIEVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOwor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6
OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVy
biAhcmVkb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4gc3RlcCgqKC0tdW5kb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHVuZG9TdGFjay5yZW1v
dmUoLS11bmRvU3RhY2suZW5kKCkpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBi
YWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIHN0
ZXAtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJl
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsK
ICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKCooLS1yZWRvU3RhY2suZW5k
KCkpKTsKICAgICAgICAgcmVkb1N0YWNrLnJlbW92ZSgtLXJlZG9TdGFjay5lbmQoKSk7CkBAIC0z
NDgsNiArMzY5LDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogICAgICAgICBzdGVwLT5y
ZWFwcGx5KCk7CiAgICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2Uq
IHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEy
MTA4NCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksMTIgKzIzOSwxNiBAQCBib29sIEVkaXRvckNsaWVu
dFF0OjpzZWxlY3RXb3JkQmVmb3JlTWVuCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVy
VW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVk
aXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3Mg
Ki8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcg
VW5kb1N0ZXBRdChzdGVwKSk7CiAjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojpy
ZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pCkBAIC0y
NTMsOSArMjU3LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1QK
IAogdm9pZCBFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1
cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2xlYXIoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJv
b2wgRWRpdG9yQ2xpZW50UXQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1
bHRWYWx1ZSkgY29uc3QKQEAgLTI3MCwzOCArMjc2LDUwIEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6
OmNhblBhc3RlKFdlYkNvcmU6OkYKIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbygpIGNv
bnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNL
CiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2so
KS0+Y2FuVW5kbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgog
fQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICNpZmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gZmFsc2U7
CiAjZWxzZQogICAgIHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jYW5SZWRvKCk7CiAjZW5k
aWYKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50UXQ6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9O
T19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0
YWNrKCktPnVuZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVl
OwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnJlZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBm
YWxzZTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNob3VsZElu
c2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0
aW9uKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTIxMDg0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMjEgIFN1a29sc2FrIFNh
a3NodXdvbmcgIDxzdWtvbHNha0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRv
TWFuYWdlcidzIHVuZG8sIHJlZG8sIGxlbmd0aCwgcG9zaXRpb24sIGNsZWFyVW5kbywgYW5kIGNs
ZWFyUmVkbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJl
ZG8uaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMjIgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hp
Y3VAYWRvYmUuY29tPgogCiAgICAgICAgIFtDU1MgU2hhZGVyc10gUmUtZW5hYmxlIHRoZSBDU1Mg
U2hhZGVycyBjb21waWxlIHRpbWUgZmxhZyBvbiBTYWZhcmkgTWFjCkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdl
ci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK3Rlc3QKKworUEFTUyBVbnRpdGxlZCAKKwpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5h
Z2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3MiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIpOworICAgIGFzc2VydF9p
ZGxfYXR0cmlidXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAidW5kbyIpOworICAgIGFzc2VydF9p
ZGxfYXR0cmlidXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicmVkbyIpOworICAgIGFzc2VydF9v
d25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJsZW5ndGgiKTsKKyAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicG9zaXRpb24iKTsKKyAgICAKKyAg
ICAvLyBzdGFydAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9
PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAw
KTsKKyAgICAKKyAgICAvLyBpbnNlcnQgdGV4dAorICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImVkaXQiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24oZWRpdCwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxz
ZSwgInRlc3QiKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5s
ZW5ndGggPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRp
b24gPT0gMCk7CisgICAgCisgICAgLy8gdGhlbiBib2xkIGl0CisgICAgdmFyIHJhbmdlID0gZG9j
dW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdCk7
CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBkb2N1bWVu
dC5leGVjQ29tbWFuZCgiQm9sZCIsIGZhbHNlLCBudWxsKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1
ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5p
bm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7CisgICAgCisgICAgLy8gdGhlbiB1bmRvCisgICAg
ZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRN
TCA9PSAidGVzdCIpOworICAgIAorICAgIC8vIHRoZW4gdW5kbworICAgIGRvY3VtZW50LnVuZG9N
YW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdl
ci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9z
aXRpb24gPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworICAg
IAorICAgIC8vIHRoZW4gcmVkbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAg
ICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7Cisg
ICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAg
YXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsKKyAgICAKKyAgICAvLyB0aGVu
IHJlZG8KKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVl
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVk
aXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSkKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149160</attachid>
            <date>2012-06-22 20:04:19 -0700</date>
            <delta_ts>2012-07-02 21:51:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120622200538.patch</filename>
            <type>text/plain</type>
            <size>28748</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5k
b01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAg
ICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKwogMjAxMi0wNi0yMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IHdpdGggdGV4dC1vdmVy
ZmxvdzplbGxpcHNpcyBhbmQgdGV4dC1hbGlnbjpyaWdodCBpcyBsZWZ0IGFsaWduZWQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU0NSwzICsyNTQ1LDEzIEBAIF9fWk43
V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0VGV4dEFs
dGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBfX1pO
N1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRl
ZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVF
CiAjZW5kaWYKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCitfX1pON1dlYkNvcmU4RG9jdW1l
bnQxMXVuZG9NYW5hZ2VyRXYKK19fWk43V2ViQ29yZTExVW5kb01hbmFnZXI0cmVkb0V2CitfX1pO
N1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHVuZG9FdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjlj
bGVhclJlZG9FdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjljbGVhclVuZG9FdgorX19aTks3
V2ViQ29yZTExVW5kb01hbmFnZXI2bGVuZ3RoRXYKK19fWk5LN1dlYkNvcmUxMVVuZG9NYW5hZ2Vy
OHBvc2l0aW9uRXYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTIxMDg2
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIs
NiArMTIyLDcgQEAKICAgICAgICAgICAgICdlZGl0aW5nL1RleHRHcmFudWxhcml0eS5oJywKICAg
ICAgICAgICAgICdlZGl0aW5nL1RleHRJdGVyYXRvci5oJywKICAgICAgICAgICAgICdlZGl0aW5n
L1R5cGluZ0NvbW1hbmQuaCcsCisgICAgICAgICAgICAnZWRpdGluZy9VbmRvTWFuYWdlci5oJywK
ICAgICAgICAgICAgICdlZGl0aW5nL1Zpc2libGVQb3NpdGlvbi5oJywKICAgICAgICAgICAgICdl
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9Xcml0aW5n
RGlyZWN0aW9uLmgnLApAQCAtMjY2OSw2ICsyNjcwLDggQEAKICAgICAgICAgICAgICdlZGl0aW5n
L1RleHRJbnNlcnRpb25CYXNlQ29tbWFuZC5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1RleHRJ
dGVyYXRvci5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAnLAor
ICAgICAgICAgICAgJ2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwJywKKyAgICAgICAgICAgICdlZGl0
aW5nL1VuZG9NYW5hZ2VyLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5kb1N0ZXAuaCcsCiAg
ICAgICAgICAgICAnZWRpdGluZy9VbmxpbmtDb21tYW5kLmNwcCcsCiAgICAgICAgICAgICAnZWRp
dGluZy9VbmxpbmtDb21tYW5kLmgnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIxMDg2KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDI4LDEwICsxNDI4LDEwIEBACiAJCTRGMTUzNERFMTFCNTMyRUMwMDIxRkQ4NiAvKiBF
ZGl0aW5nQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjE1MzRFMDEx
QjUzMzAyMDAyMUZEODYgLyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAv
KiBFZGl0aW5nQmVoYXZpb3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYy
RDIwNTIxMkVBRTdCMzAwNUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEYzMkJCMUIxNEZBODVFODAwRjZD
MUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTRGMkQyMDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MzEy
RUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9OwogCQk0RjMyODlCNTEx
QTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJ
bnNwZWN0b3JWYWx1ZXMuY3BwICovOyB9OwogCQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyog
SW5zcGVjdG9yVmFsdWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEYzMkJCMUIx
NEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYzMkJCMUExNEZBODVBQTAwRjZDMUEz
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTRGNEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0
b3JGcm9udGVuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0RjRGNUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICov
OyB9OwogCQk0RjZGREQ2NDEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYy
MTM0MURFREQwMDFGOEVFMyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovOyB9OwogCQk0RjZG
REQ2NTEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhF
RTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggKi87IH07CkBAIC0xOTMyLDcgKzE5MzIsNyBAQAog
CQk3QjFFQTBDRTE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDQzE1NzZDNUI1MDA2
MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCMUVBMENGMTU3NkM1QjUwMDYw
MTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5o
ICovOyB9OwogCQk3QjkxODREMjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0Q0YxNTc1
OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKLQkJN0I5MTg0RDMxNTc1OEU0
MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIu
aCAqLzsgfTsKKwkJN0I5MTg0RDMxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkxODREMDE1NzU4
RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQ
cmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTM3RUYyRTEzMzkyMDg4MDBC
MjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVz
b3VyY2VMb2FkZXJDRi5jcHAgKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBX
aW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0Zv
Y3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CkBAIC04NTAyLDEwICs4NTAyLDEwIEBACiAJ
CTRGMTUzNEREMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ0JlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZp
b3JUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0aW5nQmVoYXZp
b3JUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjJEMjA1MjEyRUFFN0Iz
MDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9yQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNEYz
MkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZW1vcnlJbnN0cnVtZW50YXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYyRDIwNTMxMkVBRTdCMzAwNUMyODc0IC8qIEluc3Bl
Y3RvckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3Bl
Y3RvckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEYzMjg5QjMxMUE0
MkFBQjAwNUFCRTdFIC8qIEluc3BlY3RvclZhbHVlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JWYWx1ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0RjMyODlCNDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclZhbHVlcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0RjMyQkIxQTE0RkE4NUFBMDBGNkMxQTMgLyogTWVt
b3J5SW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
bW9yeUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRG
NUZGQTExQ0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0RjRGNUZGQzExQ0JEMzAxMDBBMTg2QkYgLyogSW5zcGVj
dG9yRnJvbnRlbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
RnJvbnRlbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEY2RkRENjIxMzQxREVE
RDAwMUY4RUUzIC8qIEluc3BlY3RvclBhZ2VBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTIx
MDg2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVuZG9N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNs
dWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtODAyLDggKzgwMywx
MiBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDCiAgICAgICAgIC8v
IE9ubHkgcmVnaXN0ZXIgYSBuZXcgdW5kbyBjb21tYW5kIGlmIHRoZSBjb21tYW5kIHBhc3NlZCBp
biBpcwogICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21tYW5kCiAgICAgICAg
IG1fbGFzdEVkaXRDb21tYW5kID0gY21kOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
ICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3Rl
cChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZWxzZQorICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKG1f
bGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwpAQCAtODIwLDggKzgy
NSwxMiBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgbV9h
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKGNtZC5n
ZXQoKSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVy
UmVkb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFn
ZXIoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2VuZGlmICAKICAgICByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lk
IEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9u
QWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwg
RnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRD
b21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkp
CiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsK
KyNlbmRpZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQog
CkBAIC0xMjQyLDI0ICsxMjU1LDQwIEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpCiAKIGJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNl
CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8o
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOwor
I2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBFZGl0b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vs
c2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVk
bygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7
CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQCBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlCiAKIFVu
ZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcihOb2RlKiBob3N0KQogICAgIDogbV91bmRvU2NvcGVIb3N0
KGhvc3QpCisgICAgLCBtX2lzUmVkb2luZyhmYWxzZSkKIHsKIH0KIApAQCAtNTQsMTggKzU1LDY0
IEBAIHZvaWQgVW5kb01hbmFnZXI6OnVuZG9TY29wZUhvc3REZXN0cm95ZWQKIAogdm9pZCBVbmRv
TWFuYWdlcjo6dW5kbygpCiB7CisgICAgaWYgKG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIFVuZG9TdGVwKiBzdGVwID0gbV91bmRvU3RhY2subGFzdCgpLmdldCgp
OworICAgIHN0ZXAtPnVuYXBwbHkoKTsKKyAgICBtX3VuZG9TdGFjay5yZW1vdmVMYXN0KCk7CiB9
CiAKIHZvaWQgVW5kb01hbmFnZXI6OnJlZG8oKQogeworICAgIGlmIChtX3JlZG9TdGFjay5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBVbmRvU3RlcCogc3RlcCA9IG1fcmVkb1N0YWNr
Lmxhc3QoKS5nZXQoKTsKKyAgICBtX2lzUmVkb2luZyA9IHRydWU7CisgICAgc3RlcC0+cmVhcHBs
eSgpOworICAgIG1faXNSZWRvaW5nID0gZmFsc2U7CisgICAgbV9yZWRvU3RhY2sucmVtb3ZlTGFz
dCgpOworfQorICAgIAordW5zaWduZWQgbG9uZyBVbmRvTWFuYWdlcjo6bGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgpICsgbV9yZWRvU3RhY2suc2l6ZSgpOwor
fQorCit1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpwb3NpdGlvbigpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcmVkb1N0YWNrLnNpemUoKTsKIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJV
bmRvKCkKIHsKKyAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogfQogCiB2b2lkIFVuZG9NYW5hZ2Vy
OjpjbGVhclJlZG8oKQogeworICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7Cit9CisgICAgCitib29s
IFVuZG9NYW5hZ2VyOjpjYW5VbmRvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fdW5kb1N0YWNr
LmlzRW1wdHkoKTsKK30KKworYm9vbCBVbmRvTWFuYWdlcjo6Y2FuUmVkbygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6
OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gY21kKQoreworICAgIG1fdW5k
b1N0YWNrLmFwcGVuZChjbWQpOworICAgIGlmICghbV9pc1JlZG9pbmcpCisgICAgICAgIGNsZWFy
UmVkbygpOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQ
dHI8VW5kb1N0ZXA+IGNtZCkKK3sKKyAgICBtX3JlZG9TdGFjay5hcHBlbmQoY21kKTsKIH0KIAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAkocmV2aXNpb24gMTIxMDg2
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw5ICszMywxMSBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1
ZGUgIlVuZG9TdGVwLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDgsMTMgKzUwLDI2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdW5kbygpOwogICAgIHZvaWQgcmVkbygpOworICAgIAorICAgIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3Q7CisgICAgdW5zaWduZWQgbG9uZyBwb3NpdGlvbigp
IGNvbnN0OwogCiAgICAgdm9pZCBjbGVhclVuZG8oKTsKICAgICB2b2lkIGNsZWFyUmVkbygpOwor
ICAgIAorICAgIGJvb2wgY2FuVW5kbygpIGNvbnN0OworICAgIGJvb2wgY2FuUmVkbygpIGNvbnN0
OworICAgIAorICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBj
bWQpOworICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBjbWQp
OwogCiBwcml2YXRlOgogICAgIFVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpOwogICAgIE5vZGUqIG1f
dW5kb1Njb3BlSG9zdDsKKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IG1fdW5k
b1N0YWNrOworICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gbV9yZWRvU3RhY2s7CisgICAg
Ym9vbCBtX2lzUmVkb2luZzsKIH07CiAgICAgCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24gMTIxMDg2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDkgQEAgbW9k
dWxlIGNvcmUgewogICAgIF0gVW5kb01hbmFnZXIgewogICAgICAgICB2b2lkIHVuZG8oKTsKICAg
ICAgICAgdm9pZCByZWRvKCk7CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIHBvc2l0aW9uOwogCiAgICAgICAgIHZvaWQgY2xlYXJVbmRvKCk7CiAgICAgICAgIHZv
aWQgY2xlYXJSZWRvKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3Bw
CShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2
ICsyNjAsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZFNldFNlbGVjCiAKIHZv
aWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIC8vIFJlbW92
ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hlZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBm
b3IgdGhlIHN0YWNrLgogICAgIGlmIChtX3VuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9T
dGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwpAQCAtMjY4LDI3
ICsyNjksNDQgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZAogICAg
ICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogCiAgICAgbV91bmRvU3RhY2suYXBwZW5kKHN0ZXAp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+
IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV9yZWRvU3RhY2suYXBw
ZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKICAg
ICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblJlZG8oKSBj
b25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3Rh
Y2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9v
bCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0CkBAIC0zMDMsNiArMzIxLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAg
ICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7
CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0zMTEsMTAgKzMz
MCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogICAgICAgICAvLyBV
bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJl
ZG8gc3RhY2suCiAgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0K
IAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIEVkaXRDb21tYW5kU3Rh
Y2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8
VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3LDYgKzM0OCw3IEBAIHZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiAgICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKICAg
ICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0
IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTIxMDg2KQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2Vs
ZWN0aW9uVHkKIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NS
ZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAg
IG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRyb3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBm
YXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsK
ICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShz
dGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyUmVkb1N0
ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OmNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9T
dGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9v
bCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZyYW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0
VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzMzOSwyNSBAQCBib29sIEVkaXRvckNsaWVudEltcGw6
OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuVW5kbygpIGNv
bnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFj
ay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29s
IEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAg
ICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgp
OwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzQ2LDEwICszNjUs
MTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKICAgICAgICAgc3RlcC0+dW5hcHBs
eSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBj
b21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKGNhblJlZG8oKSkgewogICAgICAgICBVbmRvTWFuYWdlclN0YWNrOjppdGVyYXRvciBiYWNr
ID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpi
YWNrKTsKQEAgLTM2MSw2ICszODIsNyBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZG8oKQog
ICAgICAgICAvLyByZWFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5k
IG9udG8gdGhlIHVuZG8gc3RhY2suCiAgICAgICAgIG1faW5SZWRvID0gZmFsc2U7CiAgICAgfQor
I2VuZGlmCiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9F
ZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyMTA4NikKKysrIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3OCwyMCArMTc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRT
ZWxlY3Rpb25UeXAKIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RG
OjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAg
dW5kb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgcmVkb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShz
dGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVuZG9TdGFjay5j
bGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBA
IC0yMDYsMjQgKzIxNiwzNSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUq
LCBiCiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6
Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJu
ICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVu
ZG9TdGVwPiBzdGVwID0gdW5kb1N0YWNrLnRha2VGaXJzdCgpOwogICAgICAgICBzdGVwLT51bmFw
cGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJlZG9TdGFjay50YWtlRmlyc3Qo
KTsKIApAQCAtMjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKICAg
ICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAg
fQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRJbnNlcnROb2RlKE5v
ZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50
R3RrLmNwcAkocmV2aXNpb24gMTIxMDg2KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDIyICsyODgs
MzIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRgogCiB2b2lkIEVk
aXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKHVuZG9T
dGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICB1bmRvU3RhY2su
cmVtb3ZlRmlyc3QoKTsKICAgICBpZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5j
bGVhcigpOwogICAgIHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRv
U3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojpj
bGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRl
ZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50
OjpjYW5QYXN0ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBj
b25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNr
LmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wg
RWRpdG9yQ2xpZW50OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8
V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1
bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3
aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNr
LgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAo
Y2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0t
cmVkb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2su
ZW5kKCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKICAg
ICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAg
fQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUq
IG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
CShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDEyICsyMzksMTYgQEAgYm9v
bCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogCiB2b2lkIEVkaXRvckNsaWVu
dFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4g
c3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NU
QUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUg
JiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJl
Y3JlYXRlIHVuZG9zICovKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGFnZS0+dW5kb1N0YWNr
KCktPnB1c2gobmV3IFVuZG9TdGVwUXQoc3RlcCkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFD
SworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0
b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3Rl
clJlZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRp
b25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NU
QUNLCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAjZW5kaWYKKyNl
bmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1l
KiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yNzAsMzggKzI3Niw1MCBAQCBib29sIEVk
aXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpGCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6
OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmZGVmIFFU
X05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgcmV0dXJuIG1fcGFn
ZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuUmVkbygpIGNvbnN0CiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAg
cmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2Fu
UmVkbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2
b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBt
X3BhZ2UtPnVuZG9TdGFjaygpLT51bmRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAj
ZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVu
ZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5yZWRvKCk7CiAgICAgbV9p
blVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dFF0OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5z
ZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA4NikKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTIx
ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJ
bXBsZW1lbnQgdW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVh
clVuZG8sIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA2LTIyICBCZW5qYW1pbiBQb3Vs
YWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFRleHQgd2l0aCB0ZXh0LW92ZXJm
bG93OmVsbGlwc2lzIGFuZCB0ZXh0LWFsaWduOnJpZ2h0IGlzIGxlZnQgYWxpZ25lZApJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACit0ZXN0CisKK1BBU1MgVW50aXRsZWQg
CisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5k
by1yZWRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+
PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKKyAg
ICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFuYWdlciwgInVuZG8iKTsKKyAg
ICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFuYWdlciwgInJlZG8iKTsKKyAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAibGVuZ3RoIik7Cisg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgInBvc2l0aW9uIik7
CisgICAgCisgICAgLy8gc3RhcnQKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdl
ci5sZW5ndGggPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9z
aXRpb24gPT0gMCk7CisgICAgCisgICAgLy8gaW5zZXJ0IHRleHQKKyAgICB2YXIgZWRpdCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Iik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGVkaXQsIDApOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRI
VE1MIiwgZmFsc2UsICJ0ZXN0Iik7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIubGVuZ3RoID09IDEpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5h
Z2VyLnBvc2l0aW9uID09IDApOworICAgIAorICAgIC8vIHRoZW4gYm9sZCBpdAorICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRl
bnRzKGVkaXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAg
YXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2Vy
dF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90
cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworICAgIAorICAgIC8vIHRoZW4g
dW5kbworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRf
dHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUo
ZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRp
dC5pbm5lckhUTUwgPT0gInRlc3QiKTsKKyAgICAKKyAgICAvLyB0aGVuIHVuZG8KKyAgICBkb2N1
bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQu
dW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9N
YW5hZ2VyLnBvc2l0aW9uID09IDIpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICIiKTsKKyAgICAKKyAgICAvLyB0aGVuIHJlZG8KKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci5y
ZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3Ro
ID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09
IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICJ0ZXN0Iik7CisgICAgCisg
ICAgLy8gdGhlbiByZWRvCisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30pCisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150531</attachid>
            <date>2012-07-02 21:51:04 -0700</date>
            <delta_ts>2012-07-09 15:05:20 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-89722-20120702215239.patch</filename>
            <type>text/plain</type>
            <size>54441</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5k
b01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAg
ICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAg
ICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKwogMjAxMi0wNi0yMiAgQmVuamFtaW4gUG91
bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IHdpdGggdGV4dC1vdmVy
ZmxvdzplbGxpcHNpcyBhbmQgdGV4dC1hbGlnbjpyaWdodCBpcyBsZWZ0IGFsaWduZWQKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDYgKzY4NSw3IEBAIFNFVChXZWJD
b3JlX1NPVVJDRVMKICAgICBlZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCiAgICAg
ZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAKICAgICBlZGl0aW5nL0RpY3RhdGlvbkNv
bW1hbmQuY3BwCisgICAgZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAKICAgICBlZGl0aW5nL0Vk
aXRDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAogICAgIGVkaXRpbmcv
RWRpdG9yLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MjEwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDg4LDYgKzE0ODgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3Bw
IFwKQEAgLTIwNzEsNiArMjA3Miw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rp
Y3RhdGlvbkNvbW1hbmQuaCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlv
bi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdENvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5k
LmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYsNiArMzU2LDcgQEAgdjggewogICAg
ICAgICBiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1Vp
bnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVW5kb01h
bmFnZXJDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25D
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3Vz
dG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBA
QCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1VpbnQzMkFy
cmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcAorICAgIGJpbmRpbmdz
L2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmlt
YXRpb25DdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyMTA4NikKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTQ1LDMgKzI1NDUsMTMg
QEAgX19aTjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3Jl
MjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFu
Z2UKIF9fWk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNB
dHRyaWJ1dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5n
ZUVMbTBFRUUKICNlbmRpZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29y
ZThEb2N1bWVudDExdW5kb01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRv
RXYKK19fWk43V2ViQ29yZTExVW5kb01hbmFnZXI0dW5kb0V2CitfX1pON1dlYkNvcmUxMVVuZG9N
YW5hZ2VyOWNsZWFyUmVkb0V2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyOWNsZWFyVW5kb0V2
CitfX1pOSzdXZWJDb3JlMTFVbmRvTWFuYWdlcjZsZW5ndGhFdgorX19aTks3V2ViQ29yZTExVW5k
b01hbmFnZXI4cG9zaXRpb25FdgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lv
biAxMjEwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkK
QEAgLTIwNTIsNiArMjA1Miw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MTZB
cnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20u
Y3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3Rv
bS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIxMDg2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDI4LDEwICsx
NDI4LDEwIEBACiAJCTRGMTUzNERFMTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGMTUzNERE
MTFCNTMyRUMwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZpb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0RjE1MzRFMDExQjUzMzAyMDAyMUZEODYg
LyogRWRpdGluZ0JlaGF2aW9yVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDRGMTUzNERGMTFCNTMzMDIwMDIxRkQ4NiAvKiBFZGl0aW5nQmVoYXZp
b3JUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTRGMkQyMDU0MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEYyRDIwNTIxMkVBRTdCMzAw
NUMyODc0IC8qIEluc3BlY3RvckFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTRGMkQy
MDU1MTJFQUU3QjMwMDVDMjg3NCAvKiBJbnNwZWN0b3JBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQg
LyogSW5zcGVjdG9yQWdlbnQuY3BwICovOyB9OwogCQk0RjMyODlCNTExQTQyQUFCMDA1QUJFN0Ug
LyogSW5zcGVjdG9yVmFsdWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRGMzI4OUIzMTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMu
Y3BwICovOyB9OwogCQk0RjMyODlCNjExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjMyODlC
NDExQTQyQUFCMDA1QUJFN0UgLyogSW5zcGVjdG9yVmFsdWVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEz
IC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNEYzMkJCMUExNEZBODVBQTAwRjZDMUEzIC8qIE1lbW9yeUluc3Ry
dW1lbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTRGNEY1RkZCMTFDQkQyRTEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0RjRGNUZGQTEx
Q0JEMkQyMDBBMTg2QkYgLyogSW5zcGVjdG9yRnJvbnRlbmQuY3BwICovOyB9OwogCQk0RjZGREQ2
NDEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRGNkZERDYyMTM0MURFREQwMDFGOEVF
MyAvKiBJbnNwZWN0b3JQYWdlQWdlbnQuY3BwICovOyB9OwogCQk0RjZGREQ2NTEzNDFERUREMDAx
RjhFRTMgLyogSW5zcGVjdG9yUGFnZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0RjZGREQ2MzEzNDFERUREMDAxRjhFRTMgLyogSW5zcGVjdG9y
UGFnZUFnZW50LmggKi87IH07CkBAIC0xOTMxLDggKzE5MzEsMTEgQEAKIAkJN0FGRDRGRjQxMTMy
NzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEw
Q0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBD
RjE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpT
VW5kb01hbmFnZXIuaCAqLzsgfTsKLQkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9N
YW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07Ci0JCTdC
OTE4NEQzMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8q
IFVuZG9NYW5hZ2VyLmggKi87IH07CisJCTdCOTE4NEQzMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRv
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0JERjBBQzMxNUEyN0NBRjAwNjBG
REJCIC8qIFVuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCREYwQUMyMTVBMjdDQUYwMDYwRkRCQiAvKiBVbmRvTWFuYWdlci5jcHAg
Ki87IH07CisJCTdCREYwQUVGMTVBMjgzNDQwMDYwRkRCQiAvKiBET01UcmFuc2FjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkRGMEFFRDE1
QTI4MzQ0MDA2MEZEQkIgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9OworCQk3QkRGMEFGMDE1
QTI4MzQ0MDA2MEZEQkIgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCREYwQUVFMTVBMjgzNDQwMDYwRkRCQiAvKiBET01U
cmFuc2FjdGlvbi5oICovOyB9OworCQk3QkRGMEFGQzE1QTI4NEM2MDA2MEZEQkIgLyogSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QkRGMEFGQjE1QTI4NEM2MDA2MEZEQkIgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5j
cHAgKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEy
N0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFMzdFRjJFMTMzOTIwODgwMEIyOTI1MCAvKiBT
dWJyZXNvdXJjZUxvYWRlckNGLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFMzdFRjJEMTMzOTIwODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRl
ckNGLmNwcCAqLzsgfTsKIAkJN0U5OUFGNTEwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3Vz
QWxsb3dlZEluZGljYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RTk5QUY1MjBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2Vk
SW5kaWNhdG9yLmNwcCAqLzsgfTsKQEAgLTg1MDIsMTAgKzg1MDUsMTAgQEAKIAkJNEYxNTM0REQx
MUI1MzJFQzAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFZGl0aW5nQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNEYxNTM0REYxMUI1MzMwMjAwMjFGRDg2IC8qIEVkaXRpbmdCZWhhdmlvclR5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdCZWhhdmlvclR5cGVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGMkQyMDUyMTJFQUU3QjMwMDVDMjg3NCAv
KiBJbnNwZWN0b3JBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0RjMyQkIxQTE0RkE4
NUFBMDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1lbW9yeUluc3RydW1lbnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0RjJEMjA1MzEyRUFFN0IzMDA1QzI4NzQgLyogSW5zcGVjdG9yQWdlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQWdlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjMyODlCMzExQTQyQUFCMDA1QUJF
N0UgLyogSW5zcGVjdG9yVmFsdWVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvclZhbHVlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTRGMzI4OUI0MTFBNDJBQUIwMDVBQkU3RSAvKiBJbnNwZWN0b3JWYWx1ZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yVmFsdWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTRGMzJCQjFBMTRGQTg1QUEwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVt
ZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTRGNEY1RkZBMTFDQkQy
RDIwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTRGNEY1RkZDMTFDQkQzMDEwMEExODZCRiAvKiBJbnNwZWN0b3JGcm9udGVu
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0RjZGREQ2MjEzNDFERUREMDAxRjhFRTMg
LyogSW5zcGVjdG9yUGFnZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvclBhZ2VBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MDQ0LDkgKzkwNDcsMTIgQEAKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNj
cmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Ny
aXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBD
QzE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNVbmRvTWFuYWdlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQk3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5kb01hbmFn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMDE1NzU4RTQyMDA5
MkFBOTMgLyogVW5kb01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VW5kb01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDExNTc1
OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBV
bmRvTWFuYWdlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCREYwQUMyMTVB
MjdDQUYwMDYwRkRCQiAvKiBVbmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBVbmRvTWFuYWdlci5jcHA7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKKwkJN0JERjBBRUQxNUEyODM0NDAwNjBGREJCIC8qIERPTVRyYW5zYWN0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uLmNw
cDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5z
YWN0aW9uLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3QkRGMEFFRTE1QTI4
MzQ0MDA2MEZEQkIgLyogRE9NVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gRE9NVHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJN0JERjBBRkIxNUEyODRDNjAwNjBGREJCIC8qIEpTVW5kb01hbmFnZXJDdXN0b20u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNVbmRvTWFuYWdlckN1
c3RvbS5jcHA7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
IAkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVy
Z2VQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9y
aXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIy
OTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3Vy
Y2VMb2FkZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjkzOSw2ICsx
Njk0NSw4IEBACiAJCQkJQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmggKi8sCiAJCQkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuY3BwICovLAogCQkJCUNFQ0FERkM1MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25D
b21tYW5kLmggKi8sCisJCQkJN0JERjBBRUQxNUEyODM0NDAwNjBGREJCIC8qIERPTVRyYW5zYWN0
aW9uLmNwcCAqLywKKwkJCQk3QkRGMEFFRTE1QTI4MzQ0MDA2MEZEQkIgLyogRE9NVHJhbnNhY3Rp
b24uaCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICov
LAogCQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJ
CQkJOTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0xNzAy
OCw3ICsxNzAzNiw3IEBACiAJCQkJOTMzMDlEQ0QwOTlFNjQ5MTAwNTZFNTgxIC8qIFRleHRJdGVy
YXRvci5oICovLAogCQkJCTkzMzA5RENBMDk5RTY0OTEwMDU2RTU4MSAvKiBUeXBpbmdDb21tYW5k
LmNwcCAqLywKIAkJCQk5MzMwOURDQjA5OUU2NDkxMDA1NkU1ODEgLyogVHlwaW5nQ29tbWFuZC5o
ICovLAotCQkJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi8s
CisJCQkJN0JERjBBQzIxNUEyN0NBRjAwNjBGREJCIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLywKIAkJ
CQk3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCAqLywKIAkJCQk3Qjkx
ODREMTE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaWRsICovLAogCQkJCTlCMkQ4QTc4
MTQ5OTdDQ0YwMEVDRUYzRSAvKiBVbmRvU3RlcC5oICovLApAQCAtMjAxNDIsNiArMjAxNTAsNyBA
QAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNw
cCAqLywKIAkJCQk0OUVFQ0Y3NTEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9t
LmNwcCAqLywKIAkJCQk5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRB
cnJheUN1c3RvbS5jcHAgKi8sCisJCQkJN0JERjBBRkIxNUEyODRDNjAwNjBGREJCIC8qIEpTVW5k
b01hbmFnZXJDdXN0b20uY3BwICovLAogCQkJCUZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAvKiBK
U1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlG
QUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJCTMxOUU2ODg2
MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0y
NTE0OCw2ICsyNTE1Nyw3IEBACiAJCQkJQ0U3QjJEQjUxNTg2QUJBRDAwOThCM0ZBIC8qIFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTA5ODdDMjcxNTdENjc2
RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTdCREYwQUYwMTVBMjgzNDQwMDYwRkRCQiAvKiBET01UcmFuc2Fj
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODAzNiw3ICsyODA0Niw2IEBACiAJCQkJOTMzMDlF
MTkwOTlFNjQ5MjAwNTZFNTgxIC8qIFR5cGluZ0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODUwMzFCNEQwQTQ0RUZDNzAwRjk5MkUwIC8qIFVJRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTMzNTRBM0MwQjI0RjhDOTAwM0Y2REVBIC8qIFVJRXZlbnRXaXRoS2V5U3RhdGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyQzNEQTRDMEQwMDZDMUQwMEVGNkYyNiAvKiBV
bmljb2RlUmFuZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRDA4NkZFOTkwOUQ1M0FBQjAwNUJD
NzREIC8qIFVubGlua0NvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjU1QjNEREQxMjUx
RjEyRDAwM0VGMjY5IC8qIFVSTElucHV0VHlwZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MjAw
LDYgKzI4MjA5LDkgQEAKIAkJCQlDRTdCMkRCNDE1ODZBQkFEMDA5OEIzRkEgLyogQWx0ZXJuYXRp
dmVUZXh0VUlDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0U3QjJEQjYxNTg2QUJB
RDAwOThCM0ZBIC8qIFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUwOTg3QzI2MTU3RDY3NkQwMEJEQTgzNSAvKiBDdXN0b21GaWx0ZXJHbG9iYWxDb250ZXh0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCREYwQUMzMTVBMjdDQUYwMDYwRkRCQiAvKiBVbmRv
TWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QkRGMEFFRjE1QTI4MzQ0MDA2MEZEQkIg
LyogRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0JERjBBRkMxNUEyODRD
NjAwNjBGREJCIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0y
ODMxMyw2ICsyODMyNSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERl
YnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJT1RIRVJf
Q0ZMQUdTID0gIi1ERU5BQkxFX1VORE9fTUFOQUdFUiI7CiAJCQkJU1RSSVBfSU5TVEFMTEVEX1BS
T0RVQ1QgPSBOTzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFzZTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24g
MTIxMDg2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCw3IEBACiAjaW5jbHVkZSAiSlNVaW50
MzJBcnJheUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNVaW50OEFycmF5Q3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTVW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3ZvaWQgSlNVbmRvTWFuYWdlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVW5kb01hbmFnZXIqIHRoaXNPYmpl
Y3QgPSBqc0Nhc3Q8SlNVbmRvTWFuYWdlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1Rf
SU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0
dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVu
V2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENo
aWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAgIAorICAgIFVuZG9NYW5hZ2VyKiB1bmRv
TWFuYWdlciA9IHRoaXNPYmplY3QtPmltcGwoKTsKKyAgICB1bmRvTWFuYWdlci0+dmlzaXRUcmFu
c2FjdGlvbnModmlzaXRvcik7Cit9CisKKworSlNWYWx1ZSBKU1VuZG9NYW5hZ2VyOjp0cmFuc2Fj
dChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0
VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVW5kb01hbmFnZXI6
OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICBKU1Vu
ZG9NYW5hZ2VyKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVW5kb01hbmFnZXIqPihhc09iamVjdCh0
aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZK
U1VuZG9NYW5hZ2VyOjpzX2luZm8pOworICAgIFVuZG9NYW5hZ2VyKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VW5kb01hbmFnZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgSlNWYWx1ZSBkaWN0aW9uYXJ5ID0g
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKTsKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworICAgIGlmICghZGljdGlvbmFyeS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZXhlYyk7CisgICAgYm9vbCBtZXJnZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvQm9vbGVhbigpKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gRE9NVHJhbnNhY3Rp
b246OmNyZWF0ZShkaWN0aW9uYXJ5LmdldE9iamVjdCgpLCB0aGlzVmFsdWUuZ2V0T2JqZWN0KCks
IGN1cnJlbnRXb3JsZChleGVjKSwgc2NyaXB0Q29udGV4dCk7CisgICAgaW1wbC0+dHJhbnNhY3Qo
dHJhbnNhY3Rpb24sIG1lcmdlKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAko
cmV2aXNpb24gMTIxMDg2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5
KCkgT1ZFUlJJREU7CiAgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJ
REUgeyByZXR1cm4gbV9lZGl0QWN0aW9uOyB9CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAg
ICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQorI2VuZGlmCiAgICAgdm9pZCBhcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqKTsKICAgICBib29s
IHdhc0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0QWN0aW9uID09IEVk
aXRBY3Rpb25DcmVhdGVMaW5rOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9N
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9N
VHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
T01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCisKKyNpbmNsdWRlICJET01X
cmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJKU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgorCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rpb24oSlNPYmplY3Qq
IGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdv
cmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV93cmFwcGVyKHdy
YXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKKyAgICAsIG1fY29u
dGV4dChjb250ZXh0KQorICAgICwgbV91bmRvTWFuYWdlcigwKQoreworICAgIGlmICh3cmFwcGVy
KQorICAgICAgICBtX2RpY3Rpb25hcnkuc2V0TWF5QmVOdWxsKCptX2lzb2xhdGVkV29ybGQtPmds
b2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJU
KCFmdW5jdGlvbik7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeShK
U0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGlmIChtX2RpY3Rpb25hcnkpCisgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2RpY3Rpb25hcnkpOworfQorCit2b2lkIERPTVRyYW5zYWN0
aW9uOjpjYWxsUHJvcGVydHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQoreworICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNE
T01HbG9iYWxPYmplY3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdl
dCgpKTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhl
Y1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNE
aWN0aW9uYXJ5IGpzRGljdGlvbmFyeShleGVjLCBtX2RpY3Rpb25hcnkuZ2V0KCkpOworICAgIGlm
ICghanNEaWN0aW9uYXJ5LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNj
cmlwdFZhbHVlIHZhbHVlOworICAgIGlmICghanNEaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghdmFsdWUuaXNGdW5jdGlvbigpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHZhbHVlLmpzVmFs
dWUoKTsKKyAgICAKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgCisgICAgaWYgKGNhbGxU
eXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OworICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGZ1bmN0aW9uOworICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkKKyAgICAgICAgICAgID8gSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJncykKKyAgICAgICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgfQorfQorCit2b2lkIERPTVRy
YW5zYWN0aW9uOjpleGVjdXRlKCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgp
LCAiZXhlY3V0ZSIpOworfQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAg
ICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAidW5kbyIpOworICAgIGlmIChtX3VuZG9N
YW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOwor
fQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHko
bV9jb250ZXh0LmdldCgpLCAicmVkbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAg
ICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOworfQorCit9CisKKyNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBET01U
cmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiVW5k
b1N0ZXAuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdy
YXBwZXJXb3JsZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBVbmRvTWFu
YWdlcjsKKworY2xhc3MgRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVibGlj
OgorICAgIERPTVRyYW5zYWN0aW9uKEpTQzo6SlNPYmplY3QqIGRpY3Rpb25hcnksIEpTQzo6SlNP
YmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCwgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCopOworICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVRyYW5zYWN0
aW9uPiBjcmVhdGUoSlNDOjpKU09iamVjdCogZGljdGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3Jh
cHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01UcmFu
c2FjdGlvbihkaWN0aW9uYXJ5LCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkLCBjb250ZXh0KSk7Cisg
ICAgfQorICAgIAorICAgIHZvaWQgdmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImKTsK
KyAgICB2b2lkIGV4ZWN1dGUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgRWRpdEFjdGlvbiBl
ZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gRWRpdEFjdGlvblVuc3BlY2lm
aWVkOyB9CisgICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gdHJ1ZTsgfQorICAgIAorICAgIHZvaWQgc2V0VW5kb01hbmFnZXIoVW5kb01hbmFnZXIqIHVu
ZG9NYW5hZ2VyKSB7IG1fdW5kb01hbmFnZXIgPSB1bmRvTWFuYWdlcjsgfQorICAgIAorcHJpdmF0
ZToKKyAgICB2b2lkIGNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lKTsKKyAgICAKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpT
T2JqZWN0PiBtX2RpY3Rpb25hcnk7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3Jh
cHBlcjsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7CisgICAg
UmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBVbmRvTWFuYWdl
ciAqbV91bmRvTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTIxMDg2KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAj
aW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtODAyLDggKzgwMywxMiBAQCB2b2lkIEVkaXRvcjo6YXBw
bGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDCiAgICAgICAgIC8vIE9ubHkgcmVnaXN0ZXIgYSBuZXcg
dW5kbyBjb21tYW5kIGlmIHRoZSBjb21tYW5kIHBhc3NlZCBpbiBpcwogICAgICAgICAvLyBkaWZm
ZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21tYW5kCiAgICAgICAgIG1fbGFzdEVkaXRDb21tYW5kID0g
Y21kOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBpZiAoY2xpZW50KCkpCiAg
ICAgICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+
ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZWxzZQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1
cmVDb21wb3NpdGlvbigpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cyhuZXdTZWxlY3Rpb24pOwpAQCAtODIwLDggKzgyNSwxMiBAQCB2b2lkIEVkaXRvcjo6
dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLT5yZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7CiAgICAgCiAgICAgbV9s
YXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChj
bGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbHNl
CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJSZWRvU3Rl
cChjbWQpOworI2VuZGlmICAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0
aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRp
dGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVj
dGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFy
VHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5y
ZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsxMjU1LDQw
IEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wgRWRpdG9y
OjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xp
ZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lk
IEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNs
aWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBj
bGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAo
Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5k
b01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuY3BwCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5B
QkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVk
ZSAiTm9kZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00NCw2ICs0NSw5IEBAIFBhc3NS
ZWZQdHI8VW5kb01hbmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmUKIAogVW5kb01hbmFnZXI6OlVuZG9N
YW5hZ2VyKE5vZGUqIGhvc3QpCiAgICAgOiBtX3VuZG9TY29wZUhvc3QoaG9zdCkKKyAgICAsIG1f
aXNBcHBseWluZyhmYWxzZSkKKyAgICAsIG1faXNVbmFwcGx5aW5nKGZhbHNlKQorICAgICwgbV9p
c1JlYXBwbHlpbmcoZmFsc2UpCiB7CiB9CiAKQEAgLTUyLDIwICs1NiwxMzIgQEAgdm9pZCBVbmRv
TWFuYWdlcjo6dW5kb1Njb3BlSG9zdERlc3Ryb3llZAogICAgIG1fdW5kb1Njb3BlSG9zdCA9IDA7
CiB9CiAKK3ZvaWQgVW5kb01hbmFnZXI6OnRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rp
b24+IHBycFRyYW5zYWN0aW9uLCBib29sIG1lcmdlKQoreworICAgIGlmIChtX2lzQXBwbHlpbmcg
fHwgbV9pc1VuYXBwbHlpbmcgfHwgbV9pc1JlYXBwbHlpbmcpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gcHJwVHJhbnNhY3Rp
b247CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2VyKHRoaXMpOworICAgIAorICAgIGNs
ZWFyUmVkbygpOworICAgIAorICAgIG1faXNBcHBseWluZyA9IHRydWU7CisgICAgdHJhbnNhY3Rp
b24tPmV4ZWN1dGUoKTsKKyAgICBtX2lzQXBwbHlpbmcgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAo
IW1lcmdlIHx8IG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICBWZWN0b3I8UmVmUHRy
PFVuZG9TdGVwPiA+IGVudHJ5OworICAgICAgICBtX3VuZG9TdGFjay5hcHBlbmQoZW50cnkpOwor
ICAgIH0KKyAgICBtX3VuZG9TdGFjay5sYXN0KCkuYXBwZW5kKHRyYW5zYWN0aW9uKTsKK30KKwog
dm9pZCBVbmRvTWFuYWdlcjo6dW5kbygpCiB7CisgICAgaWYgKG1faXNBcHBseWluZyB8fCBtX2lz
VW5hcHBseWluZyB8fCBtX2lzUmVhcHBseWluZyB8fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IGVtcHR5RW50cnk7
CisgICAgbV9yZWRvU3RhY2suYXBwZW5kKGVtcHR5RW50cnkpOworICAgIAorICAgIG1faXNVbmFw
cGx5aW5nID0gdHJ1ZTsKKyAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IGVudHJ5ID0gbV91
bmRvU3RhY2subGFzdCgpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAw
OyAtLWkpIHsKKyAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtpLTFdLmdldCgpOworICAg
ICAgICBzdGVwLT51bmFwcGx5KCk7CisgICAgfQorICAgIG1faXNVbmFwcGx5aW5nID0gZmFsc2U7
CisgICAgCisgICAgbV91bmRvU3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCiB2b2lkIFVuZG9NYW5h
Z2VyOjpyZWRvKCkKIHsKKyAgICBpZiAobV9pc0FwcGx5aW5nIHx8IG1faXNVbmFwcGx5aW5nIHx8
IG1faXNSZWFwcGx5aW5nIHx8IG1fcmVkb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gZW1wdHlFbnRyeTsKKyAgICBtX3VuZG9T
dGFjay5hcHBlbmQoZW1wdHlFbnRyeSk7CisgICAgCisgICAgbV9pc1JlYXBwbHlpbmcgPSB0cnVl
OworICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gZW50cnkgPSBtX3JlZG9TdGFjay5sYXN0
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkgeworICAg
ICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2ktMV0uZ2V0KCk7CisgICAgICAgIHN0ZXAtPnJl
YXBwbHkoKTsKKyAgICB9CisgICAgbV9pc1JlYXBwbHlpbmcgPSBmYWxzZTsKKyAgICAKKyAgICBt
X3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisgICAgCit1bnNpZ25lZCBsb25nIFVuZG9NYW5h
Z2VyOjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBt
X3JlZG9TdGFjay5zaXplKCk7Cit9CisKK3Vuc2lnbmVkIGxvbmcgVW5kb01hbmFnZXI6OnBvc2l0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOwogfQogCiB2b2lk
IFVuZG9NYW5hZ2VyOjpjbGVhclVuZG8oKQogeworICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9
CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbygpCiB7CisgICAgbV9yZWRvU3RhY2suY2xl
YXIoKTsKK30KKyAgICAKK2Jvb2wgVW5kb01hbmFnZXI6OmNhblVuZG8oKSBjb25zdAoreworICAg
IHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOworfQorCitib29sIFVuZG9NYW5hZ2VyOjpj
YW5SZWRvKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsKK30K
Kwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVw
PiBjbWQpCit7CisgICAgaWYgKCFtX2lzUmVhcHBseWluZykgeworICAgICAgICBWZWN0b3I8UmVm
UHRyPFVuZG9TdGVwPiA+IGVudHJ5OworICAgICAgICBlbnRyeS5hcHBlbmQoY21kKTsKKyAgICAg
ICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5KTsKKyAgICAgICAgY2xlYXJSZWRvKCk7CisgICAg
fSBlbHNlCisgICAgICAgIG1fdW5kb1N0YWNrLmxhc3QoKS5hcHBlbmQoY21kKTsKK30KKwordm9p
ZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBjbWQp
Cit7CisgICAgaWYgKCFtX2lzVW5hcHBseWluZykgeworICAgICAgICBWZWN0b3I8UmVmUHRyPFVu
ZG9TdGVwPiA+IGVudHJ5OworICAgICAgICBlbnRyeS5hcHBlbmQoY21kKTsKKyAgICAgICAgbV9y
ZWRvU3RhY2suYXBwZW5kKGVudHJ5KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9yZWRvU3RhY2su
bGFzdCgpLmFwcGVuZChjbWQpOworfQorCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5zYWN0aW9uc0lu
U3RhY2soY29uc3QgVmVjdG9yPFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gPiYgc3RhY2ssIEpT
Qzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBz
dGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFVuZG9TdGVw
PiA+JiBlbnRyeSA9IHN0YWNrW2ldOworICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVu
dHJ5LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pd
LmdldCgpOworICAgICAgICAgICAgaWYgKHN0ZXAtPmlzRE9NVHJhbnNhY3Rpb24oKSkgeworICAg
ICAgICAgICAgICAgIERPTVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IHN0YXRpY19jYXN0PERP
TVRyYW5zYWN0aW9uKj4oc3RlcCk7CisgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb24tPnZpc2l0
RGljdGlvbmFyeSh2aXNpdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBVbmRvTWFuYWdlcjo6dmlzaXRUcmFuc2FjdGlvbnMoSlNDOjpTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2sobV91bmRvU3RhY2ssIHZp
c2l0b3IpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayhtX3JlZG9TdGFjaywgdmlzaXRv
cik7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHJldmlz
aW9uIDEyMTA4NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMzAgKzMzLDUzIEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VS
KQogCisjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBET01UcmFuc2FjdGlvbjsKIGNsYXNzIE5vZGU7CiAKIGNs
YXNzIFVuZG9NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8VW5kb01hbmFnZXI+IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gY3JlYXRlKE5vZGUqIGhvc3Qp
OwogICAgIHZvaWQgdW5kb1Njb3BlSG9zdERlc3Ryb3llZCgpOworICAgIAorICAgIHZvaWQgdHJh
bnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4sIGJvb2wpOwogCiAgICAgdm9pZCB1bmRv
KCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBj
b25zdDsKKyAgICB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGNs
ZWFyVW5kbygpOwogICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgCisgICAgYm9vbCBjYW5VbmRv
KCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCByZWdp
c3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CisgICAgdm9pZCByZWdpc3Rl
clJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IGNtZCk7CisgICAgCisgICAgdm9pZCB2aXNp
dFRyYW5zYWN0aW9ucyhKU0M6OlNsb3RWaXNpdG9yJik7CiAKIHByaXZhdGU6CiAgICAgVW5kb01h
bmFnZXIoTm9kZSogaG9zdCk7CiAgICAgTm9kZSogbV91bmRvU2NvcGVIb3N0OwotfTsKICAgICAK
KyAgICBWZWN0b3I8VmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiA+IG1fdW5kb1N0YWNrOworICAg
IFZlY3RvcjxWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+ID4gbV9yZWRvU3RhY2s7CisgICAgYm9v
bCBtX2lzQXBwbHlpbmc7CisgICAgYm9vbCBtX2lzVW5hcHBseWluZzsKKyAgICBib29sIG1faXNS
ZWFwcGx5aW5nOworfTsKKwogfQogICAgIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24gMTIxMDg2KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxNiBA
QAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9
VU5ET19NQU5BR0VSCisgICAgICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAgICAg
SlNDdXN0b21NYXJrRnVuY3Rpb24KICAgICBdIFVuZG9NYW5hZ2VyIHsKKyAgICAgICAgW0N1c3Rv
bV0gdm9pZCB0cmFuc2FjdChpbiBEaWN0aW9uYXJ5IHRyYW5zYWN0aW9uLCBpbiBib29sZWFuIG1l
cmdlKTsKKwogICAgICAgICB2b2lkIHVuZG8oKTsKICAgICAgICAgdm9pZCByZWRvKCk7CisgICAg
ICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHBvc2l0aW9uOwogCiAgICAg
ICAgIHZvaWQgY2xlYXJVbmRvKCk7CiAgICAgICAgIHZvaWQgY2xlYXJSZWRvKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCByZWFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkg
Y29uc3QgPSAwOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgdmlydHVhbCBib29sIGlz
RE9NVHJhbnNhY3Rpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTIxMDg2KQorKysgU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMjEyNSw2ICsyMTI1LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOwogCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSAxQzkwNEZENDBC
QTlERDBGMDA4MUU5RDAgLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOwogCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlPVEhFUl9DRkxBR1MgPSAiLURFTkFCTEVfVU5ET19NQU5BR0VSIjsKIAkJ
CQlTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9IE5POwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNl
OwpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNpb24gMTIx
MDg2KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcgQEAgdm9p
ZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRTZXRTZWxlYwogCiB2b2lkIEVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAvLyBSZW1vdmUgdGhlIG9sZGVzdCBp
dGVtIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heGltdW0gY2FwYWNpdHkgZm9yIHRoZSBzdGFjay4K
ICAgICBpZiAobV91bmRvU3RhY2suc2l6ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKICAg
ICAgICAgbV91bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKQEAgLTI2OCwyNyArMjY5LDQ0IEBAIHZv
aWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmQKICAgICAgICAgbV9yZWRvU3Rh
Y2suY2xlYXIoKTsKIAogICAgIG1fdW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgbV9yZWRvU3RhY2su
Y2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblVu
ZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV91
bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6Y2FuQ29weUN1dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApA
QCAtMzAzLDYgKzMyMSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuUGFzdGUo
RnIKIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIEVkaXRDb21tYW5k
U3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQ
dHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzExLDEwICszMzAsMTIgQEAgdm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1bmRvKCkKICAgICAgICAgLy8gVW5hcHBseSB3aWxsIGNh
bGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAg
ICAgICBjb21tYW5kLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBi
YWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBjb21t
YW5kKCpiYWNrKTsKQEAgLTMyNyw2ICszNDgsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnJlZG8oKQogICAgICAgICBjb21tYW5kLT5yZWFwcGx5KCk7CiAgICAgICAgIG1faW5SZWRv
ID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBDdHJs
S2V5ID0gMSA8PCAwOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xp
ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyMTA4NikKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsMjIg
KzI5NSwzMiBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OmRpZFNldFNlbGVjdGlvblR5CiAKIHZv
aWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVw
PiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChtX3VuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5y
ZW1vdmVGaXJzdCgpOyAvLyBkcm9wIG9sZGVzdCBpdGVtIG9mZiB0aGUgZmFyIGVuZAogICAgIGlm
ICghbV9pblJlZG8pCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgbV91bmRvU3Rh
Y2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8
VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV9yZWRv
U3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5k
aWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xlYXIoKTsK
ICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
SW1wbDo6Y2FuQ29weUN1dChGcmFtZSogZnJhbWUsIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApA
QCAtMzI5LDE2ICszMzksMjUgQEAgYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5QYXN0ZShGcmFt
ZSogZgogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOwor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRJ
bXBsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBy
ZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dW5kbygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBVbmRvTWFuYWdl
clN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVm
UHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM0NiwxMCArMzY1LDEyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6dW5kbygpCiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICAgICAg
Ly8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRo
ZSByZWRvIHN0YWNrLgogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6
OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkp
IHsKICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9yZWRvU3Rh
Y2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gc3RlcCgqYmFjayk7CkBAIC0zNjEs
NiArMzgyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWRvKCkKICAgICAgICAgLy8gcmVh
cHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSB1bmRv
IHN0YWNrLgogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgogfQogCiAv
LwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMjEwODYpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
MjAgKzE3OCwzMCBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkU2V0U2VsZWN0aW9uVHlwCiAK
IHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxV
bmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoIW1f
aXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFjay5wcmVw
ZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJlZG9TdGFj
ay5wcmVwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2suY2xlYXIoKTsKICAgICBy
ZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2Fu
Q29weUN1dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApAQCAtMjA2LDI0ICsyMTYs
MzUgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhblBhc3RlKEZyYW1lKiwgYgogCiBib29sIEVk
aXRvckNsaWVudEVmbDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhblJlZG8oKSBjb25z
dAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhcmVkb1N0YWNrLmlz
RW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50RWZsOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBp
ZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9
IHVuZG9TdGFjay50YWtlRmlyc3QoKTsKICAgICAgICAgc3RlcC0+dW5hcHBseSgpOwogICAgIH0K
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVkbygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSByZWRvU3RhY2sudGFrZUZpcnN0KCk7CiAKQEAgLTIzMiw2
ICsyNTMsNyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVkbygpCiAgICAgICAgIHN0ZXAtPnJl
YXBwbHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgogfQog
CiBib29sIEVkaXRvckNsaWVudEVmbDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiBub2RlLCBSYW5n
ZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJKHJldmlz
aW9uIDEyMTA4NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCwyMiArMjg4LDMyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0YKIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJl
Z2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmICh1bmRvU3RhY2suc2l6ZSgpID09
IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7
CiAgICAgaWYgKCFtX2lzSW5SZWRvKQogICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKICAgICB1
bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIHJlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6Y2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVuZG9TdGFjay5j
bGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50OjpjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0CkBAIC0zMTgsMjYgKzMyOCwzNyBAQCBib29sIEVkaXRvckNsaWVudDo6Y2FuUGFzdGUoV2Vi
Q29yZTo6RnJhCiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6
Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJu
ICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9T
dGVwPiBzdGVwKCooLS11bmRvU3RhY2suZW5kKCkpKTsKICAgICAgICAgdW5kb1N0YWNrLnJlbW92
ZSgtLXVuZG9TdGFjay5lbmQoKSk7CiAgICAgICAgIC8vIHVuYXBwbHkgd2lsbCBjYWxsIHVzIGJh
Y2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICAgICAgc3Rl
cC0+dW5hcHBseSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVk
bygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewog
ICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXJlZG9TdGFjay5lbmQo
KSkpOwogICAgICAgICByZWRvU3RhY2sucmVtb3ZlKC0tcmVkb1N0YWNrLmVuZCgpKTsKQEAgLTM0
OCw2ICszNjksNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6cmVkbygpCiAgICAgICAgIHN0ZXAtPnJl
YXBwbHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgogfQog
CiBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiBub2RlLCBSYW5nZSog
cmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTIx
MDg2KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSwxMiArMjM5LDE2IEBAIGJvb2wgRWRpdG9yQ2xpZW50
UXQ6OnNlbGVjdFdvcmRCZWZvcmVNZW4KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJV
bmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1h
aW5GcmFtZSgpOwogICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRp
dG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAq
LykpCiAgICAgICAgIHJldHVybjsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5wdXNoKG5ldyBV
bmRvU3RlcFF0KHN0ZXApKTsKICNlbmRpZiAvLyBRVF9OT19VTkRPU1RBQ0sKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJl
Z2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikKQEAgLTI1
Myw5ICsyNTcsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVAog
CiB2b2lkIEVkaXRvckNsaWVudFF0OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVy
biBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jbGVhcigpOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9v
bCBFZGl0b3JDbGllbnRRdDo6Y2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVs
dFZhbHVlKSBjb25zdApAQCAtMjcwLDM4ICsyNzYsNTAgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6
Y2FuUGFzdGUoV2ViQ29yZTo6RgogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5VbmRvKCkgY29u
c3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZmRlZiBRVF9OT19VTkRPU1RBQ0sK
ICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygp
LT5jYW5VbmRvKCk7CiAjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsK
ICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblJlZG8oKTsKICNlbmRp
ZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGll
bnRRdDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05P
X1VORE9TVEFDSwogICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CiAgICAgbV9wYWdlLT51bmRvU3Rh
Y2soKS0+dW5kbygpOwogICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOwogI2VuZGlmCisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIG1faW5VbmRvUmVkbyA9IHRydWU7
CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cmVkbygpOwogICAgIG1faW5VbmRvUmVkbyA9IGZh
bHNlOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6c2hvdWxkSW5z
ZXJ0Tm9kZShOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rp
b24pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjEwODYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNi0yMSAgU3Vrb2xzYWsgU2Fr
c2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG9N
YW5hZ2VyJ3MgdW5kbywgcmVkbywgbGVuZ3RoLCBwb3NpdGlvbiwgY2xlYXJVbmRvLCBhbmQgY2xl
YXJSZWRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04
OTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
ZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVk
by5odG1sOiBBZGRlZC4KKwogMjAxMi0wNi0yMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBUZXh0IHdpdGggdGV4dC1vdmVyZmxvdzplbGxpcHNpcyBh
bmQgdGV4dC1hbGlnbjpyaWdodCBpcyBsZWZ0IGFsaWduZWQKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVu
ZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNCBAQAordGVzdAorCitQQVNTIFVudGl0bGVkIAorCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXIt
dW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcyIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHk+Cis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPGRpdiBp
ZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7CisgICAgYXNzZXJ0X2lkbF9h
dHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAgYXNzZXJ0X2lkbF9h
dHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAgIGFzc2VydF9vd25f
cHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOworICAgIAorICAgIC8v
IHN0YXJ0CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDAp
OworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOwor
ICAgIAorICAgIC8vIGluc2VydCB0ZXh0CisgICAgdmFyIGVkaXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZWRpdCIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihl
ZGl0LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAi
dGVzdCIpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0
aCA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9
PSAwKTsKKyAgICAKKyAgICAvLyB0aGVuIGJvbGQgaXQKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVu
dC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlZGl0KTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJCb2xkIiwgZmFsc2UsIG51bGwpOworICAgIAorICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVy
SFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKKyAgICAKKyAgICAvLyB0aGVuIHVuZG8KKyAgICBkb2N1
bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQu
dW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9N
YW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICJ0ZXN0Iik7CisgICAgCisgICAgLy8gdGhlbiB1bmRvCisgICAgZG9jdW1lbnQudW5kb01hbmFn
ZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxl
bmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlv
biA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7CisgICAgCisg
ICAgLy8gdGhlbiByZWRvCisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOworICAgIAorICAgIC8vIHRoZW4gcmVk
bworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1
ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5p
bm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7Cit9KQorCis8L3NjcmlwdD4KKzwvYm9keT4KKzwv
aHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151328</attachid>
            <date>2012-07-09 15:05:27 -0700</date>
            <delta_ts>2012-07-09 18:17:00 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-89722-20120709150712.patch</filename>
            <type>text/plain</type>
            <size>53003</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTA5ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGlj
dGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEpT
RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNVbmRvTWFuYWdlcjo6dHJhbnNh
Y3QpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAg
KiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpE
T01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpj
YW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5kbyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWRvKToK
KyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVu
ZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6
dHJhbnNhY3QpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChX
ZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVnaXN0ZXJSZWRvU3RlcCk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFn
ZXI6OnZpc2l0VHJhbnNhY3Rpb25zKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVbmRvTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFu
YWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJlZG8pOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01h
bmFnZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcvVW5kb1N0ZXAuaDoKKyAgICAgICAgKFVuZG9T
dGVwKToKKwogMjAxMi0wNy0wOSAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW5hbWUgV2ViQ29yZTo6V2ViS2l0TXV0YXRpb25PYnNlcnZlciB0byBXZWJDb3Jl
OjpNdXRhdGlvbk9ic2VydmVyCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMjE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTEzOTksNiArMTM5OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAgXApAQCAtMTUyMCw2ICsxNTIyLDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMTA2LDYgKzIxMDksNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxMjIxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzUsNiArMjc1LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAg
XApAQCAtMzU3LDYgKzM1OCw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50MzJB
cnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQkocmV2aXNpb24gMTIyMTU5KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDEzIEBAIElGIChFTkFCTEVfV0VCX0lOVEVOVFMp
CiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9VTkRPX01BTkFHRVIpCisgICAgTElTVCAo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0
aW9uLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAorICAg
ICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNP
UkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjIxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU0OSwzICsyNTQ5LDkgQEAgX19aTjdXZWJDb3Jl
MjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9fWk43V2ViQ29y
ZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5n
Uk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNlbmRp
ZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1bWVudDExdW5k
b01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19fWk43V2ViQ29y
ZTExVW5kb01hbmFnZXI0dW5kb0V2CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEyMjE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTk2NSw2ICsxOTY1LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RpcmVj
dG9yeUVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEaXJlY3Rv
cnlFbnRyeVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlv
bi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCcsCkBAIC0yMDY5LDYgKzIwNzEsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMjE1
OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTkzNSw2ICsxOTM1LDEwIEBACiAJCTdBRjExQTVBMTJFNzI3NDkw
MDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8q
IFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRG
RjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4
MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0IxODYyMjcxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9NVHJh
bnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxODYyMjUxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9
OworCQk3QjE4NjIyODE1QUI4OTVGMDBFNURENzUgLyogSlNET01UcmFuc2FjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxODYyMjYxNUFCODk1
RjAwRTVERDc1IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0IxODYyMkMxNUFCODk5
QjAwRTVERDc1IC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjE4NjIyQjE1QUI4OTlCMDBFNURENzUgLyogRE9NVHJhbnNh
Y3Rpb24uaCAqLzsgfTsKKwkJN0IxODYyMkUxNUFCODlDQTAwRTVERDc1IC8qIEpTVW5kb01hbmFn
ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IxODYyMkQxNUFCODlDQTAwRTVERDc1IC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICov
OyB9OwogCQk3QjFFQTBDRTE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDQzE1NzZD
NUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCMUVBMENGMTU3NkM1
QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFu
YWdlci5oICovOyB9OwogCQk3QjkxODREMjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0
Q0YxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKQEAgLTkwNTYsNiAr
OTA2MCwxMCBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRp
bWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2
MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IxODYyMjUxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9N
VHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNE
T01UcmFuc2FjdGlvbi5jcHA7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJN0IxODYyMjYxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNET01UcmFuc2FjdGlvbi5oOyBwYXRo
ID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3QjE4NjIyQjE1QUI4OTlC
MDBFNURENzUgLyogRE9NVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRE9NVHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJN0IxODYyMkQxNUFCODlDQTAwRTVERDc1IC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNVbmRvTWFuYWdlckN1c3Rv
bS5jcHA7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
N0IxRUEwQ0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkzIC8q
IFVuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVu
ZG9NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTU3LDYgKzE2
OTY1LDcgQEAKIAkJCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJu
YXRpdmUuaCAqLywKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29t
bWFuZC5jcHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuaCAqLywKKwkJCQk3QjE4NjIyQjE1QUI4OTlCMDBFNURENzUgLyogRE9NVHJhbnNhY3Rp
b24uaCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICov
LAogCQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJ
CQkJOTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0xOTky
Myw2ICsxOTkzMiw4IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmlu
ZGluZy5oICovLAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9i
amVjdC5jcHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFs
T2JqZWN0LmggKi8sCisJCQkJN0IxODYyMjUxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9NVHJhbnNh
Y3Rpb24uY3BwICovLAorCQkJCTdCMTg2MjI2MTVBQjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5z
YWN0aW9uLmggKi8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93
QmFzZS5jcHAgKi8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93
QmFzZS5oICovLAogCQkJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1No
ZWxsLmNwcCAqLywKQEAgLTIwMTY0LDYgKzIwMTc1LDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlD
MDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUxMDUw
OEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkwNUEx
NEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAorCQkJ
CTdCMTg2MjJEMTVBQjg5Q0EwMEU1REQ3NSAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLywK
IAkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5j
cHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNX
ZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovLApAQCAtMjUxNzksNiArMjUxOTEsOCBAQAogCQkJ
CTRGMzJCQjFCMTRGQTg1RTgwMEY2QzFBMyAvKiBNZW1vcnlJbnN0cnVtZW50YXRpb24uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE4ODJEQTIzMTU5Mzg0OEQwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAgLyogVVRJVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjE4NjIyODE1QUI4OTVGMDBFNURENzUgLyog
SlNET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxODYyMkMxNUFCODk5QjAw
RTVERDc1IC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4MjM0LDYgKzI4
MjQ4LDggQEAKIAkJCQk1MDk4N0MyNjE1N0Q2NzZEMDBCREE4MzUgLyogQ3VzdG9tRmlsdGVyR2xv
YmFsQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBODgyREEyMDE1OTM4NDZBMDAwMTE1
RUQgLyogQ1NTVG9TdHlsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxRkFGQkYxODE1QTVG
QTZFMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0IxODYy
MjcxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJN0IxODYyMkUxNUFCODlDQTAwRTVERDc1IC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CkBAIC0yODM0OCw2ICsyODM2NCw3IEBACiAJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCVNUUklQX0lOU1RBTExFRF9Q
Uk9EVUNUID0gTk87CisJCQkJU1lNUk9PVCA9IC9Wb2x1bWVzL3Byb2plY3Qvd2Via2l0L1dlYktp
dEJ1aWxkOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lv
biAxMjIxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAiSlNET01T
dHJpbmdMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTRE9NVHJh
bnNhY3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5jbHVkZSAi
SlNET01XaW5kb3dDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwuY3BwIgpA
QCAtMTU1LDYgKzE1Niw3IEBACiAjaW5jbHVkZSAiSlNVaW50MzJBcnJheUN1c3RvbS5jcHAiCiAj
aW5jbHVkZSAiSlNVaW50OEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1VpbnQ4Q2xhbXBl
ZEFycmF5Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRB
bmltYXRpb25MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZyYW1lUnVs
ZUN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5z
YWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisKKyNpbmNs
dWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJKU0RpY3Rpb25hcnkuaCIKKyNpbmNs
dWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdl
ci5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRyYW5zYWN0
aW9uKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3Js
ZCogaXNvbGF0ZWRXb3JsZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6
IG1fd3JhcHBlcih3cmFwcGVyKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQp
CisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdW5kb01hbmFnZXIoMCkKK3sKKyAg
ICBpZiAod3JhcHBlcikKKyAgICAgICAgbV9kaWN0aW9uYXJ5LnNldE1heUJlTnVsbCgqbV9pc29s
YXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGZ1bmN0aW9uKTsKKyAgICBlbHNlCisg
ICAgICAgIEFTU0VSVCghZnVuY3Rpb24pOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OnZp
c2l0RGljdGlvbmFyeShKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGlmIChtX2Rp
Y3Rpb25hcnkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2RpY3Rpb25hcnkpOworfQorCit2
b2lkIEpTRE9NVHJhbnNhY3Rpb246OmNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7Cisg
ICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlk
ZGVuKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBt
X2lzb2xhdGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKKyAgICAKKyAgICBKU0RpY3Rpb25hcnkganNEaWN0aW9uYXJ5KGV4ZWMsIG1fZGljdGlvbmFy
eS5nZXQoKSk7CisgICAgaWYgKCFqc0RpY3Rpb25hcnkuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgaWYgKCFqc0RpY3Rpb25hcnku
Z2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF2YWx1
ZS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU1ZhbHVlIGZ1bmN0
aW9uID0gdmFsdWUuanNWYWx1ZSgpOworICAgIAorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAg
ICAKKyAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZnVuY3Rpb247
CisgICAgICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAg
ICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1
ZSwgYXJncyk7CisgICAgfQorfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmV4ZWN1dGUoKQor
eworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJleGVjdXRlIik7Cit9CisKK3Zv
aWQgSlNET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1fY29u
dGV4dC5nZXQoKSwgInVuZG8iKTsKKyAgICBpZiAobV91bmRvTWFuYWdlcikKKyAgICAgICAgbV91
bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsKK30KKwordm9pZCBKU0RPTVRyYW5z
YWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAi
cmVkbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5y
ZWdpc3RlclVuZG9TdGVwKHRoaXMpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNET01UcmFuc2FjdGlvbl9oCisjZGVmaW5lIEpT
RE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUg
IkRPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRl
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xh
c3MgVW5kb01hbmFnZXI7CisKK2NsYXNzIEpTRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgRE9NVHJh
bnNhY3Rpb24geworcHVibGljOgorICAgIEpTRE9NVHJhbnNhY3Rpb24oSlNDOjpKU09iamVjdCog
ZGljdGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8SlNET01UcmFuc2FjdGlvbj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGRpY3Rpb25h
cnksIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3Js
ZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSlNET01UcmFuc2FjdGlvbihkaWN0aW9uYXJ5LCB3cmFwcGVyLCBpc29s
YXRlZFdvcmxkLCBjb250ZXh0KSk7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB2aXNp
dERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBleGVjdXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1
YWwgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgT1ZFUlJJREUgeyByZXR1cm4gbV91bmRvTWFu
YWdlcjsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciogdW5k
b01hbmFnZXIpIE9WRVJSSURFIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9CisgICAg
Citwcml2YXRlOgorICAgIHZvaWQgY2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpOworICAgIAorICAgIEpTQzo6V3JpdGVCYXJyaWVy
PEpTQzo6SlNPYmplY3Q+IG1fZGljdGlvbmFyeTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU09iamVj
dD4gbV93cmFwcGVyOworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3Js
ZDsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OworICAgIFVu
ZG9NYW5hZ2VyICptX3VuZG9NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5k
b01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTVW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkpTRE9N
VHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU1VuZG9NYW5hZ2VyOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAg
SlNVbmRvTWFuYWdlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4oY2VsbCk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAg
ICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4s
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0
aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVu
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
CisgICAgdGhpc09iamVjdC0+aW1wbCgpLT52aXNpdFRyYW5zYWN0aW9ucyh2aXNpdG9yKTsKK30K
KworCitKU1ZhbHVlIEpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmSlNVbmRvTWFuYWdlcjo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgIEpTVW5kb01hbmFnZXIqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNVbmRvTWFuYWdlcio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVW5kb01hbmFnZXI6OnNfaW5mbyk7
CisgICAgVW5kb01hbmFnZXIqIGltcGwgPSBzdGF0aWNfY2FzdDxVbmRvTWFuYWdlcio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisgICAgCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIp
CisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50
c0Vycm9yKGV4ZWMpKTsKKyAgICAKKyAgICBKU1ZhbHVlIGRpY3Rpb25hcnkgPSBNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYg
KCFkaWN0aW9uYXJ5LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjKTsKKyAgICAKKyAgICBib29sIG1lcmdlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMs
IDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9Cb29sZWFuKCkpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIAorICAgIFJlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IEpT
RE9NVHJhbnNhY3Rpb246OmNyZWF0ZShkaWN0aW9uYXJ5LmdldE9iamVjdCgpLCB0aGlzVmFsdWUu
Z2V0T2JqZWN0KCksIGN1cnJlbnRXb3JsZChleGVjKSwgc2NyaXB0Q29udGV4dCk7CisgICAgCisg
ICAgaW1wbC0+dHJhbnNhY3QodHJhbnNhY3Rpb24sIG1lcmdlKTsKKyAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTIyMTU5KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CiAgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0
aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lZGl0QWN0aW9uOyB9CisjaWYgRU5BQkxF
KFVORE9fTUFOQUdFUikKKyAgICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiAgICAgdm9pZCBhcHBlbmQoU2ltcGxlRWRpdENv
bW1hbmQqKTsKICAgICBib29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4g
bV9lZGl0QWN0aW9uID09IEVkaXRBY3Rpb25DcmVhdGVMaW5rOyB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIERPTVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUgRE9NVHJhbnNhY3Rpb25faAorCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBTbG90VmlzaXRv
cjsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xh
c3MgRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkRPTVRyYW5zYWN0aW9uKCkgeyB9CisgICAgCisjaWYgVVNFKEpTQykKKyAgICB2aXJ0dWFs
IHZvaWQgdmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImKSB7IH07CisjZW5kaWYKKyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5h
cHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKKyAgICBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBFZGl0QWN0aW9uVW5z
cGVjaWZpZWQ7IH0KKyAgICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgdmlydHVhbCBVbmRvTWFuYWdlciogdW5kb01hbmFn
ZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKikg
PSAwOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCShyZXZpc2lvbiAxMjIxNTkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJUZXh0
RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21t
YW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyVHlwaW5nR2Vz
dHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFy
a3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhQ
YXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSByZWdpc3RlciBhIG5ldyB1bmRvIGNvbW1hbmQg
aWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAgICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRo
ZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSBjbWQ7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgICAgIGNs
aWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3Np
dGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2Vy
KCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9u
KCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1Nl
bGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0
aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRU
b1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFu
ZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAg
ICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2Vsc2UKKyAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZW5k
aWYgIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBA
IC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQ
dHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNl
bGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7
CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0
ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+
cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlmCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRl
bnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEyNDIsMjQgKzEyNTUsNDAgQEAgdm9pZCBFZGl0
b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIAogYm9vbCBFZGl0b3I6OmNhblVuZG8oKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGll
bnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjp1bmRv
KCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAg
ICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvcjo6Y2FuUmVkbygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnJl
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAg
ICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpkaWRCZWdp
bkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDEyMjE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5B
R0VSKQogCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNsdWRlICJOb2RlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ0LDYgKzQ1LDcgQEAgUGFzc1JlZlB0cjxVbmRvTWFu
YWdlcj4gVW5kb01hbmFnZXI6OmNyZQogCiBVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoTm9kZSog
aG9zdCkKICAgICA6IG1fdW5kb1Njb3BlSG9zdChob3N0KQorICAgICwgbV9pc0luUHJvZ3Jlc3Mo
ZmFsc2UpCiB7CiB9CiAKQEAgLTUyLDIxICs1NCwxMDMgQEAgdm9pZCBVbmRvTWFuYWdlcjo6dW5k
b1Njb3BlSG9zdERlc3Ryb3llZAogICAgIG1fdW5kb1Njb3BlSG9zdCA9IDA7CiB9CiAKLXZvaWQg
VW5kb01hbmFnZXI6OnVuZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6dHJhbnNhY3QoUGFzc1JlZlB0
cjxET01UcmFuc2FjdGlvbj4gcHJwVHJhbnNhY3Rpb24sIGJvb2wgbWVyZ2UpCiB7CisgICAgaWYg
KG1faXNJblByb2dyZXNzKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgUmVmUHRyPERPTVRy
YW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IHBycFRyYW5zYWN0aW9uOworICAgIHRyYW5zYWN0aW9u
LT5zZXRVbmRvTWFuYWdlcih0aGlzKTsKKyAgICAKKyAgICBjbGVhclJlZG8oKTsKKyAgICAKKyAg
ICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgdHJhbnNhY3Rpb24tPmV4ZWN1dGUoKTsKKyAg
ICBtX2lzSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIGlmICghbWVyZ2UgfHwgbV91bmRv
U3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gZW50
cnk7CisgICAgICAgIG1fdW5kb1N0YWNrLmFwcGVuZChlbnRyeSk7CisgICAgfQorICAgIG1fdW5k
b1N0YWNrLmxhc3QoKS5hcHBlbmQodHJhbnNhY3Rpb24pOwogfQogCi12b2lkIFVuZG9NYW5hZ2Vy
OjpyZWRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQogeworICAgIGlmIChtX2lzSW5Qcm9n
cmVzcyB8fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0
b3I8UmVmUHRyPFVuZG9TdGVwPiA+IGVtcHR5RW50cnk7CisgICAgbV9yZWRvU3RhY2suYXBwZW5k
KGVtcHR5RW50cnkpOworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICBWZWN0
b3I8UmVmUHRyPFVuZG9TdGVwPiA+IGVudHJ5ID0gbV91bmRvU3RhY2subGFzdCgpOworICAgIGZv
ciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5W2kg
LSAxXS0+dW5hcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAg
bV91bmRvU3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCi12b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVu
ZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6cmVkbygpCiB7CisgICAgaWYgKG1faXNJblByb2dyZXNz
IHx8IG1fcmVkb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxS
ZWZQdHI8VW5kb1N0ZXA+ID4gZW1wdHlFbnRyeTsKKyAgICBtX3VuZG9TdGFjay5hcHBlbmQoZW1w
dHlFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIFZlY3RvcjxS
ZWZQdHI8VW5kb1N0ZXA+ID4gZW50cnkgPSBtX3JlZG9TdGFjay5sYXN0KCk7CisgICAgZm9yIChz
aXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFd
LT5yZWFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3Jl
ZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5k
b1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gY21kKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jl
c3MpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBlbnRyeTsKKyAgICAgICAg
ZW50cnkuYXBwZW5kKGNtZCk7CisgICAgICAgIG1fdW5kb1N0YWNrLmFwcGVuZChlbnRyeSk7Cisg
ICAgICAgIGNsZWFyUmVkbygpOworICAgIH0gZWxzZQorICAgICAgICBtX3VuZG9TdGFjay5sYXN0
KCkuYXBwZW5kKGNtZCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAo
UGFzc1JlZlB0cjxVbmRvU3RlcD4gY21kKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jlc3MpIHsK
KyAgICAgICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBlbnRyeTsKKyAgICAgICAgZW50cnku
YXBwZW5kKGNtZCk7CisgICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeSk7CisgICAgfSBl
bHNlCisgICAgICAgIG1fcmVkb1N0YWNrLmxhc3QoKS5hcHBlbmQoY21kKTsKK30KKworI2lmIFVT
RShKU0MpCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soY29uc3QgVmVjdG9y
PFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gPiYgc3RhY2ssIEpTQzo6U2xvdFZpc2l0b3ImIHZp
c2l0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFjay5zaXplKCk7ICsraSkg
eworICAgICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+JiBlbnRyeSA9IHN0YWNr
W2ldOworICAgICAgICBpZiAoZW50cnkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGlmIChlbnRyeVswXS0+aXNET01UcmFuc2FjdGlvbigpKSB7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVudHJ5LnNpemUoKTsgKytqKSB7CisgICAgICAgICAg
ICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5nZXQoKTsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoc3RlcC0+aXNET01UcmFuc2FjdGlvbigpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxET01UcmFuc2FjdGlvbio+KHN0ZXApLT52aXNpdERpY3Rpb25hcnkodmlzaXRvcik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNs
ZWFyUmVkbygpCit2b2lkIFVuZG9NYW5hZ2VyOjp2aXNpdFRyYW5zYWN0aW9ucyhKU0M6OlNsb3RW
aXNpdG9yJiB2aXNpdG9yKQogeworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayhtX3VuZG9T
dGFjaywgdmlzaXRvcik7CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKG1fcmVkb1N0YWNr
LCB2aXNpdG9yKTsKIH0KKyNlbmRpZgogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVW5kb01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmgJKHJldmlzaW9uIDEyMjE1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VW5kb01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzIgKzMzLDg4IEBACiAKICNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBTbG90VmlzaXRvcjsKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBE
T01UcmFuc2FjdGlvbjsKIGNsYXNzIE5vZGU7CiAKIGNsYXNzIFVuZG9NYW5hZ2VyIDogcHVibGlj
IFJlZkNvdW50ZWQ8VW5kb01hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxVbmRvTWFuYWdlcj4gY3JlYXRlKE5vZGUqIGhvc3QpOwogICAgIHZvaWQgdW5kb1Njb3BlSG9z
dERlc3Ryb3llZCgpOworICAgIAorICAgIHZvaWQgdHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFu
c2FjdGlvbj4sIGJvb2wpOwogCiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7Cisg
ICAgCisgICAgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25n
IHBvc2l0aW9uKCkgY29uc3Q7CiAKICAgICB2b2lkIGNsZWFyVW5kbygpOwogICAgIHZvaWQgY2xl
YXJSZWRvKCk7CisgICAgCisgICAgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CisgICAgYm9vbCBjYW5S
ZWRvKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8
VW5kb1N0ZXA+IGNtZCk7CisgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5k
b1N0ZXA+IGNtZCk7CisKKyNpZiBVU0UoSlNDKQorICAgIHZvaWQgdmlzaXRUcmFuc2FjdGlvbnMo
SlNDOjpTbG90VmlzaXRvciYpOworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgVW5kb01hbmFnZXIo
Tm9kZSogaG9zdCk7CiAgICAgTm9kZSogbV91bmRvU2NvcGVIb3N0OwotfTsKICAgICAKKyAgICBW
ZWN0b3I8VmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiA+IG1fdW5kb1N0YWNrOworICAgIFZlY3Rv
cjxWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+ID4gbV9yZWRvU3RhY2s7CisgICAgYm9vbCBtX2lz
SW5Qcm9ncmVzczsKK307CisKK2lubGluZSB1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpsZW5n
dGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFj
ay5zaXplKCk7CiB9Ci0gICAgCisKK2lubGluZSB1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpw
b3NpdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVkb1N0YWNrLnNpemUoKTsKK30KKwor
aW5saW5lIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kbygpCit7CisgICAgbV91bmRvU3RhY2su
Y2xlYXIoKTsKK30KKworaW5saW5lIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbygpCit7Cisg
ICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKK30KKworaW5saW5lIGJvb2wgVW5kb01hbmFnZXI6OmNh
blVuZG8oKSBjb25zdAoreworICAgIHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOworfQor
CitpbmxpbmUgYm9vbCBVbmRvTWFuYWdlcjo6Y2FuUmVkbygpIGNvbnN0Cit7CisgICAgcmV0dXJu
ICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7Cit9CisKK30KKwogI2VuZGlmCiAKICNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHJldmlzaW9uIDEyMjE1OSkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTYgQEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCi0g
ICAgICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUgorICAgICAgICBDb25kaXRpb25hbD1VTkRP
X01BTkFHRVIsCisgICAgICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uCiAgICAgXSBVbmRvTWFuYWdl
ciB7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFuc2Fj
dGlvbiwgaW4gYm9vbGVhbiBtZXJnZSk7CisKICAgICAgICAgdm9pZCB1bmRvKCk7CiAgICAgICAg
IHZvaWQgcmVkbygpOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9u
ZyBwb3NpdGlvbjsKIAogICAgICAgICB2b2lkIGNsZWFyVW5kbygpOwogICAgICAgICB2b2lkIGNs
ZWFyUmVkbygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIy
MTU5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00Myw2ICs0Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rp
b24gZWRpdGluZ0FjdGlvbigpIGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQor
ICAgIHZpcnR1YWwgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9
OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lv
biAxMjIxNTkpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsNyBA
QCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZFNldFNlbGVjCiAKIHZvaWQgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBz
dGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIC8vIFJlbW92ZSB0aGUgb2xk
ZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hlZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0
YWNrLgogICAgIGlmIChtX3VuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRo
KQogICAgICAgICBtX3VuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwpAQCAtMjY4LDI3ICsyNjksNDQg
QEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZAogICAgICAgICBtX3Jl
ZG9TdGFjay5jbGVhcigpOwogCiAgICAgbV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRC
bGFja0JlcnJ5OjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV9yZWRvU3RhY2suYXBwZW5kKHN0ZXAp
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9T
dGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJu
ICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblJlZG8oKSBjb25zdAogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0
eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0CkBAIC0zMDMsNiArMzIxLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Q
YXN0ZShGcgogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgRWRpdENv
bW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAg
IFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0zMTEsMTAgKzMzMCwxMiBAQCB2
b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogICAgICAgICAvLyBVbmFwcGx5IHdp
bGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2su
CiAgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIEVkaXRDb21tYW5kU3RhY2s6Oml0ZXJh
dG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+
IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3LDYgKzM0OCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6cmVkbygpCiAgICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKICAgICAgICAgbV9p
blJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVk
IEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTIyMTU5KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHkK
IAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5k
b1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKG1fdW5k
b1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0
YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRyb3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBmYXIgZW5kCiAg
ICAgaWYgKCFtX2luUmVkbykKICAgICAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKICAgICBtX3Vu
ZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1Jl
ZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBt
X3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OmNsZWFyVW5kb1JlZG9PcGVyYXRp
b25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVh
cigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JD
bGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZyYW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNv
bnN0CkBAIC0zMjksMTYgKzMzOSwyNSBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblBhc3Rl
KEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNs
aWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFVuZG9N
YW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAg
ICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzQ2LDEwICszNjUsMTIgQEAgdm9p
ZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKICAgICAgICAgc3RlcC0+dW5hcHBseSgpOwogICAg
ICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9u
dG8gdGhlIHJlZG8gc3RhY2suCiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50
SW1wbDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJl
ZG8oKSkgewogICAgICAgICBVbmRvTWFuYWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3Jl
ZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAg
LTM2MSw2ICszODIsNyBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZG8oKQogICAgICAgICAv
LyByZWFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhl
IHVuZG8gc3RhY2suCiAgICAgICAgIG1faW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9
CiAKIC8vCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyMjE1OSkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OCwyMCArMTc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25U
eXAKIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVm
UHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlm
ICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNr
LnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgog
fQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQ
dHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVk
b1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMo
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVuZG9TdGFjay5jbGVhcigpOwog
ICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZs
OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yMDYsMjQg
KzIxNiwzNSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBiCiAKIGJv
b2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbygp
IGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFyZWRvU3Rh
Y2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBz
dGVwID0gdW5kb1N0YWNrLnRha2VGaXJzdCgpOwogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAg
ICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJlZG9TdGFjay50YWtlRmlyc3QoKTsKIApAQCAt
MjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKICAgICAgICAgc3Rl
cC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlm
CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUs
IFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAko
cmV2aXNpb24gMTIyMTU5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDIyICsyODgsMzIgQEAgdm9p
ZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRgogCiB2b2lkIEVkaXRvckNsaWVu
dDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0
ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKHVuZG9TdGFjay5zaXpl
KCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmly
c3QoKTsKICAgICBpZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwog
ICAgIHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVw
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9S
ZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0
YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBF
ZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1
ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5QYXN0
ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHko
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xp
ZW50OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBy
ZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6
VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2su
cmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwg
dXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAgICAg
ICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50
OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygp
KSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNr
LmVuZCgpKSk7CiAgICAgICAgIHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpA
QCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICAgICAgc3Rl
cC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlm
CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJh
bmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lv
biAxMjIxNTkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDEyICsyMzksMTYgQEAgYm9vbCBFZGl0b3JD
bGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdp
c3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAg
RnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNl
ZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1l
LT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVu
ZG9zICovKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2go
bmV3IFVuZG9TdGVwUXQoc3RlcCkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSworI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRR
dDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KQpA
QCAtMjUzLDkgKzI1NywxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVw
KFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAg
cmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAjZW5kaWYKKyNlbmRpZgogfQog
CiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBk
ZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yNzAsMzggKzI3Niw1MCBAQCBib29sIEVkaXRvckNsaWVu
dFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpGCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8o
KSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9T
VEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0
YWNrKCktPmNhblVuZG8oKTsKICNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZh
bHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuUmVkbygpOwog
I2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRv
ckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYg
UVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVu
ZG9TdGFjaygpLT51bmRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0g
dHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5yZWRvKCk7CiAgICAgbV9pblVuZG9SZWRv
ID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91
bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9u
IGFjdGlvbikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjE1OSkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTIxICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5k
by1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTA5ICBWaW5jZW50IFNjaGVpYiAgPHNjaGVp
YkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVmYWN0b3IgY29tbW9uIFBvaW50ZXIgTG9jayB0
ZXN0IGNvZGUgdG8gYSBoYXJuZXNzLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0IEBACit0ZXN0CisKK1BBU1MgVW50aXRsZWQgCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKzwhZG9j
dHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9
ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2
PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1
bWVudC51bmRvTWFuYWdlciwgInVuZG8iKTsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1
bWVudC51bmRvTWFuYWdlciwgInJlZG8iKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLCAibGVuZ3RoIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1
bWVudC51bmRvTWFuYWdlciwgInBvc2l0aW9uIik7CisgICAgCisgICAgLy8gc3RhcnQKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMCk7CisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgCisgICAgLy8g
aW5zZXJ0IHRleHQKKyAgICB2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0
Iik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXQsIDApOworICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICJ0ZXN0Iik7CisgICAg
CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDEpOworICAg
IGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIAor
ICAgIC8vIHRoZW4gYm9sZCBpdAorICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXQpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkJv
bGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01h
bmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
LnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50
ZXN0PC9iPiIpOworICAgIAorICAgIC8vIHRoZW4gdW5kbworICAgIGRvY3VtZW50LnVuZG9NYW5h
Z2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5s
ZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRp
b24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsKKyAg
ICAKKyAgICAvLyB0aGVuIHVuZG8KKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci51bmRvKCk7Cisg
ICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOwor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDIpOworICAg
IGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIiKTsKKyAgICAKKyAgICAvLyB0aGVuIHJl
ZG8KKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICJ0ZXN0Iik7CisgICAgCisgICAgLy8gdGhlbiByZWRvCisgICAgZG9jdW1l
bnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFu
YWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAi
PGI+dGVzdDwvYj4iKTsKK30pCisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151376</attachid>
            <date>2012-07-09 18:17:05 -0700</date>
            <delta_ts>2012-07-10 16:44:58 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-89722-20120709181849.patch</filename>
            <type>text/plain</type>
            <size>55312</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjE2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTA5ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGlj
dGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEpT
RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6SlNVbmRvTWFuYWdlcjo6dHJhbnNh
Y3QpOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAg
KiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpE
T01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpj
YW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5kbyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWRvKToK
KyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVu
ZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6
dHJhbnNhY3QpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChX
ZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVnaXN0ZXJSZWRvU3RlcCk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFn
ZXI6OnZpc2l0VHJhbnNhY3Rpb25zKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVbmRvTWFuYWdl
cik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdl
YkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFu
YWdlcjo6Y2xlYXJVbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJl
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OmNhblJlZG8pOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01h
bmFnZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcvVW5kb1N0ZXAuaDoKKyAgICAgICAgKFVuZG9T
dGVwKToKKwogMjAxMi0wNy0wOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbY2hyb21pdW1dIERlY291cGxlIFJlbmRlclBhc3MgZHJhd2luZyBmcm9tIEND
UmVuZGVyU3VyZmFjZQpJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lv
biAxMjIxNjApCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzk5LDYgKzEzOTksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0Jhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIFwKQEAgLTE1MjAsNiArMTUyMiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIFwK
KwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVs
ZUN1c3RvbS5jcHAgXApAQCAtMjEwNiw2ICsyMTA5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVybmF0aXZlLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlvbi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTIy
MTYwKQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMjc1
LDYgKzI3NSw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCisgICAgICAg
IGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIFwKQEAg
LTM1Nyw2ICszNTgsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlD
dXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAogICAgICAgICBiaW5k
aW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9q
cy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJ
KHJldmlzaW9uIDEyMjE2MCkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29ya2lu
ZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwxMyBAQCBJRiAoRU5BQkxFX1dFQl9JTlRFTlRTKQogICAg
ICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVU5ET19NQU5BR0VSKQorICAgIExJU1QgKEFQUEVO
RCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5j
cHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAKKyAgICApCitF
TkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJTkRJTkdTCiAgICAgJHtXRUJDT1JFX0RJ
Un0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCiApCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkocmV2aXNpb24gMTIyMTYwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTI1NDksMyArMjU0OSw5IEBAIF9fWk43V2ViQ29yZTI3QWx0
ZXJuYXRpdmVUZXh0VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0VGV4dEFsdGVybmF0aXZlV2l0
aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1JhbmdlCiBfX1pON1dlYkNvcmUzMmNv
bGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0cmlidXRlZFN0cmluZ1JOM1dU
RjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VFTG0wRUVFCiAjZW5kaWYKKwor
I2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCitfX1pON1dlYkNvcmU4RG9jdW1lbnQxMXVuZG9NYW5h
Z2VyRXYKK19fWk43V2ViQ29yZTExVW5kb01hbmFnZXI0cmVkb0V2CitfX1pON1dlYkNvcmUxMVVu
ZG9NYW5hZ2VyNHVuZG9FdgorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAx
MjIxNjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAg
LTE5NjUsNiArMTk2NSw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEaXJlY3RvcnlF
bnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5RW50
cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEb2N1bWVudEN1
c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3Bw
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0VudHJ5U3luY0N1c3RvbS5jcHAnLApAQCAtMjA2OSw2ICsyMDcxLDcgQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
VW5kb01hbmFnZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYkdM
UmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNX
ZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjIxNjApCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE5MzUsNiArMTkzNSwxMCBAQAogCQk3QUYxMUE1QTEyRTcyNzQ5MDA2MUYy
M0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9y
UnVudGltZUFnZW50LmggKi87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3Jp
cHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEz
Mjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyog
U2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTdCMTg2MjI3MTVBQjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5zYWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
MTg2MjI1MTVBQjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJ
N0IxODYyMjgxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMTg2MjI2MTVBQjg5NUYwMEU1
REQ3NSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi87IH07CisJCTdCMTg2MjJDMTVBQjg5OUIwMEU1
REQ3NSAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0IxODYyMkIxNUFCODk5QjAwRTVERDc1IC8qIERPTVRyYW5zYWN0aW9u
LmggKi87IH07CisJCTdCMTg2MjJFMTVBQjg5Q0EwMEU1REQ3NSAvKiBKU1VuZG9NYW5hZ2VyQ3Vz
dG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
MTg2MjJEMTVBQjg5Q0EwMEU1REQ3NSAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLzsgfTsK
IAkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0MxNTc2QzVCNTAw
NjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBDRjE1NzZDNUI1MDA2
MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIu
aCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NENGMTU3
NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CkBAIC05MDU2LDYgKzkwNjAs
MTAgQEAKIAkJN0FGMTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVC
ODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZE
NEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCMTg2MjI1MTVBQjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5z
YWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRE9NVHJh
bnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CisJCTdCMTg2MjI2MTVBQjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4u
Ly4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9u
Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0IxODYyMkIxNUFCODk5QjAwRTVE
RDc1IC8qIERPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IERPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTdCMTg2MjJEMTVBQjg5Q0EwMEU1REQ3NSAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
OyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5k
b01hbmFnZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdCMUVB
MENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRv
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjk1Nyw2ICsxNjk2NSw3
IEBACiAJCQkJQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZl
LmggKi8sCiAJCQkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
Y3BwICovLAogCQkJCUNFQ0FERkM1MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5k
LmggKi8sCisJCQkJN0IxODYyMkIxNUFCODk5QjAwRTVERDc1IC8qIERPTVRyYW5zYWN0aW9uLmgg
Ki8sCiAJCQkJOTMzMDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRBY3Rpb24uaCAqLywKIAkJ
CQk5MzMwOUQ5NDA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuY3BwICovLAogCQkJCTkz
MzA5RDk1MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5oICovLApAQCAtMTk5MjMsNiAr
MTk5MzIsOCBAQAogCQkJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcu
aCAqLywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3Qu
Y3BwICovLAogCQkJCUUxQzM2QzAyMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVj
dC5oICovLAorCQkJCTdCMTg2MjI1MTVBQjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5zYWN0aW9u
LmNwcCAqLywKKwkJCQk3QjE4NjIyNjE1QUI4OTVGMDBFNURENzUgLyogSlNET01UcmFuc2FjdGlv
bi5oICovLAogCQkJCUJDNjkzMjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2Uu
Y3BwICovLAogCQkJCUJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2Uu
aCAqLywKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5j
cHAgKi8sCkBAIC0yMDE2NSw2ICsyMDE3Niw3IEBACiAJCQkJNDlFRUNGNzYxMDUwOEQ5QzAwMDk5
RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc1MTA1MDhEOUMw
MDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXlDdXN0b20uY3BwICovLAogCQkJCTkxQTM5MDVBMTRDMEY2
MTEwMEY2NzkwMSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCAqLywKKwkJCQk3QjE4
NjIyRDE1QUI4OUNBMDBFNURENzUgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi8sCiAJCQkJ
RkQ4RTlCREUxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwICov
LAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5nQ29udGV4
dEN1c3RvbS5jcHAgKi8sCiAJCQkJMzE5RTY4ODYxMzI3QzkxMTAwNEFDOTFBIC8qIEpTV2ViS2l0
QW5pbWF0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTI1MTc5LDYgKzI1MTkxLDggQEAKIAkJCQk0RjMy
QkIxQjE0RkE4NUU4MDBGNkMxQTMgLyogTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODgyREEyMzE1OTM4NDhEMDAwMTE1RUQgLyogQ1NTVG9TdHlsZU1hcC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUZBRkJGMTkxNUE1RkE3NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IxODYyMjgxNUFCODk1RjAwRTVERDc1IC8qIEpTRE9N
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMTg2MjJDMTVBQjg5OUIwMEU1REQ3
NSAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yODIzNCw2ICsyODI0OCw4
IEBACiAJCQkJNTA5ODdDMjYxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENv
bnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4MkRBMjAxNTkzODQ2QTAwMDExNUVEIC8q
IENTU1RvU3R5bGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUZBRkJGMTgxNUE1RkE2RTAw
MDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTdCMTg2MjI3MTVB
Qjg5NUYwMEU1REQ3NSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTdCMTg2MjJFMTVBQjg5Q0EwMEU1REQ3NSAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMjgzNDcsNyArMjgzNjMsOSBAQAogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDFDREQ0NUU0MEJBOUM4
NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCU9USEVSX0NGTEFHUyA9ICItREVOQUJMRV9VTkRPX01BTkFHRVIiOwogCQkJCVNU
UklQX0lOU1RBTExFRF9QUk9EVUNUID0gTk87CisJCQkJU1lNUk9PVCA9IC9Wb2x1bWVzL3Byb2pl
Y3Qvd2Via2l0L1dlYktpdEJ1aWxkOwogCQkJfTsKIAkJCW5hbWUgPSBSZWxlYXNlOwogCQl9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCShyZXZpc2lvbiAxMjIxNjApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0JpbmRpbmdzQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAj
aW5jbHVkZSAiSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVN0cmlu
Z01hcEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIgorI2lu
Y2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5j
cHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2lu
ZG93U2hlbGwuY3BwIgpAQCAtMTU1LDYgKzE1Niw3IEBACiAjaW5jbHVkZSAiSlNVaW50MzJBcnJh
eUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNVaW50OEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktp
dENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0
aW9uLmgiCisKKyNpbmNsdWRlICJET01XcmFwcGVyV29ybGQuaCIKKyNpbmNsdWRlICJKU0RpY3Rp
b25hcnkuaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKKyNpbmNs
dWRlICJVbmRvTWFuYWdlci5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0RPTVRyYW5zYWN0aW9u
OjpKU0RPTVRyYW5zYWN0aW9uKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNPYmplY3QqIHdyYXBwZXIs
IERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKKyAgICA6IG1fd3JhcHBlcih3cmFwcGVyKQorICAgICwgbV9pc29sYXRlZFdvcmxk
KGlzb2xhdGVkV29ybGQpCisgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdW5kb01h
bmFnZXIoMCkKK3sKKyAgICBpZiAod3JhcHBlcikKKyAgICAgICAgbV9kaWN0aW9uYXJ5LnNldE1h
eUJlTnVsbCgqbV9pc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGZ1bmN0aW9u
KTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVCghZnVuY3Rpb24pOworfQorCit2b2lkIEpTRE9N
VHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeShKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQor
eworICAgIGlmIChtX2RpY3Rpb25hcnkpCisgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2RpY3Rp
b25hcnkpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmNhbGxQcm9wZXJ0eShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBjaGFyKiBwcm9w
ZXJ0eU5hbWUpCit7CisgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlm
ICghc2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0pT
RXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2Jq
ZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAKKyAgICBKU0RpY3Rpb25hcnkganNEaWN0aW9uYXJ5KGV4
ZWMsIG1fZGljdGlvbmFyeS5nZXQoKSk7CisgICAgaWYgKCFqc0RpY3Rpb25hcnkuaXNWYWxpZCgp
KQorICAgICAgICByZXR1cm47CisgICAgCisgICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgaWYg
KCFqc0RpY3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpKQorICAgICAgICByZXR1cm47
CisgICAgaWYgKCF2YWx1ZS5pc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBKU1ZhbHVlIGZ1bmN0aW9uID0gdmFsdWUuanNWYWx1ZSgpOworICAgIAorICAgIENhbGxEYXRh
IGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24s
IGNhbGxEYXRhKTsKKyAgICAKKyAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7Cisg
ICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZnVuY3Rpb247CisgICAgICAgIGlmIChzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkpCisgICAgICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywg
ZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgfQorfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rp
b246OmV4ZWN1dGUoKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJleGVj
dXRlIik7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7CisgICAgY2Fs
bFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwgInVuZG8iKTsKKyAgICBpZiAobV91bmRvTWFuYWdl
cikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsKK30KKwor
dm9pZCBKU0RPTVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9j
b250ZXh0LmdldCgpLCAicmVkbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBt
X3VuZG9NYW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOworfQorCit9CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rp
b24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNET01UcmFuc2FjdGlv
bl9oCisjZGVmaW5lIEpTRE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU09i
amVjdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWRMZWFrQ291bnRlci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBET01XcmFwcGVyV29ybGQ7CitjbGFzcyBTY3JpcHRFeGVjdXRp
b25Db250ZXh0OworY2xhc3MgVW5kb01hbmFnZXI7CisKK2NsYXNzIEpTRE9NVHJhbnNhY3Rpb24g
OiBwdWJsaWMgRE9NVHJhbnNhY3Rpb24geworcHVibGljOgorICAgIEpTRE9NVHJhbnNhY3Rpb24o
SlNDOjpKU09iamVjdCogZGljdGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAg
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNET01UcmFuc2FjdGlvbj4gY3JlYXRlKEpTQzo6SlNP
YmplY3QqIGRpY3Rpb25hcnksIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3Js
ZCogaXNvbGF0ZWRXb3JsZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNET01UcmFuc2FjdGlvbihkaWN0aW9uYXJ5
LCB3cmFwcGVyLCBpc29sYXRlZFdvcmxkLCBjb250ZXh0KSk7CisgICAgfQorICAgIAorICAgIHZv
aWQgdmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAKKyAgICB2aXJ0dWFs
IFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigpIE9WRVJSSURFIHsgcmV0dXJuIG1fdW5kb01hbmFn
ZXI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VW5kb01hbmFnZXIoVW5kb01hbmFnZXIqIHVuZG9N
YW5hZ2VyKSBPVkVSUklERSB7IG1fdW5kb01hbmFnZXIgPSB1bmRvTWFuYWdlcjsgfQorICAgIAor
cHJpdmF0ZToKKyAgICB2b2lkIGNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lKTsKKyAgICAKKyAgICBKU0M6OldyaXRlQmFycmllcjxK
U0M6OkpTT2JqZWN0PiBtX2RpY3Rpb25hcnk7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+
IG1fd3JhcHBlcjsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7
CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBVbmRv
TWFuYWdlciogbV91bmRvTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3Rv
bS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNVbmRvTWFuYWdlci5oIgorCisjaW5jbHVkZSAiSlNET01U
cmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5z
YWN0aW9uc0luU3RhY2soY29uc3QgVmVjdG9yPFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gPiYg
c3RhY2ssIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVmVjdG9yPFJlZlB0cjxVbmRv
U3RlcD4gPiYgZW50cnkgPSBzdGFja1tpXTsKKyAgICAgICAgaWYgKGVudHJ5LmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZW50cnlbMF0tPmlzRE9NVHJhbnNh
Y3Rpb24oKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBlbnRyeS5zaXpl
KCk7ICsraikgeworICAgICAgICAgICAgICAgIFVuZG9TdGVwKiBzdGVwID0gZW50cnlbal0uZ2V0
KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0ZXAtPmlzRE9NVHJhbnNhY3Rpb24oKSk7Cisg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8SlNET01UcmFuc2FjdGlvbio+KHN0ZXApLT52aXNp
dERpY3Rpb25hcnkodmlzaXRvcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9
CisKK3ZvaWQgSlNVbmRvTWFuYWdlcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQoreworICAgIEpTVW5kb01hbmFnZXIqIHRoaXNPYmplY3QgPSBqc0Nh
c3Q8SlNVbmRvTWFuYWdlcio+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
dGhpc09iamVjdCwgJnNfaW5mbyk7CisgICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3Mg
JiBPdmVycmlkZXNWaXNpdENoaWxkcmVuLCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNl
dHRpbmdGbGFnKTsKKyAgICBBU1NFUlQodGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJlbigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRo
aXNPYmplY3QsIHZpc2l0b3IpOworICAgIAorICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlciA9
IHRoaXNPYmplY3QtPmltcGwoKTsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2sodW5kb01h
bmFnZXItPnVuZG9TdGFjaygpLCB2aXNpdG9yKTsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3Rh
Y2sodW5kb01hbmFnZXItPnJlZG9TdGFjaygpLCB2aXNpdG9yKTsKK30KKworCitKU1ZhbHVlIEpT
VW5kb01hbmFnZXI6OnRyYW5zYWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cygmSlNVbmRvTWFuYWdlcjo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGV4ZWMpOworICAgIEpTVW5kb01hbmFnZXIqIGNhc3RlZFRoaXMgPSBqc0Nhc3Q8SlNVbmRv
TWFuYWdlcio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFMoY2FzdGVkVGhpcywgJkpTVW5kb01hbmFnZXI6OnNfaW5mbyk7CisgICAgVW5kb01hbmFn
ZXIqIGltcGwgPSBzdGF0aWNfY2FzdDxVbmRvTWFuYWdlcio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCisgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsK
KyAgICAKKyAgICBKU1ZhbHVlIGRpY3Rpb25hcnkgPSBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihl
eGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFkaWN0aW9uYXJ5Lmlz
T2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICAKKyAg
ICBib29sIG1lcmdlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDEsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkudG9Cb29sZWFuKCkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAo
IXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAg
IFJlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IEpTRE9NVHJhbnNhY3Rpb246
OmNyZWF0ZShkaWN0aW9uYXJ5LmdldE9iamVjdCgpLCB0aGlzVmFsdWUuZ2V0T2JqZWN0KCksIGN1
cnJlbnRXb3JsZChleGVjKSwgc2NyaXB0Q29udGV4dCk7CisgICAgCisgICAgaW1wbC0+dHJhbnNh
Y3QodHJhbnNhY3Rpb24sIG1lcmdlKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQu
aAkocmV2aXNpb24gMTIyMTYwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVF
ZGl0Q29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWFw
cGx5KCkgT1ZFUlJJREU7CiAgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gbV9lZGl0QWN0aW9uOyB9CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
KyAgICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxz
ZTsgfQorI2VuZGlmCiAgICAgdm9pZCBhcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqKTsKICAgICBi
b29sIHdhc0NyZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0QWN0aW9uID09
IEVkaXRBY3Rpb25DcmVhdGVMaW5rOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVRy
YW5zYWN0aW9uX2gKKyNkZWZpbmUgRE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9f
TUFOQUdFUikKKworI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xh
c3MgRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVibGljOgorICAgIHZpcnR1
YWwgfkRPTVRyYW5zYWN0aW9uKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlYXBwbHkoKSA9IDA7CisgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gRWRpdEFjdGlvblVuc3BlY2lmaWVkOyB9CisgICAgYm9vbCBpc0RPTVRy
YW5zYWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZp
cnR1YWwgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciopID0gMDsKK307CisKK30KKworI2VuZGlmCisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTIyMTYwKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJo
dG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtODAyLDggKzgwMywxMiBAQCB2
b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDCiAgICAgICAgIC8vIE9ubHkg
cmVnaXN0ZXIgYSBuZXcgdW5kbyBjb21tYW5kIGlmIHRoZSBjb21tYW5kIHBhc3NlZCBpbiBpcwog
ICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21tYW5kCiAgICAgICAgIG1fbGFz
dEVkaXRDb21tYW5kID0gY21kOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBp
ZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xh
c3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZWxzZQorICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVk
aXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwpAQCAtODIwLDggKzgyNSwxMiBA
QCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgbV9hbHRlcm5h
dGl2ZVRleHRDb250cm9sbGVyLT5yZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7
CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyUmVkb1N0
ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+
cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2VuZGlmICAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29u
dGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRv
cjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJD
b21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVT
ZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5k
ID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAg
ICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRp
ZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC0x
MjQyLDI0ICsxMjU1LDQwIEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygp
CiAKIGJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNlCisgICAg
cmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOworI2Vsc2UK
KyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYK
IH0KIAogYm9vbCBFZGl0b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vsc2UKKyAg
ICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVkbygpOwor
I2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7CisjZWxz
ZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRp
ZgogfQogCiB2b2lkIEVkaXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZpc2lvbiAxMjIxNjApCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMs
NyBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAotI2luY2x1ZGUgIk5vZGUuaCIKKyNp
bmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0
LDYgKzQ0LDcgQEAgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6OmNyZQogCiBV
bmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoTm9kZSogaG9zdCkKICAgICA6IG1fdW5kb1Njb3BlSG9z
dChob3N0KQorICAgICwgbV9pc0luUHJvZ3Jlc3MoZmFsc2UpCiB7CiB9CiAKQEAgLTUyLDIwICs1
Myw3OCBAQCB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVIb3N0RGVzdHJveWVkCiAgICAgbV91
bmRvU2NvcGVIb3N0ID0gMDsKIH0KIAotdm9pZCBVbmRvTWFuYWdlcjo6dW5kbygpCit2b2lkIFVu
ZG9NYW5hZ2VyOjp0cmFuc2FjdChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiBwcnBUcmFuc2Fj
dGlvbiwgYm9vbCBtZXJnZSkKIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gcHJw
VHJhbnNhY3Rpb247CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2VyKHRoaXMpOworICAg
IAorICAgIGNsZWFyUmVkbygpOworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAg
ICB0cmFuc2FjdGlvbi0+ZXhlY3V0ZSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7Cisg
ICAgCisgICAgaWYgKCFtZXJnZSB8fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAg
VmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBlbnRyeTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBw
ZW5kKGVudHJ5KTsKKyAgICB9CisgICAgbV91bmRvU3RhY2subGFzdCgpLmFwcGVuZCh0cmFuc2Fj
dGlvbik7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OnJlZG8oKQotewotfQotCi12b2lkIFVuZG9N
YW5hZ2VyOjpjbGVhclVuZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6dW5kbygpCiB7CisgICAgaWYg
KG1faXNJblByb2dyZXNzIHx8IG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICBWZWN0b3I8UmVmUHRyPFVu
ZG9TdGVwPiA+IGVudHJ5ID0gbV91bmRvU3RhY2subGFzdCgpOworICAgIGZvciAoc2l6ZV90IGkg
PSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+dW5hcHBs
eSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgbV9yZWRvU3RhY2su
YXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5KTsKKyAgICBtX2luUHJvZ3Jlc3NFbnRyeS5jbGVhcigp
OworICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAotdm9pZCBVbmRvTWFuYWdlcjo6
Y2xlYXJSZWRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZG8oKQogeworICAgIGlmIChtX2lzSW5Q
cm9ncmVzcyB8fCBtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4g
PiBlbnRyeSA9IG1fcmVkb1N0YWNrLmxhc3QoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gZW50cnku
c2l6ZSgpOyBpID4gMDsgLS1pKQorICAgICAgICBlbnRyeVtpIC0gMV0tPnJlYXBwbHkoKTsKKyAg
ICBtX2lzSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIG1fdW5kb1N0YWNrLmFwcGVuZCht
X2luUHJvZ3Jlc3NFbnRyeSk7CisgICAgbV9pblByb2dyZXNzRW50cnkuY2xlYXIoKTsKKyAgICBt
X3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVy
VW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sKKyAgICBpZiAoIW1faXNJblBy
b2dyZXNzKSB7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gZW50cnk7CisgICAg
ICAgIGVudHJ5LmFwcGVuZChzdGVwKTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5
KTsKKyAgICAgICAgY2xlYXJSZWRvKCk7CisgICAgfSBlbHNlCisgICAgICAgIG1faW5Qcm9ncmVz
c0VudHJ5LmFwcGVuZChzdGVwKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJSZWRv
U3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jl
c3MpIHsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBlbnRyeTsKKyAgICAgICAg
ZW50cnkuYXBwZW5kKHN0ZXApOworICAgICAgICBtX3JlZG9TdGFjay5hcHBlbmQoZW50cnkpOwor
ICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS5hcHBlbmQoc3RlcCk7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHJldmlzaW9uIDEyMjE2
MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsMzIgKzMzLDk0IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5j
bHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBET01UcmFuc2FjdGlv
bjsKIGNsYXNzIE5vZGU7CiAKIGNsYXNzIFVuZG9NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8
VW5kb01hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmRvTWFuYWdl
cj4gY3JlYXRlKE5vZGUqIGhvc3QpOwogICAgIHZvaWQgdW5kb1Njb3BlSG9zdERlc3Ryb3llZCgp
OworICAgIAorICAgIHZvaWQgdHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4sIGJv
b2wpOwogCiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgdW5z
aWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKKyAgICB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkg
Y29uc3Q7CiAKICAgICB2b2lkIGNsZWFyVW5kbygpOwogICAgIHZvaWQgY2xlYXJSZWRvKCk7Cisg
ICAgCisgICAgYm9vbCBjYW5VbmRvKCkgY29uc3Q7CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3Q7
CisgICAgCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsK
KyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAor
ICAgIGNvbnN0IFZlY3RvcjxWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+ID4mIHVuZG9TdGFjaygp
IGNvbnN0OworICAgIGNvbnN0IFZlY3RvcjxWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+ID4mIHJl
ZG9TdGFjaygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIFVuZG9NYW5hZ2VyKE5vZGUqIGhvc3Qp
OwogICAgIE5vZGUqIG1fdW5kb1Njb3BlSG9zdDsKLX07CiAgICAgCisgICAgVmVjdG9yPFZlY3Rv
cjxSZWZQdHI8VW5kb1N0ZXA+ID4gPiBtX3VuZG9TdGFjazsKKyAgICBWZWN0b3I8VmVjdG9yPFJl
ZlB0cjxVbmRvU3RlcD4gPiA+IG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7
CisgICAgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBtX2luUHJvZ3Jlc3NFbnRyeTsKK307CisK
K2lubGluZSB1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpsZW5ndGgoKSBjb25zdAoreworICAg
IHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7CiB9Ci0gICAg
CisKK2lubGluZSB1bnNpZ25lZCBsb25nIFVuZG9NYW5hZ2VyOjpwb3NpdGlvbigpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fcmVkb1N0YWNrLnNpemUoKTsKK30KKworaW5saW5lIHZvaWQgVW5kb01h
bmFnZXI6OmNsZWFyVW5kbygpCit7CisgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKK30KKworaW5s
aW5lIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbygpCit7CisgICAgbV9yZWRvU3RhY2suY2xl
YXIoKTsKK30KKworaW5saW5lIGJvb2wgVW5kb01hbmFnZXI6OmNhblVuZG8oKSBjb25zdAorewor
ICAgIHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOworfQorCitpbmxpbmUgYm9vbCBVbmRv
TWFuYWdlcjo6Y2FuUmVkbygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0Vt
cHR5KCk7Cit9CisKK2lubGluZSBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4g
PiA+JiBVbmRvTWFuYWdlcjo6dW5kb1N0YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV91bmRv
U3RhY2s7Cit9CisKK2lubGluZSBjb25zdCBWZWN0b3I8VmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4g
PiA+JiBVbmRvTWFuYWdlcjo6cmVkb1N0YWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZWRv
U3RhY2s7Cit9CisKK30KKwogI2VuZGlmCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5pZGwJKHJldmlzaW9uIDEyMjE2MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTYg
QEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFs
PVVORE9fTUFOQUdFUgorICAgICAgICBDb25kaXRpb25hbD1VTkRPX01BTkFHRVIsCisgICAgICAg
IEpTQ3VzdG9tTWFya0Z1bmN0aW9uCiAgICAgXSBVbmRvTWFuYWdlciB7CisgICAgICAgIFtDdXN0
b21dIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFuc2FjdGlvbiwgaW4gYm9vbGVhbiBt
ZXJnZSk7CisKICAgICAgICAgdm9pZCB1bmRvKCk7CiAgICAgICAgIHZvaWQgcmVkbygpOworICAg
ICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBwb3NpdGlvbjsKIAogICAg
ICAgICB2b2lkIGNsZWFyVW5kbygpOwogICAgICAgICB2b2lkIGNsZWFyUmVkbygpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIyMTYwKQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVhcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigp
IGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9vbCBp
c0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDEyMjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTIxMjUsNiArMjEyNSw3IEBACiAJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUM5MDRGRDQw
QkE5REQwRjAwODFFOUQwIC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJT1RIRVJfQ0ZMQUdTID0gIi1ERU5BQkxFX1VORE9fTUFOQUdFUiI7CiAJ
CQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKIAkJCX07CiAJCQluYW1lID0gUmVsZWFz
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEy
MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZGlkU2V0U2VsZWMKIAogdm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgLy8gUmVtb3ZlIHRoZSBvbGRlc3Qg
aXRlbSBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciB0aGUgc3RhY2su
CiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAg
ICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7CkBAIC0yNjgsMjcgKzI2OSw0NCBAQCB2
b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyVW5kCiAgICAgICAgIG1fcmVkb1N0
YWNrLmNsZWFyKCk7CiAKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNr
LmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5V
bmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1f
dW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OmNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QK
QEAgLTMwMyw2ICszMjEsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblBhc3Rl
KEZyCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFu
ZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVm
UHRyPFVuZG9TdGVwPiBjb21tYW5kKCpiYWNrKTsKQEAgLTMxMSwxMCArMzMwLDEyIEBAIHZvaWQg
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiAgICAgICAgIC8vIFVuYXBwbHkgd2lsbCBj
YWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAg
ICAgICAgY29tbWFuZC0+dW5hcHBseSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3Ig
YmFjayA9IC0tbV9yZWRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29t
bWFuZCgqYmFjayk7CkBAIC0zMjcsNiArMzQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpyZWRvKCkKICAgICAgICAgY29tbWFuZC0+cmVhcHBseSgpOwogICAgICAgICBtX2luUmVk
byA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3Ry
bEtleSA9IDEgPDwgMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiAxMjIxNjApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDIy
ICsyOTUsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxlY3Rpb25UeQogCiB2
b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3Rl
cD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAobV91bmRvU3Rh
Y2suc2l6ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgbV91bmRvU3RhY2su
cmVtb3ZlRmlyc3QoKTsgLy8gZHJvcCBvbGRlc3QgaXRlbSBvZmYgdGhlIGZhciBlbmQKICAgICBp
ZiAoIW1faW5SZWRvKQogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogICAgIG1fdW5kb1N0
YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRy
PFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVk
b1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2Vu
ZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMo
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7
CiAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dEltcGw6OmNhbkNvcHlDdXQoRnJhbWUqIGZyYW1lLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QK
QEAgLTMyOSwxNiArMzM5LDI1IEBAIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUGFzdGUoRnJh
bWUqIGYKIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
SW1wbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgVW5kb01hbmFn
ZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJl
ZlB0cjxVbmRvU3RlcD4gc3RlcCgqYmFjayk7CkBAIC0zNDYsMTAgKzM2NSwxMiBAQCB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnVuZG8oKQogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgICAg
IC8vIHVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0
aGUgcmVkbyBzdGFjay4KICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygp
KSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0
YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzYx
LDYgKzM4Miw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiAgICAgICAgIC8vIHJl
YXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5k
byBzdGFjay4KICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAog
Ly8KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVm
bC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTIyMTYwKQorKysgU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4
LDIwICsxNzgsMzAgQEAgdm9pZCBFZGl0b3JDbGllbnRFZmw6OmRpZFNldFNlbGVjdGlvblR5cAog
CiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8
VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKCFt
X2lzSW5SZWRvKQogICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKICAgICB1bmRvU3RhY2sucHJl
cGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxV
bmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3Rh
Y2sucHJlcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAg
cmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNh
bkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTIwNiwyNCArMjE2
LDM1IEBAIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5QYXN0ZShGcmFtZSosIGIKIAogYm9vbCBF
ZGl0b3JDbGllbnRFZmw6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29u
c3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5p
c0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudEVmbDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAg
PSB1bmRvU3RhY2sudGFrZUZpcnN0KCk7CiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gcmVkb1N0YWNrLnRha2VGaXJzdCgpOwogCkBAIC0yMzIs
NiArMjUzLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogICAgICAgICBzdGVwLT5y
ZWFwcGx5KCk7CiAgICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFu
Z2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZp
c2lvbiAxMjIxNjApCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JD
bGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODgsMjIgKzI4OCwzMiBAQCB2b2lkIEVk
aXRvckNsaWVudDo6ZGlkU2V0U2VsZWN0aW9uVHlwZXNGCiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojpy
ZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9
PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmVGaXJzdCgp
OwogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAg
dW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOwor
I2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICByZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2su
Y2xlYXIoKTsKICAgICByZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRv
ckNsaWVudDo6Y2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdApAQCAtMzE4LDI2ICszMjgsMzcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBhc3RlKFdl
YkNvcmU6OkZyYQogCiBib29sIEVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOwor
I2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6
OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVy
biAhcmVkb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4gc3RlcCgqKC0tdW5kb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHVuZG9TdGFjay5yZW1v
dmUoLS11bmRvU3RhY2suZW5kKCkpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBi
YWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIHN0
ZXAtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJl
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsK
ICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKCooLS1yZWRvU3RhY2suZW5k
KCkpKTsKICAgICAgICAgcmVkb1N0YWNrLnJlbW92ZSgtLXJlZG9TdGFjay5lbmQoKSk7CkBAIC0z
NDgsNiArMzY5LDcgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogICAgICAgICBzdGVwLT5y
ZWFwcGx5KCk7CiAgICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2Uq
IHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEy
MjE2MCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzksMTIgKzIzOSwxNiBAQCBib29sIEVkaXRvckNsaWVu
dFF0OjpzZWxlY3RXb3JkQmVmb3JlTWVuCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVy
VW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFt
ZSogZnJhbWUgPSBtX3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVk
aXRvcigpLT5sYXN0RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3Mg
Ki8pKQogICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcg
VW5kb1N0ZXBRdChzdGVwKSk7CiAjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojpy
ZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pCkBAIC0y
NTMsOSArMjU3LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1QK
IAogdm9pZCBFZGl0b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1
cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2xlYXIoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJv
b2wgRWRpdG9yQ2xpZW50UXQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1
bHRWYWx1ZSkgY29uc3QKQEAgLTI3MCwzOCArMjc2LDUwIEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6
OmNhblBhc3RlKFdlYkNvcmU6OkYKIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbygpIGNv
bnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNL
CiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2so
KS0+Y2FuVW5kbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgog
fQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICNpZmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gZmFsc2U7
CiAjZWxzZQogICAgIHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jYW5SZWRvKCk7CiAjZW5k
aWYKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50UXQ6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9O
T19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0
YWNrKCktPnVuZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVl
OwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnJlZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBm
YWxzZTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNob3VsZElu
c2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0
aW9uKQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTIyMTYwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDYtMjEgIFN1a29sc2FrIFNh
a3NodXdvbmcgIDxzdWtvbHNha0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRv
TWFuYWdlcidzIHVuZG8sIHJlZG8sIGxlbmd0aCwgcG9zaXRpb24sIGNsZWFyVW5kbywgYW5kIGNs
ZWFyUmVkbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODk3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJl
ZG8uaHRtbDogQWRkZWQuCisKIDIwMTItMDctMDkgIFZpbmNlbnQgU2NoZWliICA8c2NoZWliQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZWZhY3RvciBjb21tb24gUG9pbnRlciBMb2NrIHRlc3Qg
Y29kZSB0byBhIGhhcm5lc3MuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRv
bWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEy
IEBACit0ZXN0CisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BB
U1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBhbmQgcG9z
aXRpb24uIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBmb3Ig
bGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiAKK1BBU1MgQWZ0ZXIgaW5zZXJ0aW5nIHRleHQg
J3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3NpdGlvbiBp
cyAwLiAKK1BBU1MgQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5ndGgg
aXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4g
CitQQVNTIEFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0
aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIg
dW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5k
IHRoZSByZXN1bHQgaXMgZW1wdHkuIAorUEFTUyBBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidz
IGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWlu
ICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIg
YW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIAorCklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVk
by5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5k
b21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
VW5kb01hbmFnZXIgaGFzIHVuZG8oKSBhbmQgcmVkbygpIHRoYXQgd29yazwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwv
ZGl2PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAi
ZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAidW5kbyIp
OworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicmVkbyIp
OworICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJsZW5ndGgi
KTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicG9zaXRp
b24iKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydGllcyB1bmRvLCByZWRvLCBsZW5ndGgs
IGFuZCBwb3NpdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdHJ1ZShk
b2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1l
bnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAidW5kb01hbmFnZXIgaGFzIGNvcnJl
Y3QgaW5pdGlhbCB2YWx1ZXMgZm9yIGxlbmd0aCAoMCkgYW5kIHBvc2l0aW9uICgwKS4iKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJlZGl0Iik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXQsIDAp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICJ0ZXN0Iik7
CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDEp
OworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOwor
fSwgIkFmdGVyIGluc2VydGluZyB0ZXh0ICd0ZXN0JyBpbiBhIERJViwgdW5kb01hbmFnZXIncyBs
ZW5ndGggaXMgMSBhbmQgcG9zaXRpb24gaXMgMC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5v
ZGVDb250ZW50cyhlZGl0KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFu
Z2UpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJCb2xkIiwgZmFsc2UsIG51bGwpOworICAg
IAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBh
c3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciBi
b2xkaW5nIHRoZSB0ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBp
cyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5j
dGlvbigpIHsKKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNz
ZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90
cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICJ0ZXN0Iik7Cit9LCAiQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFn
ZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBw
bGFpbiAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFu
YWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIu
cG9zaXRpb24gPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOwor
fSwgIkFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9u
IGlzIDIsIGFuZCB0aGUgcmVzdWx0IGlzIGVtcHR5LiIpOworICAgIAordGVzdChmdW5jdGlvbigp
IHsKKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICJ0ZXN0Iik7Cit9LCAiQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBs
ZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAn
dGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5h
Z2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5s
ZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRp
b24gPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+
Iik7Cit9LCAiQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9z
aXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4iKTsKKworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151551</attachid>
            <date>2012-07-10 16:45:03 -0700</date>
            <delta_ts>2012-07-10 19:37:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120710164649.patch</filename>
            <type>text/plain</type>
            <size>59630</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA3LTEwICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAor
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRy
YW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGlj
dGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVy
dHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEpT
RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3Jl
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0VHJhbnNhY3Rp
b25zSW5TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAg
ICAgKiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9E
T01UcmFuc2FjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9N
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFu
c2FjdGlvbik6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVu
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRv
TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFn
ZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJl
Z2lzdGVyUmVkb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5k
byk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAg
KiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVu
ZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpsZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlVuZG9NYW5hZ2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpj
YW5SZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGlu
Zy9VbmRvTWFuYWdlci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAg
ICAoVW5kb1N0ZXApOgorCiAyMDEyLTA3LTEwICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggZHVlIHRvIFNWRyBhbmltYXRpb24gZWxlbWVudCBub3QgcmVt
b3ZlZCBmcm9tIHRhcmdldCAoYmVmb3JlIHJlc2V0KQpJbmRleDogU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCShyZXZpc2lvbiAxMjIyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMzk5LDYgKzEzOTksOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0
b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKQEAgLTE1MjAsNiArMTUyMiw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJB
cnJheUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJh
eUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVk
QXJyYXlDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5h
Z2VyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmlt
YXRpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFu
aW1hdGlvbkxpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApAQCAtMjEwNiw2ICsyMTA5LDcgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkFsdGVy
bmF0aXZlLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdEFjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQkocmV2aXNpb24gMTIyMjc5KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29y
a2luZyBjb3B5KQpAQCAtMjc1LDYgKzI3NSw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMv
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3Ry
aW5nTWFwQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3Vz
dG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93U2hlbGwuY3BwIFwKQEAgLTM1Nyw2ICszNTgsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50
OEFycmF5Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJy
YXlDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5j
cHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDEyMjI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwxMyBAQCBJRiAoRU5BQkxF
X1dFQl9JTlRFTlRTKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVU5ET19NQU5BR0VS
KQorICAgIExJU1QgKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgYmluZGluZ3MvanMv
SlNET01UcmFuc2FjdGlvbi5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1
c3RvbS5jcHAKKyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBTQ1JJUFRTX0JJTkRJTkdT
CiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCiAp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTIyMjc5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI1NTAsMyArMjU1MCw5IEBA
IF9fWk43V2ViQ29yZTI3QWx0ZXJuYXRpdmVUZXh0VUlDb250cm9sbGUKIF9fWk43V2ViQ29yZTI0
VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlQzFFUDE4TlNUZXh0QWx0ZXJuYXRpdmVzOF9OU1Jhbmdl
CiBfX1pON1dlYkNvcmUzMmNvbGxlY3REaWN0YXRpb25UZXh0QWx0ZXJuYXRpdmVzRVAxOE5TQXR0
cmlidXRlZFN0cmluZ1JOM1dURjZWZWN0b3JJTlNfMjRUZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2VF
TG0wRUVFCiAjZW5kaWYKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCitfX1pON1dlYkNvcmU4
RG9jdW1lbnQxMXVuZG9NYW5hZ2VyRXYKK19fWk43V2ViQ29yZTExVW5kb01hbmFnZXI0cmVkb0V2
CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHVuZG9FdgorI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCShyZXZpc2lvbiAxMjIyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NjYsNiArMTk2Niw4IEBACiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNEaXJlY3RvcnlFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRGlyZWN0b3J5RW50cnlTeW5jQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
RE9NVHJhbnNhY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRyYW5z
YWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRW50cnlDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0VudHJ5U3luY0N1c3RvbS5jcHAnLApAQCAtMjA3MCw2ICsyMDcy
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMjIyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE4NjgsNyArMTg2OCw2IEBACiAJCTc1Nzkz
RUQ1MEQwQ0U4NUIwMDdGQzBBQyAvKiBET01NZXNzYWdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDIwRDBDRTg1QjAw
N0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudEludGVybmFsLmggKi87IH07CiAJCTc1ODk3OEVDMTI3
MDkwRDYwMDc2RDVBOSAvKiBTcGVlY2hJbnB1dFJlc3VsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTg5NzhFQTEyNzA5MEQ2MDA3NkQ1QTkgLyog
U3BlZWNoSW5wdXRSZXN1bHQuY3BwICovOyB9OwogCQk3NjJGMUVENzE1OUQ5NjBBMDA3NDA4RjIg
LyogSFRNTERpYWxvZ0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc2MkYxRUQ2MTU5RDk2MEEwMDc0MDhGMiAvKiBIVE1MRGlhbG9nRWxlbWVu
dC5oICovOyB9OwotCQk3NjJGMUVEOTE1OUQ5NjFBMDA3NDA4RjIgLyogSFRNTERpYWxvZ0VsZW1l
bnQuaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
NjJGMUVEODE1OUQ5NjFBMDA3NDA4RjIgLyogSFRNTERpYWxvZ0VsZW1lbnQuaWRsICovOyB9Owog
CQk3NjJGMUVEQjE1OUQ5NjhBMDA3NDA4RjIgLyogSFRNTERpYWxvZ0VsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYyRjFFREExNTlEOTY4
QTAwNzQwOEYyIC8qIEhUTUxEaWFsb2dFbGVtZW50LmNwcCAqLzsgfTsKIAkJNzYzM0E3MjYxM0Q4
QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzYzM0E3MjQxM0Q4QjMzQTAwODUwMUI2IC8q
IExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovOyB9OwogCQk3NjMzQTcyNzEzRDhCMzNBMDA4NTAx
QjYgLyogTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjMzQTcyNTEzRDhCMzNBMDA4NTAxQjYgLyog
TG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHAgKi87IH07CkBAIC0xOTQyLDggKzE5NDEs
MTIgQEAKIAkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGMTFB
NTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovOyB9OwogCQk3
QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVC
ODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QUZENEZGNDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVi
dWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjA5OTJGNTE1
QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAg
LyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi87IH07CiAJCTdCMUVBMENFMTU3NkM1QjUwMDYw
MTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2Vy
LmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0YxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENE
MTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggKi87IH07CisJCTdCNTE3RTg0MTVB
Q0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBK
U0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I1MTdFODUxNUFDRjFGNTAwRjE2QjdBIC8q
IEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmgg
Ki87IH07CisJCTdCNTE3RTg3MTVBQ0YyMTEwMEYxNkI3QSAvKiBET01UcmFuc2FjdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODYxNUFD
RjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggKi87IH07CiAJCTdCOTE4NEQyMTU3NThF
NDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFn
ZXIuY3BwICovOyB9OwogCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQw
MTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OwogCQk3RTMzQ0QwMTEyN0Yz
NDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJp
b3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtODk5MSw4ICs4OTk0LDggQEAKIAkJNzYyRjFFREExNTlEOTY4QTAwNzQwOEYyIC8qIEhUTUxE
aWFsb2dFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhU
TUxEaWFsb2dFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYzM0E3
MjQxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRvU2NyaXB0TWFwcGluZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMb2NhbGVUb1NjcmlwdE1hcHBpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzYzM0E3MjUxM0Q4QjMzQTAwODUwMUI2IC8qIExvY2FsZVRv
U2NyaXB0TWFwcGluZ0RlZmF1bHQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gTG9jYWxlVG9TY3JpcHRNYXBwaW5nRGVmYXVsdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTc2ODA4QjREMTU5REFERkEwMDJCNTIzMyAvKiBKU0hUTUxEaWFsb2dFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTSFRNTERpYWxv
Z0VsZW1lbnQuY3BwOyBwYXRoID0gSlNIVE1MRGlhbG9nRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTc2ODA4QjRFMTU5REFERkEwMDJCNTIzMyAvKiBKU0hUTUxEaWFs
b2dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTSFRNTERpYWxv
Z0VsZW1lbnQuaDsgcGF0aCA9IEpTSFRNTERpYWxvZ0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNzY4MDhCNEQxNTlEQURGQTAwMkI1MjMzIC8qIEpTSFRNTERpYWxvZ0Vs
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MRGlh
bG9nRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTc2ODA4QjRFMTU5
REFERkEwMDJCNTIzMyAvKiBKU0hUTUxEaWFsb2dFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSFRNTERpYWxvZ0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzY5NDU2M0ExMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVG9rZW5MaXN0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzY5NDU2M0IxMjE0RDk3QzAwMDdDQkFF
IC8qIEpTRE9NVG9rZW5MaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc2OTQ1NjU5MTIx
NERCNjMwMDA3Q0JBRSAvKiBET01ET01Ub2tlbkxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NRE9NVG9rZW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC05MDcwLDggKzkwNzMsMTIgQEAKIAkJN0FGMTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIElu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FG
RDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0
ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3Rl
bmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMDk5MkY0MTVBQ0YxQUQwMEVE
NkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEpTVW5kb01hbmFnZXJDdXN0b20uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Vi
a2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwOyBz
b3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAv
KiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBD
RDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBw
YXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJh
bnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTdCNTE3RTgzMTVB
Q0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0I1MTdFODYxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5z
YWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVRyYW5zYWN0aW9u
Lmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFu
c2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdCOTE4NENGMTU3NThF
NDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBVbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QjkxODREMTE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaWRsICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2OTcxLDYgKzE2OTc4LDcgQEAKIAkJCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcw
NjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLywKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBF
MzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAw
RTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCAqLywKKwkJCQk3QjUxN0U4NjE1QUNGMjExMDBG
MTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1
ODEgLyogRWRpdEFjdGlvbi5oICovLAogCQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBF
ZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRD
b21tYW5kLmggKi8sCkBAIC0xOTk0Miw2ICsxOTk1MCw4IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3
QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0
MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIwNzZENjAw
NzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8sCisJCQkJN0I1MTdFODIxNUFDRjFGMzAw
RjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTdCNTE3RTgzMTVBQ0YxRjUw
MEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAw
QUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAw
QUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovLAogCQkJCUJDQkZCNTNBMERDRDI5Q0YwMDE5
QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCAqLywKQEAgLTIwMTg0LDYgKzIwMTk0LDcgQEAK
IAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAg
Ki8sCiAJCQkJNDlFRUNGNzUxMDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5j
cHAgKi8sCiAJCQkJOTFBMzkwNUExNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJy
YXlDdXN0b20uY3BwICovLAorCQkJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNX
YXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFC
IC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEz
MjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovLApAQCAtMjUy
MDMsNiArMjUyMTQsOCBAQAogCQkJCTc2ODA4QjUwMTU5REFERkEwMDJCNTIzMyAvKiBKU0hUTUxE
aWFsb2dFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQk0NERBQjVCMjE1QTYyMzU4
MDA5N0MxRTQgLyogRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk3QjUxN0U4NTE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0I1MTdFODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTI4MjYxLDYgKzI4Mjc0LDggQEAKIAkJCQk3NjgwOEI0RjE1OURB
REZBMDAyQjUyMzMgLyogSlNIVE1MRGlhbG9nRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxRkFGQkYxODE1QTVGQTZFMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDREQUI1QjExNUE2MjM1ODAwOTdDMUU0IC8qIEV4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjA5OTJGNTE1QUNGMUFEMDBFRDZEMjAgLyog
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjUxN0U4NDE1QUNG
MUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI4
Mzc1LDYgKzI4MzkwLDcgQEAKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1
RTQwQkE5Qzg0NjAwRjkwMTQ3IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxk
U2V0dGluZ3MgPSB7CiAJCQkJU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsKKwkJCQlTWU1S
T09UID0gL1ZvbHVtZXMvcHJvamVjdC93ZWJraXQvV2ViS2l0QnVpbGQ7CiAJCQl9OwogCQkJbmFt
ZSA9IFJlbGVhc2U7CiAJCX07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyMjI3OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVRva2Vu
TGlzdEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5jcHAiCiAjaW5jbHVk
ZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5jcHAiCkBAIC0xNTUsNiArMTU2LDcgQEAKICNp
bmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXlD
dXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIgorI2lu
Y2x1ZGUgIkpTVW5kb01hbmFnZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0
aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5o
IgorI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNT
dGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoVU5E
T19NQU5BR0VSKQorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK0pTRE9NVHJhbnNhY3Rpb246OkpTRE9NVHJhbnNhY3Rpb24oSlNPYmplY3QqIGZ1bmN0aW9u
LCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV93cmFwcGVyKHdyYXBwZXIpCisg
ICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKKyAgICAsIG1fY29udGV4dChjb250
ZXh0KQorICAgICwgbV91bmRvTWFuYWdlcigwKQoreworICAgIGlmICh3cmFwcGVyKQorICAgICAg
ICBtX2RpY3Rpb25hcnkuc2V0TWF5QmVOdWxsKCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEo
KSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlv
bik7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgaWYgKG1fZGljdGlvbmFyeSkKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJm1fZGljdGlvbmFyeSk7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6
Y2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8IHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xv
YmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7
CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTRGljdGlv
bmFyeSBqc0RpY3Rpb25hcnkoZXhlYywgbV9kaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBpZiAoIWpz
RGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTY3JpcHRW
YWx1ZSB2YWx1ZTsKKyAgICBpZiAoIWpzRGljdGlvbmFyeS5nZXQocHJvcGVydHlOYW1lLCB2YWx1
ZSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7
CisgICAgCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIAorICAgIGlmIChjYWxsVHlwZSAh
PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAg
ICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgaWYgKHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4
ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFs
dWUsIGFyZ3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBKU0M6OmNhbGwoZXhlYywgZnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICB9Cit9CisK
K3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1f
Y29udGV4dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1
bmFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAidW5kbyIpOwor
ICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJl
ZG9TdGVwKHRoaXMpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkoKQorewor
ICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJyZWRvIik7CisgICAgaWYgKG1fdW5k
b01hbmFnZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7
Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBKU0RPTVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUgSlNET01UcmFuc2FjdGlvbl9oCisKKyNp
ZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNp
bmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsK
K2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xh
c3MgSlNET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBET01UcmFuc2FjdGlvbiB7CitwdWJsaWM6Cisg
ICAgSlNET01UcmFuc2FjdGlvbihKU0M6OkpTT2JqZWN0KiBkaWN0aW9uYXJ5LCBKU0M6OkpTT2Jq
ZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqKTsKKyAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0RPTVRyYW5zYWN0
aW9uPiBjcmVhdGUoSlNDOjpKU09iamVjdCogZGljdGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3Jh
cHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0RPTVRy
YW5zYWN0aW9uKGRpY3Rpb25hcnksIHdyYXBwZXIsIGlzb2xhdGVkV29ybGQsIGNvbnRleHQpKTsK
KyAgICB9CisgICAgCisgICAgdm9pZCB2aXNpdERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYp
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURF
OworICAgIAorICAgIHZpcnR1YWwgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgT1ZFUlJJREUg
eyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdl
cihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIE9WRVJSSURFIHsgbV91bmRvTWFuYWdlciA9IHVu
ZG9NYW5hZ2VyOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgY2FsbFByb3BlcnR5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpOworICAgIAorICAg
IEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IG1fZGljdGlvbmFyeTsKKyAgICBKU0M6
OldlYWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOworICAgIFJlZlB0cjxET01XcmFwcGVyV29y
bGQ+IG1faXNvbGF0ZWRXb3JsZDsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9jb250ZXh0OworICAgIFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworfTsKKworfQorCisj
ZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0
OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
CisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgi
CisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyB2b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayhjb25zdCBVbmRvTWFuYWdlclN0YWNr
JiBzdGFjaywgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5
JiBlbnRyeSA9ICooc3RhY2tbaV0uZ2V0KCkpOworICAgICAgICBpZiAoZW50cnkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeVswXS0+aXNET01UcmFu
c2FjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVudHJ5LnNp
emUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5n
ZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RlcC0+aXNET01UcmFuc2FjdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVRyYW5zYWN0aW9uKj4oc3RlcCktPnZp
c2l0RGljdGlvbmFyeSh2aXNpdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNVbmRvTWFuYWdlciogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1VuZG9NYW5hZ2VyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2Vy
ID0gdGhpc09iamVjdC0+aW1wbCgpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRv
TWFuYWdlci0+dW5kb1N0YWNrKCksIHZpc2l0b3IpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5T
dGFjayh1bmRvTWFuYWdlci0+cmVkb1N0YWNrKCksIHZpc2l0b3IpOworfQorCisKK0pTVmFsdWUg
SlNVbmRvTWFuYWdlcjo6dHJhbnNhY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKCZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYyk7CisgICAgSlNVbmRvTWFuYWdlciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Vu
ZG9NYW5hZ2VyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNVbmRvTWFuYWdlcjo6c19pbmZvKTsKKyAgICBVbmRvTWFu
YWdlciogaW1wbCA9IHN0YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKKyAgICAKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIAorICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIWRpY3Rpb25hcnku
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgIAor
ICAgIGJvb2wgbWVyZ2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElz
VW5kZWZpbmVkKS50b0Jvb2xlYW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
ICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisg
ICAgUmVmUHRyPEpTRE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSlNET01UcmFuc2FjdGlv
bjo6Y3JlYXRlKGRpY3Rpb25hcnkuZ2V0T2JqZWN0KCksIHRoaXNWYWx1ZS5nZXRPYmplY3QoKSwg
Y3VycmVudFdvcmxkKGV4ZWMpLCBzY3JpcHRDb250ZXh0KTsKKyAgICAKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBpbXBsLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsK
KyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0
Q29tbWFuZC5oCShyZXZpc2lvbiAxMjIyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKICAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247IH0KKyNpZiBFTkFCTEUoVU5ET19N
QU5BR0VSKQorICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIGZhbHNlOyB9CisjZW5kaWYKICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCop
OwogICAgIGJvb2wgd2FzQ3JlYXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRB
Y3Rpb24gPT0gRWRpdEFjdGlvbkNyZWF0ZUxpbms7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgRE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFC
TEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVuZG9NYW5hZ2Vy
OworCitjbGFzcyBET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBVbmRvU3RlcCB7CitwdWJsaWM6Cisg
ICAgdmlydHVhbCB+RE9NVHJhbnNhY3Rpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZpZWQ7IH0KKyAgICBib29s
IGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAg
CisgICAgdmlydHVhbCBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKikgPSAwOworfTsKKworfQorCisjZW5k
aWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAx
MjIyNzkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJU
ZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5k
b01hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2lu
Y2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAz
LDEyIEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAg
Ly8gT25seSByZWdpc3RlciBhIG5ldyB1bmRvIGNvbW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2Vk
IGluIGlzCiAgICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAg
ICAgbV9sYXN0RWRpdENvbW1hbmQgPSBjbWQ7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9T
dGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAo
bV9sYXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQog
CiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCAr
ODI1LDEyIEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBt
X2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21k
LmdldCgpKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0
ZXJSZWRvU3RlcChjbWQpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFu
YWdlcigpLT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZW5kaWYgIAogICAgIHJlc3BvbmRUb0No
YW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZv
aWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rp
b25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcg
fCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRp
dENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQo
KSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQp
OworI2VuZGlmCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9
CiAKQEAgLTEyNDIsMjQgKzEyNTUsNDAgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVy
YXRpb25zKCkKIAogYm9vbCBFZGl0b3I6OmNhblVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vs
c2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5k
bygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7
CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsK
KyNlbmRpZgogfQogCiBib29sIEVkaXRvcjo6Y2FuUmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7Cisj
ZWxzZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5S
ZWRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZG8o
KTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygp
OworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpkaWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyMjI3OSkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCi0jaW5jbHVkZSAiTm9k
ZS5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDQsNiArNDQsNyBAQCBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6
Y3JlCiAKIFVuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcihOb2RlKiBob3N0KQogICAgIDogbV91bmRv
U2NvcGVIb3N0KGhvc3QpCisgICAgLCBtX2lzSW5Qcm9ncmVzcyhmYWxzZSkKIHsKIH0KIApAQCAt
NTIsMjAgKzUzLDExNSBAQCB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVIb3N0RGVzdHJveWVk
CiAgICAgbV91bmRvU2NvcGVIb3N0ID0gMDsKIH0KIAordm9pZCBVbmRvTWFuYWdlcjo6dHJhbnNh
Y3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24sIGJvb2wgbWVyZ2UsIEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2Nv
cGVIb3N0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGNsZWFyUmVkbyhlYyk7CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9N
YW5hZ2VyKHRoaXMpOworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICB0cmFu
c2FjdGlvbi0+ZXhlY3V0ZSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisg
ICAgaWYgKCFtZXJnZSB8fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIG1fdW5kb1N0
YWNrLmFwcGVuZChhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSkpOworICAgIG1fdW5kb1N0
YWNrLmxhc3QoKS0+YXBwZW5kKHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6
dW5kbyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1f
dW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFn
ZXJFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIGNvbnN0IFVu
ZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3VuZG9TdGFjay5sYXN0KCkuZ2V0KCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5
W2kgLSAxXS0+dW5hcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisg
ICAgbV9yZWRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5LnJlbGVhc2UoKSk7CisgICAg
bV91bmRvU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2Nv
cGVIb3N0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2luUHJvZ3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5
KTsKKyAgICAKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgY29uc3QgVW5kb01hbmFn
ZXJFbnRyeSYgZW50cnkgPSAqKG1fcmVkb1N0YWNrLmxhc3QoKS5nZXQoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFd
LT5yZWFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3Vu
ZG9TdGFjay5hcHBlbmQobV9pblByb2dyZXNzRW50cnkucmVsZWFzZSgpKTsKKyAgICBtX3JlZG9T
dGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQogeworICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgdW5kbyhlYyk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6
OnJlZG8oKQogeworICAgIEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgcmVkbyhlYyk7Cit9CisKK3Zv
aWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3Rl
cCkKK3sKKyAgICBpZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIFVuZG9NYW5hZ2VyRW50
cnkqIGVudHJ5ID0gbmV3IFVuZG9NYW5hZ2VyRW50cnk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQo
c3RlcCk7CisgICAgICAgIG1fdW5kb1N0YWNrLmFwcGVuZChhZG9wdFB0cihlbnRyeSkpOworICAg
ICAgICAKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAgICAgICAgY2xlYXJSZWRvKGVjKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgbV9pblByb2dyZXNzRW50cnktPmFwcGVuZChzdGVwKTsKK30K
Kwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVw
PiBzdGVwKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jlc3MpIHsKKyAgICAgICAgVW5kb01hbmFn
ZXJFbnRyeSogZW50cnkgPSBuZXcgVW5kb01hbmFnZXJFbnRyeTsKKyAgICAgICAgZW50cnktPmFw
cGVuZChzdGVwKTsKKyAgICAgICAgbV9yZWRvU3RhY2suYXBwZW5kKGFkb3B0UHRyKGVudHJ5KSk7
CisgICAgfSBlbHNlCisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBlbmQoc3RlcCk7CiB9
CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kbygpCit2b2lkIFVuZG9NYW5hZ2VyOjpjbGVh
clVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFt
X3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKIH0KIAotdm9pZCBV
bmRvTWFuYWdlcjo6Y2xlYXJSZWRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbyhFeGNl
cHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3Bl
SG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjIyNzkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMyICszMyw2
MiBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKKyNpbmNsdWRlICJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTVRy
YW5zYWN0aW9uOwogY2xhc3MgTm9kZTsKIAordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFVuZG9TdGVw
PiA+IFVuZG9NYW5hZ2VyRW50cnk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VW5kb01hbmFnZXJF
bnRyeT4gPiBVbmRvTWFuYWdlclN0YWNrOworCiBjbGFzcyBVbmRvTWFuYWdlciA6IHB1YmxpYyBS
ZWZDb3VudGVkPFVuZG9NYW5hZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
VW5kb01hbmFnZXI+IGNyZWF0ZShOb2RlKiBob3N0KTsKICAgICB2b2lkIHVuZG9TY29wZUhvc3RE
ZXN0cm95ZWQoKTsKKyAgICAKKyAgICB2b2lkIHRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNh
Y3Rpb24+LCBib29sLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lkIHVuZG8oRXhjZXB0aW9u
Q29kZSYpOworICAgIHZvaWQgcmVkbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB1bmRvKCk7
CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgaW5saW5lIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgpICsgbV9yZWRvU3RhY2suc2l6ZSgp
OyB9IAorICAgIGlubGluZSB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9yZWRvU3RhY2suc2l6ZSgpOyB9CiAKLSAgICB2b2lkIGNsZWFyVW5kbygpOwotICAgIHZvaWQg
Y2xlYXJSZWRvKCk7CisgICAgdm9pZCBjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYpOworICAgIHZv
aWQgY2xlYXJSZWRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAgICBpbmxpbmUgYm9vbCBjYW5V
bmRvKCkgY29uc3QgeyByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsgfQorICAgIGlubGlu
ZSBib29sIGNhblJlZG8oKSBjb25zdCB7IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOyB9
CisgICAgCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsK
KyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAor
ICAgIGlubGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiB1bmRvU3RhY2soKSBjb25zdCB7IHJl
dHVybiBtX3VuZG9TdGFjazsgfQorICAgIGlubGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiBy
ZWRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFjazsgfQogCiBwcml2YXRlOgogICAg
IFVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpOwogICAgIE5vZGUqIG1fdW5kb1Njb3BlSG9zdDsKLX07
CiAgICAgCisgICAgVW5kb01hbmFnZXJTdGFjayBtX3VuZG9TdGFjazsKKyAgICBVbmRvTWFuYWdl
clN0YWNrIG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7CisgICAgT3duUHRy
PFVuZG9NYW5hZ2VyRW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5OworfTsKKwogfQotICAgIAorCiAj
ZW5kaWYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2Vy
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlk
bAkocmV2aXNpb24gMTIyMjc5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdl
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwyMyBAQAogbW9kdWxlIGNvcmUgewog
CiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VSCisgICAg
ICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAgICAgSlNDdXN0b21NYXJrRnVuY3Rp
b24KICAgICBdIFVuZG9NYW5hZ2VyIHsKLSAgICAgICAgdm9pZCB1bmRvKCk7Ci0gICAgICAgIHZv
aWQgcmVkbygpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0KGluIERpY3Rpb25hcnkg
dHJhbnNhY3Rpb24sIGluIGJvb2xlYW4gbWVyZ2UpOwogCi0gICAgICAgIHZvaWQgY2xlYXJVbmRv
KCk7Ci0gICAgICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgICAgIHZvaWQgdW5kbygpCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZWRvKCkKKyAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBwb3NpdGlvbjsKKworICAgICAgICB2b2lkIGNsZWFyVW5kbygpCisg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbGVhclJlZG8o
KQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIyMjc5KQorKysgU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVhcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigp
IGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9vbCBp
c0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMjIyNzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsNyBAQCB2b2lkIEVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OmRpZFNldFNlbGVjCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUg
cmVhY2hlZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0YWNrLgogICAgIGlmIChtX3Vu
ZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9T
dGFjay5yZW1vdmVGaXJzdCgpOwpAQCAtMjY4LDI3ICsyNjksNDQgQEAgdm9pZCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZAogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwog
CiAgICAgbV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3Rl
clJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgbV9yZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2Vu
ZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0Vt
cHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpj
YW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMDMsNiArMzIx
LDcgQEAgYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVk
aXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0
b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4g
Y29tbWFuZCgqYmFjayk7CkBAIC0zMTEsMTAgKzMzMCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnVuZG8oKQogICAgICAgICAvLyBVbmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRv
IHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIGNvbW1hbmQt
PnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0Jl
cnJ5OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVk
bygpKSB7CiAgICAgICAgIEVkaXRDb21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVk
b1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpA
QCAtMzI3LDYgKzM0OCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiAg
ICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAg
ICB9CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBs
LmNwcAkocmV2aXNpb24gMTIyMjc5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSwyMiArMjk1LDMyIEBAIHZv
aWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHkKIAogdm9pZCBFZGl0b3JDbGll
bnRJbXBsOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBt
YXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7
IC8vIGRyb3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBmYXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykK
ICAgICAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3Rl
cCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3Rl
cCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQo
c3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lk
IEVkaXRvckNsaWVudEltcGw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0
YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5
Q3V0KEZyYW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzMz
OSwyNSBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wg
RWRpdG9yQ2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8o
KSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRv
U3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJh
dG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+
IHN0ZXAoKmJhY2spOwpAQCAtMzQ2LDEwICszNjUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBs
Ojp1bmRvKCkKICAgICAgICAgc3RlcC0+dW5hcHBseSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdp
bGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2su
CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBV
bmRvTWFuYWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAg
ICAgICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM2MSw2ICszODIsNyBAQCB2
b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZG8oKQogICAgICAgICAvLyByZWFwcGx5IHdpbGwgY2Fs
bCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHVuZG8gc3RhY2suCiAgICAg
ICAgIG1faW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIC8vCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5j
cHAJKHJldmlzaW9uIDEyMjI3OSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMCArMTc4LDMwIEBA
IHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25UeXAKIAogdm9pZCBFZGl0b3JD
bGllbnRFZmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVw
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmICghbV9pc0luUmVkbykKICAg
ICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLnByZXBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEVmbDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLnByZXBlbmQoc3Rl
cCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogICAgIHVuZG9TdGFjay5jbGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVh
cigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1l
KiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yMDYsMjQgKzIxNiwzNSBAQCBib29sIEVk
aXRvckNsaWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBiCiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZs
OjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1
cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6
OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkp
IHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gdW5kb1N0YWNrLnRh
a2VGaXJzdCgpOwogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3Rl
cD4gc3RlcCA9IHJlZG9TdGFjay50YWtlRmlyc3QoKTsKIApAQCAtMjMyLDYgKzI1Myw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAg
ICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRp
dG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTIyMjc5KQor
KysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjg4LDIyICsyODgsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRp
ZFNldFNlbGVjdGlvblR5cGVzRgogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3Rl
cChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9T
dGFja0RlcHRoKQogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKICAgICBpZiAoIW1f
aXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFjay5hcHBl
bmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2
b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVk
b1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2Vu
ZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAg
cmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhbkNv
cHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwy
NiArMzI4LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5QYXN0ZShXZWJDb3JlOjpGcmEKIAog
Ym9vbCBFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5SZWRvKCkgY29u
c3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5p
c0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYg
KGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigt
LXVuZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNr
LmVuZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRo
aXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7
CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CiAgICAgICAg
IHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBA
IHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAg
ICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9y
SW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMjIyNzkpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjM5LDEyICsyMzksMTYgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29y
ZEJlZm9yZU1lbgogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9w
YWdlLT5kLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAg
ICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVk
aXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkKICAgICAgICAg
cmV0dXJuOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2gobmV3IFVuZG9TdGVwUXQoc3Rl
cCkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3Rl
cChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBA
QCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9y
Q2xpZW50UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5k
b1N0YWNrKCktPmNsZWFyKCk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dFF0OjpjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0
CkBAIC0yNzAsMzggKzI3Niw1MCBAQCBib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJD
b3JlOjpGCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBm
YWxzZTsKICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsK
ICNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3JDbGllbnRRdDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICBy
ZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuUmVkbygpOwogI2VuZGlmCisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAg
ICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT51bmRvKCk7
CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudFF0OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5k
ZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2Ut
PnVuZG9TdGFjaygpLT5yZWRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYK
KyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2RlKE5vZGUq
IG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDEyMjI3OSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA2LTIxICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vr
b2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5kb01hbmFnZXIncyB1bmRv
LCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVhclJlZG8KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTA3LTEwICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgQ3Jhc2ggZHVlIHRvIFNWRyBhbmltYXRpb24gZWxlbWVudCBub3QgcmVtb3ZlZCBmcm9tIHRh
cmdldCAoYmVmb3JlIHJlc2V0KQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5k
b21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MiBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHVuZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFu
ZCBwb3NpdGlvbi4KKworUEFTUyBkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIAor
UEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydGllcyB1bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBw
b3NpdGlvbi4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZv
ciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAoMCkuIAorUEFTUyBBZnRlciBpbnNlcnRpbmcgdGV4
dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9u
IGlzIDAuIAorUEFTUyBBZnRlciBib2xkaW5nIHRoZSB0ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0
aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3Qn
LiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9z
aXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAndGVzdCcuIAorUEFTUyBBZnRl
ciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBh
bmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2Vy
J3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxh
aW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMg
MiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCisK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1y
ZWRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91
bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODcgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5VbmRvTWFuYWdlciBoYXMgdW5kbygpIGFuZCByZWRvKCkgdGhhdCB3b3JrPC90aXRsZT4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8o
KSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisKKzxkaXYgaWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJs
ZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFn
ZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFn
ZXIsICJ1bmRvIik7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFn
ZXIsICJyZWRvIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdl
ciwgImxlbmd0aCIpOworICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFn
ZXIsICJwb3NpdGlvbiIpOworfSwgInVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJl
ZG8sIGxlbmd0aCwgYW5kIHBvc2l0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFz
c2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRf
dHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdl
ciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24g
KDApLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImVkaXQiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRp
b24oZWRpdCwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxz
ZSwgInRlc3QiKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5s
ZW5ndGggPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRp
b24gPT0gMCk7Cit9LCAiQWZ0ZXIgaW5zZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRv
TWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3NpdGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5h
ZGRSYW5nZShyYW5nZSk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwg
bnVsbCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3Ro
ID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09
IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOwor
fSwgIkFmdGVyIGJvbGRpbmcgdGhlIHRleHQsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5k
IHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAg
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAg
ICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7Cisg
ICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAg
YXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5n
LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJl
c3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
ZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRN
TCA9PSAiIik7Cit9LCAiQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBh
bmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNz
ZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRv
TWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBp
cyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1l
bnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFu
YWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAi
PGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBp
cyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIp
OworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151580</attachid>
            <date>2012-07-10 19:37:24 -0700</date>
            <delta_ts>2012-07-11 13:21:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120710193910.patch</filename>
            <type>text/plain</type>
            <size>68601</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTEwICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qu
aHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
VHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEpTRE9NVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2Fj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lz
dGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVk
b1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kbyk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAgKiBlZGl0aW5n
L1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5h
Z2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5SZWRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFu
YWdlci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAgICAoVW5kb1N0
ZXApOgorCiAyMDEyLTA3LTEwICBLZXZpbiBFbGxpcyAgPGtldmVyc0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgSW5wdXQgZWxlbWVudHMgd2l0aCB0eXBlPXJhbmdlIGRvIG5vdCBoYXZlIGRlZmF1
bHQgdG91Y2ggaGFuZGxlcnMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJl
dmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTEzOTksNiArMTM5OSw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAgXApAQCAtMTUyMCw2ICsxNTIyLDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5j
cHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMTA2LDYgKzIxMDksNyBAQCB3ZWJjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lv
biAxMjIyODkpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzUsNiArMjc1LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xp
c3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAg
XApAQCAtMzU3LDYgKzM1OCw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50MzJB
cnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAg
XAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5n
cy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dl
YkNvcmUvVXNlSlNDLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQkocmV2aXNpb24gMTIyMjg5KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDEzIEBAIElGIChFTkFCTEVfV0VCX0lOVEVOVFMp
CiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9VTkRPX01BTkFHRVIpCisgICAgTElTVCAo
QVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0
aW9uLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAorICAg
ICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNP
UkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjIyODkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU1MCwzICsyNTUwLDkgQEAgX19aTjdXZWJDb3Jl
MjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJuYXRp
dmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9fWk43V2ViQ29y
ZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3RyaW5n
Uk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNlbmRp
ZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1bWVudDExdW5k
b01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19fWk43V2ViQ29y
ZTExVW5kb01hbmFnZXI0dW5kb0V2CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlz
aW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5
KQpAQCAtMTk2Niw2ICsxOTY2LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RpcmVj
dG9yeUVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEaXJlY3Rv
cnlFbnRyeVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlv
bi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCcsCkBAIC0yMDcwLDYgKzIwNzIsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjIyODkpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5
KQpAQCAtMjI1MDMsNiArMjI1MDMsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFt
ZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVp
bGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNWYWxp
ZGl0eVN0YXRlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC01NTQ0Nyw2
ICs1NTUwMywxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxlZGl0aW5nXERPTVRyYW5zYWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRWRpdEFjdGlvbi5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KQEAgLTU3NzcxLDYgKzU3ODMxLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb01hbmFnZXIuY3BwIgor
CQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJ
CTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVn
X0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVj
dGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxlZGl0aW5nXFVuZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb1N0ZXAuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkBAIC02NTcwNiw2ICs2NTgyMiw2MiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpT
RE9NVHJhbnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
CS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdf
QWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJ
CQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9
IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01UcmFuc2FjdGlvbi5oIgorCQkJCQk+
CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNET01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
QEAgLTY5NDk4LDYgKzY5NjcwLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNV
bmRvTWFuYWdlckN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjIy
ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE5NDIsOCArMTk0MiwxMiBAQAogCQk3QUYxMUE1QTEyRTcyNzQ5
MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5z
cGVjdG9yUnVudGltZUFnZW50LmggKi87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAv
KiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0
RkY0MTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4
ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cCAqLzsgfTsKIAkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0Mx
NTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBDRjE1
NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5k
b01hbmFnZXIuaCAqLzsgfTsKKwkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJh
bnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9
OworCQk3QjUxN0U4NTE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODMxNUFDRjFG
NTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0I1MTdFODcxNUFDRjIx
MTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNh
Y3Rpb24uaCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2Vy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4
NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCOTE4NEQz
MTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9N
YW5hZ2VyLmggKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9y
aXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMz
Q0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MDcwLDggKzkwNzQsMTIgQEAKIAkJ
N0FGMTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNj
cmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3
N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9t
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVW5kb01hbmFnZXJD
dXN0b20uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07
CiAJCTdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRv
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3
QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5z
YWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rp
b24uaDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0I1MTdF
ODYxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvTWFuYWdlci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAv
KiBVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFu
YWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMTE1NzU4RTQyMDA5
MkFBOTMgLyogVW5kb01hbmFnZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5h
Z2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTcxLDYgKzE2OTc5LDcg
QEAKIAkJCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUu
aCAqLywKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5j
cHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQu
aCAqLywKKwkJCQk3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCAq
LywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICovLAogCQkJ
CTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMz
MDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0xOTk0Miw2ICsx
OTk1MSw4IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5o
ICovLAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5j
cHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0
LmggKi8sCisJCQkJN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24u
Y3BwICovLAorCQkJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9u
LmggKi8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5j
cHAgKi8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5o
ICovLAogCQkJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNw
cCAqLywKQEAgLTIwMTg0LDYgKzIwMTk1LDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlG
QUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUxMDUwOEQ5QzAw
MDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkwNUExNEMwRjYx
MTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAorCQkJCTdCMDk5
MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlG
RDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRB
bmltYXRpb25DdXN0b20uY3BwICovLApAQCAtMjI5MzIsNiArMjI5NDQsNyBAQAogCQkJCTE4ODYw
NEI0MEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDVG
RDY5RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0I1MTdFODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2Fs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJl
ZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8q
IERPTVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU4MSw2ICsyMzU5
NCw3IEBACiAJCQkJQzUxMzdDRjMxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3RyaW5nTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3Ry
aW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Njk0NTYzRDEyMTREOTdDMDAwN0NCQUUgLyog
SlNET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNTE3RTg1MTVBQ0YxRjUwMEYx
NkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEy
REJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjkzMjc0
MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjc2MCw2ICsyNjc3NCw3IEBACiAJCQkJQkM2NDY0OUMxMUQ4MjM4QzAwNjQ1
NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2OTQ1
NjNDMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNEUwQkM1NjEzNjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJh
bnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMz
IC8qIEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCQTBDMDlFQjE4QzcwMDc5
N0M3RiAvKiBKU0RPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY5MzI3MzBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcy
MjcsNiArMjcyNDIsNyBAQAogCQkJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAvKiBKU1VpbnQ4
Q2xhbXBlZEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkxQTM5MDVCMTRDMEY2MTEwMEY2
NzkwMSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdCMUVBMENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1Zh
bGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3RjcxM0Q0QzhCRDAwNEU0
MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4RTlCREYx
M0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcg
QEAKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9N
U3RyaW5nTWFwQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dC
YXNlLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3dTaGVsbC5jcHAiCkBAIC0xNTUsNiArMTU2LDcgQEAKICNpbmNsdWRlICJKU1VpbnQz
MkFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXlDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVW5kb01h
bmFnZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NVHJh
bnNhY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpT
RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgor
I2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTRE9NVHJhbnNh
Y3Rpb246OkpTRE9NVHJhbnNhY3Rpb24oSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3Jh
cHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorICAgIDogbV93cmFwcGVyKHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVk
V29ybGQoaXNvbGF0ZWRXb3JsZCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91
bmRvTWFuYWdlcigwKQoreworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2RpY3Rpb25hcnku
c2V0TWF5QmVOdWxsKCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVu
Y3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7Cit9CisKK3ZvaWQg
SlNET01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgaWYgKG1fZGljdGlvbmFyeSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
ZGljdGlvbmFyeSk7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6Y2FsbFByb3BlcnR5KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cisg
ICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rpb25h
cnkoZXhlYywgbV9kaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBpZiAoIWpzRGljdGlvbmFyeS5pc1Zh
bGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZTsKKyAg
ICBpZiAoIWpzRGljdGlvbmFyeS5nZXQocHJvcGVydHlOYW1lLCB2YWx1ZSkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7CisgICAgCisgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5j
dGlvbiwgY2FsbERhdGEpOworICAgIAorICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUp
IHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNET01UcmFu
c2FjdGlvbjo6ZXhlY3V0ZSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwg
ImV4ZWN1dGUiKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAg
ICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAidW5kbyIpOworICAgIGlmIChtX3VuZG9N
YW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOwor
fQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkoKQoreworICAgIGNhbGxQcm9wZXJ0
eShtX2NvbnRleHQuZ2V0KCksICJyZWRvIik7CisgICAgaWYgKG1fdW5kb01hbmFnZXIpCisgICAg
ICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7Cit9CisKK30KKworI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlv
bi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFu
c2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0RPTVRyYW5z
YWN0aW9uX2gKKyNkZWZpbmUgSlNET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19N
QU5BR0VSKQorCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1l
L0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgSlNET01UcmFuc2Fj
dGlvbiA6IHB1YmxpYyBET01UcmFuc2FjdGlvbiB7CitwdWJsaWM6CisgICAgSlNET01UcmFuc2Fj
dGlvbihKU0M6OkpTT2JqZWN0KiBkaWN0aW9uYXJ5LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBE
T01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KyAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiBjcmVhdGUoSlND
OjpKU09iamVjdCogZGljdGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBl
cldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0RPTVRyYW5zYWN0aW9uKGRpY3Rp
b25hcnksIHdyYXBwZXIsIGlzb2xhdGVkV29ybGQsIGNvbnRleHQpKTsKKyAgICB9CisgICAgCisg
ICAgdm9pZCB2aXNpdERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAgIHZp
cnR1YWwgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgT1ZFUlJJREUgeyByZXR1cm4gbV91bmRv
TWFuYWdlcjsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciog
dW5kb01hbmFnZXIpIE9WRVJSSURFIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIHZvaWQgY2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpOworICAgIAorICAgIEpTQzo6V3JpdGVCYXJy
aWVyPEpTQzo6SlNPYmplY3Q+IG1fZGljdGlvbmFyeTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU09i
amVjdD4gbV93cmFwcGVyOworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRX
b3JsZDsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OworICAg
IFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJK
U0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHZpc2l0
VHJhbnNhY3Rpb25zSW5TdGFjayhjb25zdCBVbmRvTWFuYWdlclN0YWNrJiBzdGFjaywgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFjay5zaXpl
KCk7ICsraSkgeworICAgICAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICooc3Rh
Y2tbaV0uZ2V0KCkpOworICAgICAgICBpZiAoZW50cnkuaXNFbXB0eSgpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmIChlbnRyeVswXS0+aXNET01UcmFuc2FjdGlvbigpKSB7Cisg
ICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVudHJ5LnNpemUoKTsgKytqKSB7Cisg
ICAgICAgICAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5nZXQoKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RlcC0+aXNET01UcmFuc2FjdGlvbigpKTsKKyAgICAgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxKU0RPTVRyYW5zYWN0aW9uKj4oc3RlcCktPnZpc2l0RGljdGlvbmFyeSh2
aXNpdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBKU1Vu
ZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0
b3IpCit7CisgICAgSlNVbmRvTWFuYWdlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1VuZG9NYW5h
Z2VyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAm
c19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOwor
ICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNW
aXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlz
aXRvcik7CisgICAgCisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyID0gdGhpc09iamVjdC0+
aW1wbCgpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFuYWdlci0+dW5kb1N0
YWNrKCksIHZpc2l0b3IpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFuYWdl
ci0+cmVkb1N0YWNrKCksIHZpc2l0b3IpOworfQorCisKK0pTVmFsdWUgSlNVbmRvTWFuYWdlcjo6
dHJhbnNhY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1VuZG9N
YW5hZ2VyOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7Cisg
ICAgSlNVbmRvTWFuYWdlciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4oYXNP
YmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRU
aGlzLCAmSlNVbmRvTWFuYWdlcjo6c19pbmZvKTsKKyAgICBVbmRvTWFuYWdlciogaW1wbCA9IHN0
YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKKyAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
ZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIAorICAgIEpT
VmFsdWUgZGljdGlvbmFyeSA9IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1
bHRJc1VuZGVmaW5lZCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIWRpY3Rpb25hcnkuaXNPYmplY3QoKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgIAorICAgIGJvb2wgbWVyZ2Uo
TUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0Jv
b2xlYW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRD
b250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4
dCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgUmVmUHRyPEpTRE9N
VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKGRpY3Rp
b25hcnkuZ2V0T2JqZWN0KCksIHRoaXNWYWx1ZS5nZXRPYmplY3QoKSwgY3VycmVudFdvcmxkKGV4
ZWMpLCBzY3JpcHRDb250ZXh0KTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBpbXBsLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsKKyAgICBzZXRET01FeGNl
cHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZp
c2lvbiAxMjIyODkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21t
YW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBP
VkVSUklERTsKICAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX2VkaXRBY3Rpb247IH0KKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJv
b2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCopOwogICAgIGJvb2wgd2Fz
Q3JlYXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRBY3Rpb24gPT0gRWRpdEFj
dGlvbkNyZWF0ZUxpbms7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFu
c2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNh
Y3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNh
Y3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NVHJhbnNhY3Rp
b25faAorI2RlZmluZSBET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VS
KQorCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVuZG9NYW5hZ2VyOworCitjbGFzcyBET01U
cmFuc2FjdGlvbiA6IHB1YmxpYyBVbmRvU3RlcCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE9N
VHJhbnNhY3Rpb24oKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZSgpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBs
eSgpID0gMDsKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZpZWQ7IH0KKyAgICBib29sIGlzRE9NVHJhbnNhY3Rp
b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgdmlydHVhbCBV
bmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVuZG9N
YW5hZ2VyKFVuZG9NYW5hZ2VyKikgPSAwOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMjIyODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDcgQEAKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKICNp
bmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZvaWQgRWRp
dG9yOjphcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSByZWdpc3Rl
ciBhIG5ldyB1bmRvIGNvbW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAgICAgICAg
IC8vIGRpZmZlcmVudCBmcm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0RWRpdENv
bW1hbmQgPSBjbWQ7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlmIChjbGll
bnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRD
b21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1h
bmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVzcG9uZFRv
Q2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBAIHZvaWQg
RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0aXZlVGV4
dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAK
ICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQp
OworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3Rl
clJlZG9TdGVwKGNtZCk7CisjZW5kaWYgIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhu
ZXdTZWxlY3Rpb24pOwogfQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9yOjpyZWFw
cGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQo
bmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlv
bjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOwor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xp
ZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlmCiAgICAg
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEyNDIsMjQg
KzEyNTUsNDAgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIAogYm9v
bCBFZGl0b3I6OmNhblVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJl
dHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICByZXR1cm4g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlmCiB9
CiAKIHZvaWQgRWRpdG9yOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQorICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQogCiBi
b29sIEVkaXRvcjo6Y2FuUmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJldHVy
biBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNlCisgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yOjpkaWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAK
ICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCi0jaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUg
IkRPTVRyYW5zYWN0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNiArNDQs
NyBAQCBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlCiAKIFVuZG9NYW5h
Z2VyOjpVbmRvTWFuYWdlcihOb2RlKiBob3N0KQogICAgIDogbV91bmRvU2NvcGVIb3N0KGhvc3Qp
CisgICAgLCBtX2lzSW5Qcm9ncmVzcyhmYWxzZSkKIHsKIH0KIApAQCAtNTIsMjAgKzUzLDExNSBA
QCB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVIb3N0RGVzdHJveWVkCiAgICAgbV91bmRvU2Nv
cGVIb3N0ID0gMDsKIH0KIAordm9pZCBVbmRvTWFuYWdlcjo6dHJhbnNhY3QoUGFzc1JlZlB0cjxE
T01UcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24sIGJvb2wgbWVyZ2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGNsZWFyUmVkbyhlYyk7CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2VyKHRoaXMpOwor
ICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICB0cmFuc2FjdGlvbi0+ZXhlY3V0
ZSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgaWYgKCFtZXJnZSB8
fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIG1fdW5kb1N0YWNrLmFwcGVuZChhZG9w
dFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSkpOworICAgIG1fdW5kb1N0YWNrLmxhc3QoKS0+YXBw
ZW5kKHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6dW5kbyhFeGNlcHRpb25D
b2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkg
eworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAg
bV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAg
CisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkm
IGVudHJ5ID0gKihtX3VuZG9TdGFjay5sYXN0KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkg
PSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+dW5hcHBs
eSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgbV9yZWRvU3RhY2su
YXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5LnJlbGVhc2UoKSk7CisgICAgbV91bmRvU3RhY2sucmVt
b3ZlTGFzdCgpOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2luUHJv
Z3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAKKyAgICBt
X2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkg
PSAqKG1fcmVkb1N0YWNrLmxhc3QoKS5nZXQoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IGVudHJ5
LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFdLT5yZWFwcGx5KCk7Cisg
ICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3VuZG9TdGFjay5hcHBlbmQo
bV9pblByb2dyZXNzRW50cnkucmVsZWFzZSgpKTsKKyAgICBtX3JlZG9TdGFjay5yZW1vdmVMYXN0
KCk7Cit9CisKIHZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQogeworICAgIEV4Y2VwdGlvbkNvZGUg
ZWM7CisgICAgdW5kbyhlYyk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OnJlZG8oKQogeworICAg
IEV4Y2VwdGlvbkNvZGUgZWM7CisgICAgcmVkbyhlYyk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6
OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sKKyAgICBpZiAo
IW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRy
eSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50cnktPmFwcGVu
ZChzdGVwKTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVhc2UoKSk7Cisg
ICAgICAgIAorICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICBjbGVhclJlZG8oZWMp
OworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOwor
fQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0
ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykgeworICAgICAgICBPd25QdHI8
VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7
CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAgIG1fcmVkb1N0YWNrLmFwcGVu
ZChlbnRyeS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRy
eS0+YXBwZW5kKHN0ZXApOwogfQogCi12b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVuZG8oKQordm9p
ZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogeworICAgIGlmICht
X2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG1fdW5kb1N0YWNrLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbygpCit2b2lkIFVuZG9NYW5h
Z2VyOjpjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG1faXNJblByb2dy
ZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAkocmV2aXNpb24gMTIy
Mjg5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMywzMiArMzMsNjIgQEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBET01UcmFuc2FjdGlvbjsKIGNsYXNzIE5vZGU7CiAKK3R5cGVkZWYgVmVj
dG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBVbmRvTWFuYWdlckVudHJ5OwordHlwZWRlZiBWZWN0b3I8
T3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+ID4gVW5kb01hbmFnZXJTdGFjazsKKwogY2xhc3MgVW5k
b01hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmRvTWFuYWdlcj4gewogcHVibGljOgogICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBjcmVhdGUoTm9kZSogaG9zdCk7CiAgICAg
dm9pZCB1bmRvU2NvcGVIb3N0RGVzdHJveWVkKCk7CisgICAgCisgICAgdm9pZCB0cmFuc2FjdChQ
YXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogCisgICAg
dm9pZCB1bmRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlZG8oRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgdW5kbygpOwogICAgIHZvaWQgcmVkbygpOworICAgIAorICAgIGlubGluZSB1
bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1N0YWNrLnNpemUoKSAr
IG1fcmVkb1N0YWNrLnNpemUoKTsgfSAKKyAgICBpbmxpbmUgdW5zaWduZWQgbG9uZyBwb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkb1N0YWNrLnNpemUoKTsgfQogCi0gICAgdm9pZCBjbGVh
clVuZG8oKTsKLSAgICB2b2lkIGNsZWFyUmVkbygpOworICAgIHZvaWQgY2xlYXJVbmRvKEV4Y2Vw
dGlvbkNvZGUmKTsKKyAgICB2b2lkIGNsZWFyUmVkbyhFeGNlcHRpb25Db2RlJik7CisgICAgCisg
ICAgaW5saW5lIGJvb2wgY2FuVW5kbygpIGNvbnN0IHsgcmV0dXJuICFtX3VuZG9TdGFjay5pc0Vt
cHR5KCk7IH0KKyAgICBpbmxpbmUgYm9vbCBjYW5SZWRvKCkgY29uc3QgeyByZXR1cm4gIW1fcmVk
b1N0YWNrLmlzRW1wdHkoKTsgfQorICAgIAorICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNz
UmVmUHRyPFVuZG9TdGVwPik7CisgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8
VW5kb1N0ZXA+KTsKKyAgICAKKyAgICBpbmxpbmUgY29uc3QgVW5kb01hbmFnZXJTdGFjayYgdW5k
b1N0YWNrKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2s7IH0KKyAgICBpbmxpbmUgY29uc3Qg
VW5kb01hbmFnZXJTdGFjayYgcmVkb1N0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9yZWRvU3RhY2s7
IH0KIAogcHJpdmF0ZToKICAgICBVbmRvTWFuYWdlcihOb2RlKiBob3N0KTsKICAgICBOb2RlKiBt
X3VuZG9TY29wZUhvc3Q7Ci19OwogICAgIAorICAgIFVuZG9NYW5hZ2VyU3RhY2sgbV91bmRvU3Rh
Y2s7CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3JlZG9TdGFjazsKKyAgICBib29sIG1faXNJblBy
b2dyZXNzOworICAgIE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiBtX2luUHJvZ3Jlc3NFbnRyeTsK
K307CisKIH0KLSAgICAKKwogI2VuZGlmCiAKICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5pZGwJKHJldmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMjMg
QEAKIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVyZmFjZSBbCi0gICAgICAgIENvbmRpdGlvbmFs
PVVORE9fTUFOQUdFUgorICAgICAgICBDb25kaXRpb25hbD1VTkRPX01BTkFHRVIsCisgICAgICAg
IEpTQ3VzdG9tTWFya0Z1bmN0aW9uCiAgICAgXSBVbmRvTWFuYWdlciB7Ci0gICAgICAgIHZvaWQg
dW5kbygpOwotICAgICAgICB2b2lkIHJlZG8oKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCB0cmFu
c2FjdChpbiBEaWN0aW9uYXJ5IHRyYW5zYWN0aW9uLCBpbiBib29sZWFuIG1lcmdlKTsKIAotICAg
ICAgICB2b2lkIGNsZWFyVW5kbygpOwotICAgICAgICB2b2lkIGNsZWFyUmVkbygpOworICAgICAg
ICB2b2lkIHVuZG8oKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAg
IHZvaWQgcmVkbygpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcG9zaXRpb247CisKKyAgICAgICAg
dm9pZCBjbGVhclVuZG8oKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAg
ICAgIHZvaWQgY2xlYXJSZWRvKCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwog
ICAgIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHJldmlzaW9uIDEy
MjI4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSA9IDA7CiAgICAgdmlydHVhbCBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCA9IDA7CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
KyAgICB2aXJ0dWFsIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0ID0gMDsKKyNlbmRpZgog
fTsKIAogfQpJbmRleDogU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkocmV2aXNp
b24gMTIyMjg5KQorKysgU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsNiArMjYwLDcg
QEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpkaWRTZXRTZWxlYwogCiB2b2lkIEVkaXRv
ckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4g
c3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAvLyBSZW1vdmUgdGhlIG9s
ZGVzdCBpdGVtIGlmIHdlJ3ZlIHJlYWNoZWQgdGhlIG1heGltdW0gY2FwYWNpdHkgZm9yIHRoZSBz
dGFjay4KICAgICBpZiAobV91bmRvU3RhY2suc2l6ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0
aCkKICAgICAgICAgbV91bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKQEAgLTI2OCwyNyArMjY5LDQ0
IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmQKICAgICAgICAgbV9y
ZWRvU3RhY2suY2xlYXIoKTsKIAogICAgIG1fdW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVkb1N0YWNrLmFwcGVuZChzdGVw
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgbV9yZWRv
U3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVy
biAhbV91bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5SZWRvKCkgY29uc3QKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1w
dHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6Y2FuQ29weUN1dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdApAQCAtMzAzLDYgKzMyMSw3IEBAIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2Fu
UGFzdGUoRnIKIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1bmRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIEVkaXRD
b21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAg
ICBSZWZQdHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzExLDEwICszMzAsMTIgQEAg
dm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojp1bmRvKCkKICAgICAgICAgLy8gVW5hcHBseSB3
aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNr
LgogICAgICAgICBjb21tYW5kLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVy
YXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVw
PiBjb21tYW5kKCpiYWNrKTsKQEAgLTMyNyw2ICszNDgsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnJlZG8oKQogICAgICAgICBjb21tYW5kLT5yZWFwcGx5KCk7CiAgICAgICAgIG1f
aW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBDdHJsS2V5ID0gMSA8PCAwOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
OTUsMjIgKzI5NSwzMiBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OmRpZFNldFNlbGVjdGlvblR5
CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChtX3Vu
ZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9T
dGFjay5yZW1vdmVGaXJzdCgpOyAvLyBkcm9wIG9sZGVzdCBpdGVtIG9mZiB0aGUgZmFyIGVuZAog
ICAgIGlmICghbV9pblJlZG8pCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgbV91
bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclJlZG9TdGVwKFBhc3NS
ZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
bV9yZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xl
YXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50SW1wbDo6Y2FuQ29weUN1dChGcmFtZSogZnJhbWUsIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdApAQCAtMzI5LDE2ICszMzksMjUgQEAgYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5QYXN0
ZShGcmFtZSogZgogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblVuZG8oKSBjb25zdAogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0
eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JD
bGllbnRJbXBsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dW5kbygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBVbmRv
TWFuYWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAg
ICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM0NiwxMCArMzY1LDEyIEBAIHZv
aWQgRWRpdG9yQ2xpZW50SW1wbDo6dW5kbygpCiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAg
ICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBv
bnRvIHRoZSByZWRvIHN0YWNrLgogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVu
dEltcGw6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5S
ZWRvKCkpIHsKICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9y
ZWRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gc3RlcCgqYmFjayk7CkBA
IC0zNjEsNiArMzgyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWRvKCkKICAgICAgICAg
Ly8gcmVhcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRo
ZSB1bmRvIHN0YWNrLgogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgog
fQogCiAvLwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9FZGl0b3JDbGllbnRFZmwuY3BwCShyZXZpc2lvbiAxMjIyODkpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xNzgsMjAgKzE3OCwzMCBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6ZGlkU2V0U2VsZWN0aW9u
VHlwCiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1Jl
ZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBp
ZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFj
ay5wcmVwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNzUmVm
UHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJl
ZG9TdGFjay5wcmVwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25z
KCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2suY2xlYXIoKTsK
ICAgICByZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEVm
bDo6Y2FuQ29weUN1dChGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApAQCAtMjA2LDI0
ICsyMTYsMzUgQEAgYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhblBhc3RlKEZyYW1lKiwgYgogCiBi
b29sIEVkaXRvckNsaWVudEVmbDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhblJlZG8o
KSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhcmVkb1N0
YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yQ2xpZW50RWZsOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4g
c3RlcCA9IHVuZG9TdGFjay50YWtlRmlyc3QoKTsKICAgICAgICAgc3RlcC0+dW5hcHBseSgpOwog
ICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVkbygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBSZWZQ
dHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSByZWRvU3RhY2sudGFrZUZpcnN0KCk7CiAKQEAg
LTIzMiw2ICsyNTMsNyBAQCB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVkbygpCiAgICAgICAgIHN0
ZXAtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiBub2Rl
LCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAJ
KHJldmlzaW9uIDEyMjI4OSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4OCwyMiArMjg4LDMyIEBAIHZv
aWQgRWRpdG9yQ2xpZW50OjpkaWRTZXRTZWxlY3Rpb25UeXBlc0YKIAogdm9pZCBFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBz
dGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmICh1bmRvU3RhY2suc2l6
ZSgpID09IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgdW5kb1N0YWNrLnJlbW92ZUZp
cnN0KCk7CiAgICAgaWYgKCFtX2lzSW5SZWRvKQogICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsK
ICAgICB1bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Rl
cCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIHJlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6Y2xlYXJVbmRv
UmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVuZG9T
dGFjay5jbGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wg
RWRpdG9yQ2xpZW50OjpjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFs
dWUpIGNvbnN0CkBAIC0zMTgsMjYgKzMyOCwzNyBAQCBib29sIEVkaXRvckNsaWVudDo6Y2FuUGFz
dGUoV2ViQ29yZTo6RnJhCiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5VbmRvKCkgY29uc3QKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNs
aWVudDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6
OlVuZG9TdGVwPiBzdGVwKCooLS11bmRvU3RhY2suZW5kKCkpKTsKICAgICAgICAgdW5kb1N0YWNr
LnJlbW92ZSgtLXVuZG9TdGFjay5lbmQoKSk7CiAgICAgICAgIC8vIHVuYXBwbHkgd2lsbCBjYWxs
IHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICAg
ICAgc3RlcC0+dW5hcHBseSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVu
dDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8o
KSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXJlZG9TdGFj
ay5lbmQoKSkpOwogICAgICAgICByZWRvU3RhY2sucmVtb3ZlKC0tcmVkb1N0YWNrLmVuZCgpKTsK
QEAgLTM0OCw2ICszNjksNyBAQCB2b2lkIEVkaXRvckNsaWVudDo6cmVkbygpCiAgICAgICAgIHN0
ZXAtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pc0luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6c2hvdWxkSW5zZXJ0Tm9kZShOb2RlKiBub2RlLCBS
YW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNp
b24gMTIyMjg5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzOSwxMiArMjM5LDE2IEBAIGJvb2wgRWRpdG9y
Q2xpZW50UXQ6OnNlbGVjdFdvcmRCZWZvcmVNZW4KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVn
aXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAg
IEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFt
ZS0+ZWRpdG9yKCktPmxhc3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1
bmRvcyAqLykpCiAgICAgICAgIHJldHVybjsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5wdXNo
KG5ldyBVbmRvU3RlcFF0KHN0ZXApKTsKICNlbmRpZiAvLyBRVF9OT19VTkRPU1RBQ0sKKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50
UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikK
QEAgLTI1Myw5ICsyNTcsMTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3Rl
cChXVAogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAg
IHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jbGVhcigpOwogI2VuZGlmCisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wg
ZGVmYXVsdFZhbHVlKSBjb25zdApAQCAtMjcwLDM4ICsyNzYsNTAgQEAgYm9vbCBFZGl0b3JDbGll
bnRRdDo6Y2FuUGFzdGUoV2ViQ29yZTo6RgogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5VbmRv
KCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZmRlZiBRVF9OT19VTkRP
U1RBQ0sKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIHJldHVybiBtX3BhZ2UtPnVuZG9T
dGFjaygpLT5jYW5VbmRvKCk7CiAjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBm
YWxzZTsKICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblJlZG8oKTsK
ICNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0
b3JDbGllbnRRdDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVm
IFFUX05PX1VORE9TVEFDSwogICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CiAgICAgbV9wYWdlLT51
bmRvU3RhY2soKS0+dW5kbygpOwogICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOwogI2VuZGlmCisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIG1faW5VbmRvUmVkbyA9
IHRydWU7CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cmVkbygpOwogICAgIG1faW5VbmRvUmVk
byA9IGZhbHNlOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6c2hv
dWxkSW5zZXJ0Tm9kZShOb2RlKiBub2RlLCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlv
biBhY3Rpb24pCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjIyODkpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0xMCAgU3Vrb2xz
YWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHVuZG9NYW5hZ2VyJ3MgdW5kbywgcmVkbywgbGVuZ3RoLCBwb3NpdGlvbiwgY2xlYXJVbmRvLCBh
bmQgY2xlYXJSZWRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJh
bnNhY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFu
YWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Vu
ZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0x
MCAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElucHV0IGVs
ZW1lbnRzIHdpdGggdHlwZT1yYW5nZSBkbyBub3QgaGF2ZSBkZWZhdWx0IHRvdWNoIGhhbmRsZXJz
LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFu
c2FjdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
bWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0ZXN0cyBVbmRv
TWFuYWdlcidzIHRyYW5zYWN0KCkgbWV0aG9kLgorCitQQVNTIGRvY3VtZW50IGhhcyBwcm9wZXJ0
eSB1bmRvTWFuYWdlci4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0eSB0cmFuc2FjdC4g
CitQQVNTIEFmdGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJh
bnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2Vy
IGFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFuIHVuZG8gY2Fs
bCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBB
ZnRlciBhbm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0
cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxp
ZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGws
IHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0
ZXIgdGhyZWUgdHJhbnNhY3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1
bmRvTWFuYWdlciBhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIAorUEFTUyBBZnRlciBh
biB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25z
IGluIHRoZSBjb3JyZWN0IG9yZGVyLiAKK1BBU1MgQWZ0ZXIgYW4gcmVkbyBjYWxsLCB1bmRvTWFu
YWdlciByZWFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRl
ci4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXIt
dHJhbnNhY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5h
Z2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+VW5kb01hbmFnZXIudHJhbnNhY3QoKTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKKzxkaXYgaWQ9
ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2
PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5
KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5k
b01hbmFnZXIuIik7CisKK3ZhciB1bmRvTWFuYWdlciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworCWFzc2VydF9pZGxfYXR0cmlidXRlKHVuZG9NYW5hZ2VyLCAi
dHJhbnNhY3QiKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIik7CisK
K3ZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgCSJleGVjdXRlIjogZnVu
Y3Rpb24oKSB7CisgICAgCQllZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAJfSwKKyAgICAJ
InVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAJCWVkaXQuaW5uZXJIVE1MICs9ICIxdSAiOworICAg
IAl9LAorICAgIAkicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgIAkJZWRpdC5pbm5lckhUTUwgKz0g
IjFyICI7CisgICAgCX0KKyAgICB9LCBmYWxzZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gIjFlICIpOworfSwgIkFmdGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIg
YXBwbGllcyB0aGUgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIudHJhbnNhY3QoeworICAgIAkiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgIAkJ
ZWRpdC5pbm5lckhUTUwgKz0gIjJlICI7CisgICAgCX0sCisgICAgCSJ1bmRvIjogZnVuY3Rpb24o
KSB7CisgICAgCQllZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAJfSwKKyAgICAJInJlZG8i
OiBmdW5jdGlvbigpIHsKKyAgICAJCWVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAgIAl9Cisg
ICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAi
KTsKK30sICJBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMg
dGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRv
TWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJl
IDJ1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRo
ZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01h
bmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAy
dSAxdSAiKTsKK30sICJBZnRlciBhbm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBs
aWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1
bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFl
IDJlIDJ1IDF1IDFyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFw
cGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAi
MWUgMmUgMnUgMXUgMXIgMnIgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVuZG9N
YW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCitlZGl0LmlubmVy
SFRNTCA9ICIiOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0
KHsKKyAgICAJImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAJCWVkaXQuaW5uZXJIVE1MICs9
ICIxZSAiOworICAgIAl9LAorICAgIAkidW5kbyI6IGZ1bmN0aW9uKCkgeworICAgIAkJZWRpdC5p
bm5lckhUTUwgKz0gIjF1ICI7CisgICAgCX0sCisgICAgCSJyZWRvIjogZnVuY3Rpb24oKSB7Cisg
ICAgCQllZGl0LmlubmVySFRNTCArPSAiMXIgIjsKKyAgICAJfQorICAgIH0sIGZhbHNlKTsKKyAg
ICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgCSJleGVjdXRlIjogZnVuY3Rpb24oKSB7Cisg
ICAgCQllZGl0LmlubmVySFRNTCArPSAiMmUgIjsKKyAgICAJfSwKKyAgICAJInVuZG8iOiBmdW5j
dGlvbigpIHsKKyAgICAJCWVkaXQuaW5uZXJIVE1MICs9ICIydSAiOworICAgIAl9LAorICAgIAki
cmVkbyI6IGZ1bmN0aW9uKCkgeworICAgIAkJZWRpdC5pbm5lckhUTUwgKz0gIjJyICI7CisgICAg
CX0KKyAgICB9LCB0cnVlKTsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgCSJleGVj
dXRlIjogZnVuY3Rpb24oKSB7CisgICAgCQllZGl0LmlubmVySFRNTCArPSAiM2UgIjsKKyAgICAJ
fSwKKyAgICAJInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAJCWVkaXQuaW5uZXJIVE1MICs9ICIz
dSAiOworICAgIAl9LAorICAgIAkicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgIAkJZWRpdC5pbm5l
ckhUTUwgKz0gIjNyICI7CisgICAgCX0KKyAgICB9LCB0cnVlKTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgIik7Cit9LCAiQWZ0ZXIgdGhyZWUgdHJhbnNhY3Qg
Y2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdlciBhcHBsaWVz
IHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAy
ZSAzZSAzdSAydSAxdSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVu
YXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRf
dHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgMXIgMnIgM3IgIik7Cit9
LCAiQWZ0ZXIgYW4gcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHRocmVlIHRy
YW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5
ID0gJ25vbmUnOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5h
Z2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRv
KCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisKK1BBU1MgZG9jdW1lbnQgaGFzIHBy
b3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5k
bywgcmVkbywgbGVuZ3RoLCBhbmQgcG9zaXRpb24uIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgY29y
cmVjdCBpbml0aWFsIHZhbHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiAKK1BB
U1MgQWZ0ZXIgaW5zZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxl
bmd0aCBpcyAxIGFuZCBwb3NpdGlvbiBpcyAwLiAKK1BBU1MgQWZ0ZXIgYm9sZGluZyB0aGUgdGV4
dCwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSBy
ZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2Vy
J3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxh
aW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMg
MiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIAorUEFTUyBBZnRl
ciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBh
bmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVu
ZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0
IGlzIGEgYm9sZCAndGVzdCcuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5h
Z2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8t
cmVkby5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VW5kb01hbmFnZXIgaGFzIHVuZG8oKSBhbmQgcmVkbygp
IHRoYXQgd29yazwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIFVuZG9N
YW5hZ2VyJ3MgdW5kbygpLCByZWRvKCksIGxlbmd0aCwgYW5kIHBvc2l0aW9uLgorCis8ZGl2IGlk
PSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPGRpdiBpZD0ibG9nIj48L2Rp
dj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0
eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAiZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVu
ZG9NYW5hZ2VyLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9pZGxfYXR0cmli
dXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAidW5kbyIpOworICAgIGFzc2VydF9pZGxfYXR0cmli
dXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicmVkbyIpOworICAgIGFzc2VydF9vd25fcHJvcGVy
dHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJsZW5ndGgiKTsKKyAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicG9zaXRpb24iKTsKK30sICJ1bmRvTWFuYWdlciBo
YXMgcHJvcGVydGllcyB1bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4iKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5n
dGggPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24g
PT0gMCk7Cit9LCAidW5kb01hbmFnZXIgaGFzIGNvcnJlY3QgaW5pdGlhbCB2YWx1ZXMgZm9yIGxl
bmd0aCAoMCkgYW5kIHBvc2l0aW9uICgwKS4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2
YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Iik7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXQsIDApOworICAgIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICJ0ZXN0Iik7CisgICAgCisgICAgYXNzZXJ0X3RydWUo
ZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDEpOworICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworfSwgIkFmdGVyIGluc2VydGluZyB0ZXh0
ICd0ZXN0JyBpbiBhIERJViwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMSBhbmQgcG9zaXRpb24g
aXMgMC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlZGl0KTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOworICAgIGRvY3VtZW50LmV4ZWND
b21tYW5kKCJCb2xkIiwgZmFsc2UsIG51bGwpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRN
TCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciBib2xkaW5nIHRoZSB0ZXh0LCB1bmRvTWFu
YWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBh
IGJvbGQgJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC51
bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01h
bmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
LnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICJ0ZXN0
Iik7Cit9LCAiQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9z
aXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAndGVzdCcuIik7CisgICAgCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAK
KyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAg
YXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMik7CisgICAgYXNz
ZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworfSwgIkFmdGVyIHVuZG9pbmcsIHVuZG9N
YW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDIsIGFuZCB0aGUgcmVzdWx0IGlz
IGVtcHR5LiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC51bmRvTWFu
YWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIu
bGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0
aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICJ0ZXN0Iik7Cit9
LCAiQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24g
aXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0X3Ry
dWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7Cit9LCAiQWZ0ZXIgcmVkb2luZywg
dW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1
bHQgaXMgYSBib2xkICd0ZXN0Jy4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwor
Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151759</attachid>
            <date>2012-07-11 13:21:23 -0700</date>
            <delta_ts>2012-07-11 13:47:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120711132306.patch</filename>
            <type>text/plain</type>
            <size>68791</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjM1NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTEwICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qu
aHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
VHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEpTRE9NVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2Fj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lz
dGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVk
b1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kbyk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAgKiBlZGl0aW5n
L1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5h
Z2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5SZWRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFu
YWdlci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAgICAoVW5kb1N0
ZXApOgorCiAyMDEyLTA3LTExICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIC1XdGF1dG9sb2dpY2FsLWNvbXBhcmUgYW5kIC1Xc2lnbi1jb21wYXJl
IHdhcm5pbmcgZmxhZ3MKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTIyMzU3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5OSw2ICsxMzk5LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcCBcCkBAIC0xNTIwLDYgKzE1MjIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1
bGVDdXN0b20uY3BwIFwKQEAgLTIxMDYsNiArMjEwOSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
T01UcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEy
MjM1NykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI3
NSw2ICsyNzUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTGlzdEN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAorICAgICAg
ICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93QmFzZS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBcCkBA
IC0zNTcsNiArMzU4LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5
Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtl
CShyZXZpc2lvbiAxMjIzNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtp
bmcgY29weSkKQEAgLTI5NSw2ICsyOTUsMTMgQEAgSUYgKEVOQUJMRV9XRUJfSU5URU5UUykKICAg
ICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1VORE9fTUFOQUdFUikKKyAgICBMSVNUIChBUFBF
TkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24u
Y3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCisgICAgKQor
RU5ESUYgKCkKKwogTElTVChBUFBFTkQgU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9E
SVJ9L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQogKQpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4JKHJldmlzaW9uIDEyMjM1NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTUzLDMgKzI1NTMsOSBAQCBfX1pON1dlYkNvcmUyN0Fs
dGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dlYkNvcmUyNFRleHRBbHRlcm5hdGl2ZVdp
dGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzJj
b2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJpbmdSTjNX
VEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQogI2VuZGlmCisK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorX19aTjdXZWJDb3JlOERvY3VtZW50MTF1bmRvTWFu
YWdlckV2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHJlZG9FdgorX19aTjdXZWJDb3JlMTFV
bmRvTWFuYWdlcjR1bmRvRXYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24g
MTIyMzU3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTY2LDYgKzE5NjYsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGlyZWN0b3J5
RW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RpcmVjdG9yeUVu
dHJ5U3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRD
dXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU0VudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNFbnRyeVN5bmNDdXN0b20uY3BwJywKQEAgLTIwNzAsNiArMjA3Miw3IEBACiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJH
TFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
V2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEyMjM1NykKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0yMjUwMyw2ICsyMjUwMyw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTVW5kb01hbmFnZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTVW5kb01hbmFnZXIuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1ZhbGlkaXR5
U3RhdGUuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTU1NDQ3LDYgKzU1
NTAzLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGVkaXRpbmdcRE9NVHJhbnNhY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xFZGl0QWN0aW9uLmgiCiAJCQkJPgogCQkJ
PC9GaWxlPgpAQCAtNTc3NzEsNiArNTc4MzEsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xVbmRvTWFuYWdlci5jcHAiCisJCQkJ
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJ
RXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9u
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVk
aXRpbmdcVW5kb01hbmFnZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cZWRpdGluZ1xVbmRvU3RlcC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAg
LTY1NzA2LDYgKzY1ODIyLDYyIEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01U
cmFuc2FjdGlvbi5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJv
ZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVRyYW5zYWN0aW9uLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xK
U0RPTVdpbmRvd0Jhc2UuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAt
Njk0OTgsNiArNjk2NzAsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0Zp
bGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJ
PFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQ
cm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+
CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgor
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIK
IAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMjM1NykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTk0MSw4ICsxOTQxLDEyIEBACiAJCTdBRjExQTVBMTJFNzI3NDkwMDYx
RjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8qIFNj
cmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRGRjQx
MTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAv
KiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJN0IwOTkyRjUxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFn
ZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICov
OyB9OwogCQk3QjFFQTBDRTE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDQzE1NzZD
NUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCMUVBMENGMTU3NkM1
QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFu
YWdlci5oICovOyB9OworCQk3QjUxN0U4NDE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2Fj
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjUxN0U4MjE1QUNGMUYzMDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi87IH07CisJ
CTdCNTE3RTg1MTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjUxN0U4MzE1QUNGMUY1MDBG
MTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oICovOyB9OworCQk3QjUxN0U4NzE1QUNGMjExMDBG
MTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNTE3RTg2MTVBQ0YyMTEwMEYxNkI3QSAvKiBET01UcmFuc2FjdGlv
bi5oICovOyB9OwogCQk3QjkxODREMjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0Q0Yx
NTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJN0I5MTg0RDMxNTc1
OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFn
ZXIuaCAqLzsgfTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHku
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzNDRDAw
MTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTkwNjksOCArOTA3MywxMiBAQAogCQk3QUYx
MUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0
QnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVh
a3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYw
MDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJN0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNVbmRvTWFuYWdlckN1c3Rv
bS5jcHA7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
N0IxRUEwQ0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5h
Z2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8q
IEpTRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSlNET01UcmFuc2FjdGlvbi5jcHA7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSBTT1VS
Q0VfUk9PVDsgfTsKKwkJN0I1MTdFODMxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSlNET01UcmFuc2FjdGlvbi5o
OyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
VHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3QjUxN0U4NjE1
QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gRE9NVHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0Vf
Uk9PVDsgfTsKIAkJN0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVu
ZG9NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9NYW5hZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQxMTU3NThFNDIwMDkyQUE5
MyAvKiBVbmRvTWFuYWdlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVW5kb01hbmFnZXIu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY5NzAsNiArMTY5NzgsNyBAQAog
CQkJCUNFQ0FERkMzMTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25BbHRlcm5hdGl2ZS5oICov
LAogCQkJCUNFQ0FERkM0MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmNwcCAq
LywKIAkJCQlDRUNBREZDNTE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5oICov
LAorCQkJCTdCNTE3RTg2MTVBQ0YyMTEwMEYxNkI3QSAvKiBET01UcmFuc2FjdGlvbi5oICovLAog
CQkJCTkzMzA5RDkzMDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggKi8sCiAJCQkJOTMz
MDlEOTQwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5
NTA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLywKQEAgLTE5OTQxLDYgKzE5OTUw
LDggQEAKIAkJCQk5M0I3MEQ0ODA5RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8s
CiAJCQkJRTFDMzZDQkMwRUIwODA2MjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAq
LywKIAkJCQlFMUMzNkMwMjBFQjA3NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAq
LywKKwkJCQk3QjUxN0U4MjE1QUNGMUYzMDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5jcHAg
Ki8sCisJCQkJN0I1MTdFODMxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAq
LywKIAkJCQlCQzY5MzI3MTBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCAq
LywKIAkJCQlCQzY5MzI3MjBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggKi8s
CiAJCQkJQkNCRkI1M0EwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuY3BwICov
LApAQCAtMjAxODMsNiArMjAxOTQsNyBAQAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAv
KiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NTEwNTA4RDlDMDAwOTlG
QUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk5MUEzOTA1QTE0QzBGNjExMDBG
Njc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi8sCisJCQkJN0IwOTkyRjQx
NUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICovLAogCQkJCUZEOEU5
QkRFMTNENENEMkIwMDUwREM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJ
CQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0
b20uY3BwICovLAogCQkJCTMxOUU2ODg2MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMjkzMSw2ICsyMjk0Myw3IEBACiAJCQkJMTg4NjA0QjQw
RjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNUZENjlF
MDEyODQ1RDQzMDBCMkJFQjMgLyogRE9NVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
NkZDMkIwQzEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQk3QjUxN0U4NzE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBp
biBIZWFkZXJzICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fs
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9N
VHJlZVdhbGtlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNTgwLDYgKzIzNTkzLDcg
QEAKIAkJCQlDNTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdN
YXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RP
TVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1MTdFODUxNUFDRjFGNTAwRjE2QjdB
IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMzdFMDA2MTJEQkM1
QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdF
MjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUy
RkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAq
LywKQEAgLTI2NzU5LDYgKzI2NzczLDcgQEAKIAkJCQlCQzY0NjQ5QzExRDgyMzhDMDA2NDU1QjAg
LyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzY5NDU2M0Mx
MjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTE0RTBCQzU2MTM2MTQ4QTgwMDJBRDEyRSAvKiBKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk3QjUxN0U4NDE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2Fj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRTM3RTAwNTEyREJDNUE0MDBBNkIyMzMgLyog
SlNET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwM0JBMEMwOUVCMThDNzAwNzk3QzdG
IC8qIEpTRE9NV2luZG93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjkzMjczMEQ3RTI5Mzkw
MEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzIyNiw2
ICsyNzI0MSw3IEBACiAJCQkJOTEwODlEMzMxNEMzMzYwNTAwNUFGQzQ5IC8qIEpTVWludDhDbGFt
cGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTFBMzkwNUIxNEMwRjYxMTAwRjY3OTAx
IC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0Ix
RUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJN0IwOTkyRjUxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRp
dHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIg
LyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDhFOUJERjEzRDRD
RDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAkocmV2aXNpb24gMTIyMzU3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAog
I2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJp
bmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCIKKyNp
bmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2Uu
Y3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvd1NoZWxsLmNwcCIKQEAgLTE1NSw2ICsxNTYsNyBAQAogI2luY2x1ZGUgIkpTVWludDMyQXJy
YXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhBcnJheUN1c3RvbS5jcHAiCiAjaW5jbHVk
ZSAiSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNVbmRvTWFuYWdl
ckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJL
aXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNET01UcmFuc2Fj
dGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiSlNEaWN0
aW9uYXJ5LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiVW5kb01hbmFnZXIuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNET01UcmFuc2FjdGlv
bjo6SlNET01UcmFuc2FjdGlvbihKU09iamVjdCogZnVuY3Rpb24sIEpTT2JqZWN0KiB3cmFwcGVy
LCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpCisgICAgOiBtX3dyYXBwZXIod3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3Js
ZChpc29sYXRlZFdvcmxkKQorICAgICwgbV9jb250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VuZG9N
YW5hZ2VyKDApCit7CisgICAgaWYgKHdyYXBwZXIpCisgICAgICAgIG1fZGljdGlvbmFyeS5zZXRN
YXlCZU51bGwoKm1faXNvbGF0ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpLCB3cmFwcGVyLCBmdW5jdGlv
bik7CisgICAgZWxzZQorICAgICAgICBBU1NFUlQoIWZ1bmN0aW9uKTsKK30KKwordm9pZCBKU0RP
TVRyYW5zYWN0aW9uOjp2aXNpdERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBpZiAobV9kaWN0aW9uYXJ5KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9kaWN0
aW9uYXJ5KTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgY29uc3QgY2hhciogcHJv
cGVydHlOYW1lKQoreworICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBp
ZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3Qoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKKyAgICBpZiAoIWdsb2JhbE9i
amVjdCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNEaWN0aW9uYXJ5IGpzRGljdGlvbmFyeShl
eGVjLCBtX2RpY3Rpb25hcnkuZ2V0KCkpOworICAgIGlmICghanNEaWN0aW9uYXJ5LmlzVmFsaWQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNjcmlwdFZhbHVlIHZhbHVlOworICAgIGlm
ICghanNEaWN0aW9uYXJ5LmdldChwcm9wZXJ0eU5hbWUsIHZhbHVlKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGlmICghdmFsdWUuaXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHZhbHVlLmpzVmFsdWUoKTsKKyAgICAKKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9u
LCBjYWxsRGF0YSk7CisgICAgCisgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlTm9uZSkgewor
ICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGZ1bmN0aW9uOworICAgICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNE
b2N1bWVudCgpKQorICAgICAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIH0KK30KKwordm9pZCBKU0RPTVRyYW5zYWN0
aW9uOjpleGVjdXRlKCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAiZXhl
Y3V0ZSIpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OnVuYXBwbHkoKQoreworICAgIGNh
bGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJ1bmRvIik7CisgICAgaWYgKG1fdW5kb01hbmFn
ZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyUmVkb1N0ZXAodGhpcyk7Cit9CisK
K3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6cmVhcHBseSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1f
Y29udGV4dC5nZXQoKSwgInJlZG8iKTsKKyAgICBpZiAobV91bmRvTWFuYWdlcikKKyAgICAgICAg
bV91bmRvTWFuYWdlci0+cmVnaXN0ZXJVbmRvU3RlcCh0aGlzKTsKK30KKworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTRE9NVHJhbnNhY3Rp
b25faAorI2RlZmluZSBKU0RPTVRyYW5zYWN0aW9uX2gKKworI2lmIEVOQUJMRShVTkRPX01BTkFH
RVIpCisKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgRE9NV3JhcHBlcldvcmxkOworY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKK2NsYXNzIFVuZG9NYW5hZ2VyOworCitjbGFzcyBKU0RPTVRyYW5zYWN0aW9u
IDogcHVibGljIERPTVRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBKU0RPTVRyYW5zYWN0aW9u
KEpTQzo6SlNPYmplY3QqIGRpY3Rpb25hcnksIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdy
YXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAg
IAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTRE9NVHJhbnNhY3Rpb24+IGNyZWF0ZShKU0M6OkpT
T2JqZWN0KiBkaWN0aW9uYXJ5LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29y
bGQqIGlzb2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTRE9NVHJhbnNhY3Rpb24oZGljdGlvbmFy
eSwgd3JhcHBlciwgaXNvbGF0ZWRXb3JsZCwgY29udGV4dCkpOworICAgIH0KKyAgICAKKyAgICB2
b2lkIHZpc2l0RGljdGlvbmFyeShKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVh
bCBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSBPVkVSUklERSB7IHJldHVybiBtX3VuZG9NYW5h
Z2VyOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKiB1bmRv
TWFuYWdlcikgT1ZFUlJJREUgeyBtX3VuZG9NYW5hZ2VyID0gdW5kb01hbmFnZXI7IH0KKyAgICAK
K3ByaXZhdGU6CisgICAgdm9pZCBjYWxsUHJvcGVydHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSk7CisgICAgCisgICAgSlNDOjpXcml0ZUJhcnJpZXI8
SlNDOjpKU09iamVjdD4gbV9kaWN0aW9uYXJ5OworICAgIEpTQzo6V2VhazxKU0M6OkpTT2JqZWN0
PiBtX3dyYXBwZXI7CisgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV9pc29sYXRlZFdvcmxk
OworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgVW5k
b01hbmFnZXIqIG1fdW5kb01hbmFnZXI7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkpTVW5k
b01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxy
dW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIHZvaWQgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKGNvbnN0IFVuZG9N
YW5hZ2VyU3RhY2smIHN0YWNrLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFVuZG9N
YW5hZ2VyRW50cnkmIGVudHJ5ID0gKihzdGFja1tpXS5nZXQoKSk7CisgICAgICAgIGlmIChlbnRy
eS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBd
LT5pc0RPTVRyYW5zYWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgZW50cnkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9
IGVudHJ5W2pdLmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzdGVwLT5pc0RPTVRyYW5z
YWN0aW9uKCkpOworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEpTRE9NVHJhbnNhY3Rpb24q
PihzdGVwKS0+dmlzaXREaWN0aW9uYXJ5KHZpc2l0b3IpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEpTVW5kb01hbmFnZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBKU1VuZG9NYW5hZ2VyKiB0aGlz
T2JqZWN0ID0ganNDYXN0PEpTVW5kb01hbmFnZXIqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JK
RUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8pOworICAgIENPTVBJTEVfQVNTRVJUKFN0
cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNTRVJUKHRoaXNPYmplY3QtPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4oKSk7CisgICAgQmFzZTo6dmlz
aXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKKyAgICAKKyAgICBVbmRvTWFuYWdlciog
dW5kb01hbmFnZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCk7CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJ
blN0YWNrKHVuZG9NYW5hZ2VyLT51bmRvU3RhY2soKSwgdmlzaXRvcik7CisgICAgdmlzaXRUcmFu
c2FjdGlvbnNJblN0YWNrKHVuZG9NYW5hZ2VyLT5yZWRvU3RhY2soKSwgdmlzaXRvcik7Cit9CisK
KworSlNWYWx1ZSBKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdChFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoJkpTVW5kb01hbmFnZXI6OnNfaW5mbykpCisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICBKU1VuZG9NYW5hZ2VyKiBjYXN0ZWRUaGlzID0g
anNDYXN0PEpTVW5kb01hbmFnZXIqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pOwor
ICAgIFVuZG9NYW5hZ2VyKiBpbXBsID0gc3RhdGljX2Nhc3Q8VW5kb01hbmFnZXIqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworICAgIAorICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQor
ICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihleGVjKSk7CisgICAgCisgICAgSlNWYWx1ZSBkaWN0aW9uYXJ5ID0gTUFZQkVfTUlTU0lO
R19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICgh
ZGljdGlvbmFyeS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhl
Yyk7CisgICAgCisgICAgYm9vbCBtZXJnZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAx
LCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvQm9vbGVhbigpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICAKKyAgICBSZWZQdHI8SlNET01UcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBKU0RP
TVRyYW5zYWN0aW9uOjpjcmVhdGUoZGljdGlvbmFyeS5nZXRPYmplY3QoKSwgdGhpc1ZhbHVlLmdl
dE9iamVjdCgpLCBjdXJyZW50V29ybGQoZXhlYyksIHNjcmlwdENvbnRleHQpOworICAgIAorICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwtPnRyYW5zYWN0KHRyYW5zYWN0aW9uLCBt
ZXJnZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAxMjIzNTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKICAgICBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2VkaXRBY3Rpb247
IH0KKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKICAgICB2b2lkIGFwcGVu
ZChTaW1wbGVFZGl0Q29tbWFuZCopOwogICAgIGJvb2wgd2FzQ3JlYXRlTGlua0NvbW1hbmQoKSBj
b25zdCB7IHJldHVybiBtX2VkaXRBY3Rpb24gPT0gRWRpdEFjdGlvbkNyZWF0ZUxpbms7IH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgRE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBET01UcmFu
c2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiVW5kb1N0
ZXAuaCIKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFVuZG9NYW5hZ2VyOworCitjbGFzcyBET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBV
bmRvU3RlcCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+RE9NVHJhbnNhY3Rpb24oKSB7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5h
cHBseSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKKyAgICBFZGl0QWN0
aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBFZGl0QWN0aW9uVW5z
cGVjaWZpZWQ7IH0KKyAgICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgdmlydHVhbCBVbmRvTWFuYWdlciogdW5kb01hbmFn
ZXIoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKikg
PSAwOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCShyZXZpc2lvbiAxMjIzNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJUZXh0
RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21t
YW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKICNpbmNsdWRlICJVc2VyVHlwaW5nR2Vz
dHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFy
a3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhQ
YXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSByZWdpc3RlciBhIG5ldyB1bmRvIGNvbW1hbmQg
aWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAgICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRo
ZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSBjbWQ7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgICAgIGNs
aWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3Np
dGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2Vy
KCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9u
KCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1Nl
bGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0
aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRU
b1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFu
ZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAg
ICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2Vsc2UKKyAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZW5k
aWYgIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBA
IC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQ
dHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNl
bGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7
CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0
ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+
cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlmCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRl
bnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEyNDIsMjQgKzEyNTUsNDAgQEAgdm9pZCBFZGl0
b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIAogYm9vbCBFZGl0b3I6OmNhblVuZG8oKQog
eworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGll
bnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjp1bmRv
KCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAg
ICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvcjo6Y2FuUmVkbygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNs
aWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnJl
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAg
ICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpkaWRCZWdp
bkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHJl
dmlzaW9uIDEyMjM1NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5B
R0VSKQogCi0jaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDQsNiArNDQsNyBAQCBQYXNzUmVmUHRyPFVuZG9N
YW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlCiAKIFVuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcihOb2Rl
KiBob3N0KQogICAgIDogbV91bmRvU2NvcGVIb3N0KGhvc3QpCisgICAgLCBtX2lzSW5Qcm9ncmVz
cyhmYWxzZSkKIHsKIH0KIApAQCAtNTIsMjAgKzUzLDExMiBAQCB2b2lkIFVuZG9NYW5hZ2VyOjp1
bmRvU2NvcGVIb3N0RGVzdHJveWVkCiAgICAgbV91bmRvU2NvcGVIb3N0ID0gMDsKIH0KIAordm9p
ZCBVbmRvTWFuYWdlcjo6dHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24sIGJvb2wgbWVyZ2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX2lzSW5Q
cm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NF
U1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGNsZWFyUmVkbyhBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICB0cmFuc2FjdGlvbi0+c2V0VW5kb01hbmFnZXIodGhpcyk7CisgICAg
CisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIHRyYW5zYWN0aW9uLT5leGVjdXRlKCk7
CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoIW1lcmdlIHx8IG1f
dW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGFkb3B0UHRy
KG5ldyBVbmRvTWFuYWdlckVudHJ5KSk7CisgICAgbV91bmRvU3RhY2subGFzdCgpLT5hcHBlbmQo
dHJhbnNhY3Rpb24pOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2lu
UHJvZ3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAKKyAg
ICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50
cnkgPSAqKG1fdW5kb1N0YWNrLmxhc3QoKS5nZXQoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IGVu
dHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFdLT51bmFwcGx5KCk7
CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3JlZG9TdGFjay5hcHBl
bmQobV9pblByb2dyZXNzRW50cnkucmVsZWFzZSgpKTsKKyAgICBtX3VuZG9TdGFjay5yZW1vdmVM
YXN0KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG1fcmVkb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVz
c0VudHJ5ID0gYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgIAorICAgIG1faXNJ
blByb2dyZXNzID0gdHJ1ZTsKKyAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICoo
bV9yZWRvU3RhY2subGFzdCgpLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gZW50cnkuc2l6
ZSgpOyBpID4gMDsgLS1pKQorICAgICAgICBlbnRyeVtpIC0gMV0tPnJlYXBwbHkoKTsKKyAgICBt
X2lzSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIG1fdW5kb1N0YWNrLmFwcGVuZChtX2lu
UHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAgIG1fcmVkb1N0YWNrLnJlbW92ZUxhc3QoKTsK
K30KKwogdm9pZCBVbmRvTWFuYWdlcjo6dW5kbygpCiB7CisgICAgdW5kbyhBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6cmVkbygpCiB7CisgICAgcmVkbyhBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVnaXN0ZXJVbmRvU3Rl
cChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQoreworICAgIGlmICghbV9pc0luUHJvZ3Jlc3Mp
IHsKKyAgICAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5ID0gYWRvcHRQdHIobmV3
IFVuZG9NYW5hZ2VyRW50cnkpOworICAgICAgICBlbnRyeS0+YXBwZW5kKHN0ZXApOworICAgICAg
ICBtX3VuZG9TdGFjay5hcHBlbmQoZW50cnkucmVsZWFzZSgpKTsKKyAgICAgICAgCisgICAgICAg
IGNsZWFyUmVkbyhBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbV9p
blByb2dyZXNzRW50cnktPmFwcGVuZChzdGVwKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVn
aXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQoreworICAgIGlmICghbV9p
c0luUHJvZ3Jlc3MpIHsKKyAgICAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IGVudHJ5ID0g
YWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgICAgICBlbnRyeS0+YXBwZW5kKHN0
ZXApOworICAgICAgICBtX3JlZG9TdGFjay5hcHBlbmQoZW50cnkucmVsZWFzZSgpKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgbV9pblByb2dyZXNzRW50cnktPmFwcGVuZChzdGVwKTsKIH0KIAotdm9p
ZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kbyhF
eGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Nj
b3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogfQogCi12b2lkIFVuZG9NYW5h
Z2VyOjpjbGVhclJlZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1VuZG9NYW5hZ2VyLmgJKHJldmlzaW9uIDEyMjM1NykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVW5kb01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMzIgKzMzLDYyIEBACiAK
ICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9NVHJhbnNhY3Rp
b247CiBjbGFzcyBOb2RlOwogCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gVW5k
b01hbmFnZXJFbnRyeTsKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiA+
IFVuZG9NYW5hZ2VyU3RhY2s7CisKIGNsYXNzIFVuZG9NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50
ZWQ8VW5kb01hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmRvTWFu
YWdlcj4gY3JlYXRlKE5vZGUqIGhvc3QpOwogICAgIHZvaWQgdW5kb1Njb3BlSG9zdERlc3Ryb3ll
ZCgpOworICAgIAorICAgIHZvaWQgdHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4s
IGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKIAorICAgIHZvaWQgdW5kbyhFeGNlcHRpb25Db2RlJik7
CisgICAgdm9pZCByZWRvKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHVuZG8oKTsKICAgICB2
b2lkIHJlZG8oKTsKKyAgICAKKyAgICBpbmxpbmUgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7IH0gCisg
ICAgaW5saW5lIHVuc2lnbmVkIGxvbmcgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZG9T
dGFjay5zaXplKCk7IH0KIAotICAgIHZvaWQgY2xlYXJVbmRvKCk7Ci0gICAgdm9pZCBjbGVhclJl
ZG8oKTsKKyAgICB2b2lkIGNsZWFyVW5kbyhFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbGVh
clJlZG8oRXhjZXB0aW9uQ29kZSYpOworICAgIAorICAgIGlubGluZSBib29sIGNhblVuZG8oKSBj
b25zdCB7IHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAgaW5saW5lIGJvb2wg
Y2FuUmVkbygpIGNvbnN0IHsgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7IH0KKyAgICAK
KyAgICB2b2lkIHJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIHZv
aWQgcmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPik7CisgICAgCisgICAgaW5s
aW5lIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHVuZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
dW5kb1N0YWNrOyB9CisgICAgaW5saW5lIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHJlZG9TdGFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fcmVkb1N0YWNrOyB9CiAKIHByaXZhdGU6CiAgICAgVW5kb01h
bmFnZXIoTm9kZSogaG9zdCk7CiAgICAgTm9kZSogbV91bmRvU2NvcGVIb3N0OwotfTsKICAgICAK
KyAgICBVbmRvTWFuYWdlclN0YWNrIG1fdW5kb1N0YWNrOworICAgIFVuZG9NYW5hZ2VyU3RhY2sg
bV9yZWRvU3RhY2s7CisgICAgYm9vbCBtX2lzSW5Qcm9ncmVzczsKKyAgICBPd25QdHI8VW5kb01h
bmFnZXJFbnRyeT4gbV9pblByb2dyZXNzRW50cnk7Cit9OworCiB9Ci0gICAgCisKICNlbmRpZgog
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCShyZXZp
c2lvbiAxMjIzNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAko
d29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDIzIEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBp
bnRlcmZhY2UgWwotICAgICAgICBDb25kaXRpb25hbD1VTkRPX01BTkFHRVIKKyAgICAgICAgQ29u
ZGl0aW9uYWw9VU5ET19NQU5BR0VSLAorICAgICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbgogICAg
IF0gVW5kb01hbmFnZXIgewotICAgICAgICB2b2lkIHVuZG8oKTsKLSAgICAgICAgdm9pZCByZWRv
KCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFuc2Fj
dGlvbiwgaW4gYm9vbGVhbiBtZXJnZSk7CiAKLSAgICAgICAgdm9pZCBjbGVhclVuZG8oKTsKLSAg
ICAgICAgdm9pZCBjbGVhclJlZG8oKTsKKyAgICAgICAgdm9pZCB1bmRvKCkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlZG8oKQorICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIAorICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNp
Z25lZCBsb25nIHBvc2l0aW9uOworCisgICAgICAgIHZvaWQgY2xlYXJVbmRvKCkKKyAgICAgICAg
ICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGNsZWFyUmVkbygpCisgICAg
ICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvU3RlcC5oCShyZXZpc2lvbiAxMjIzNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1VuZG9TdGVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZWFw
cGx5KCkgPSAwOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Qg
PSAwOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgdmlydHVhbCBib29sIGlzRE9NVHJh
bnNhY3Rpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMjM1NykKKysrIFNvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6ZGlkU2V0U2VsZWMKIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3Rl
clVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgLy8gUmVtb3ZlIHRoZSBvbGRlc3QgaXRlbSBpZiB3ZSd2ZSByZWFjaGVk
IHRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciB0aGUgc3RhY2suCiAgICAgaWYgKG1fdW5kb1N0YWNr
LnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJl
bW92ZUZpcnN0KCk7CkBAIC0yNjgsMjcgKzI2OSw0NCBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnJlZ2lzdGVyVW5kCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiAKICAgICBt
X3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyUmVkb1N0
ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNsZWFy
VW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBt
X3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0K
IAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhbkNvcHlD
dXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMwMyw2ICszMjEsNyBAQCBi
b29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblBhc3RlKEZyCiAKIHZvaWQgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKGNhblVuZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNr
ID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBjb21tYW5k
KCpiYWNrKTsKQEAgLTMxMSwxMCArMzMwLDEyIEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6dW5kbygpCiAgICAgICAgIC8vIFVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0
aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICAgICAgY29tbWFuZC0+dW5hcHBs
eSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJl
ZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsK
ICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9yZWRvU3RhY2su
ZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0zMjcs
NiArMzQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKICAgICAgICAg
Y29tbWFuZC0+cmVhcHBseSgpOwogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNl
bmRpZgogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCShy
ZXZpc2lvbiAxMjIzNTcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDIyICsyOTUsMzIgQEAgdm9pZCBFZGl0
b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxlY3Rpb25UeQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6
OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAobV91bmRvU3RhY2suc2l6ZSgpID09IG1heGltdW1V
bmRvU3RhY2tEZXB0aCkKICAgICAgICAgbV91bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsgLy8gZHJv
cCBvbGRlc3QgaXRlbSBvZmYgdGhlIGZhciBlbmQKICAgICBpZiAoIW1faW5SZWRvKQogICAgICAg
ICBtX3JlZG9TdGFjay5jbGVhcigpOwogICAgIG1fdW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgbV9yZWRvU3RhY2suY2xl
YXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhbkNvcHlDdXQoRnJh
bWUqIGZyYW1lLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMyOSwxNiArMzM5LDI1IEBA
IGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUGFzdGUoRnJhbWUqIGYKIAogYm9vbCBFZGl0b3JD
bGllbnRJbXBsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUmVkbygpIGNvbnN0
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3JlZG9TdGFjay5p
c0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFj
ayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gc3RlcCgq
YmFjayk7CkBAIC0zNDYsMTAgKzM2NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVuZG8o
KQogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgICAgIC8vIHVuYXBwbHkgd2lsbCBjYWxs
IHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICB9
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWRvKCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFVuZG9NYW5h
Z2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwogICAgICAgICBS
ZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzYxLDYgKzM4Miw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6cmVkbygpCiAgICAgICAgIC8vIHJlYXBwbHkgd2lsbCBjYWxsIHVzIGJh
Y2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBzdGFjay4KICAgICAgICAgbV9p
blJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogLy8KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkocmV2
aXNpb24gMTIyMzU3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDIwICsxNzgsMzAgQEAgdm9pZCBF
ZGl0b3JDbGllbnRFZmw6OmRpZFNldFNlbGVjdGlvblR5cAogCiB2b2lkIEVkaXRvckNsaWVudEVm
bDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKCFtX2lzSW5SZWRvKQogICAgICAgICBy
ZWRvU3RhY2suY2xlYXIoKTsKICAgICB1bmRvU3RhY2sucHJlcGVuZChzdGVwKTsKKyNlbHNlCisg
ICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZs
OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3RhY2sucHJlcGVuZChzdGVwKTsKKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhbkNvcHlDdXQoRnJhbWUqLCBib29s
IGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTIwNiwyNCArMjE2LDM1IEBAIGJvb2wgRWRpdG9yQ2xp
ZW50RWZsOjpjYW5QYXN0ZShGcmFtZSosIGIKIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhblVu
ZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhdW5k
b1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAK
IGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6dW5kbygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAg
ICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSB1bmRvU3RhY2sudGFrZUZpcnN0
KCk7CiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVw
ID0gcmVkb1N0YWNrLnRha2VGaXJzdCgpOwogCkBAIC0yMzIsNiArMjUzLDcgQEAgdm9pZCBFZGl0
b3JDbGllbnRFZmw6OnJlZG8oKQogICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAgICAgICAgIG1f
aXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRF
Zmw6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNl
cnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMjIzNTcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODgsMjIgKzI4OCwzMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6ZGlkU2V0U2Vs
ZWN0aW9uVHlwZXNGCiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVw
dGgpCiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwogICAgIGlmICghbV9pc0luUmVk
bykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLmFwcGVuZChzdGVw
KTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRp
dG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRv
U3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3RhY2su
YXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0K
IAogdm9pZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2suY2xlYXIoKTsKICAgICByZWRvU3Rh
Y2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6Y2FuQ29weUN1dChX
ZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApAQCAtMzE4LDI2ICszMjgs
MzcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBhc3RlKFdlYkNvcmU6OkZyYQogCiBib29sIEVk
aXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFs
c2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblJlZG8oKSBjb25zdAogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhcmVkb1N0YWNrLmlzRW1wdHko
KTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5k
bygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tdW5kb1N0
YWNrLmVuZCgpKSk7CiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmUoLS11bmRvU3RhY2suZW5kKCkp
OwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21t
YW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNv
cmU6OlVuZG9TdGVwPiBzdGVwKCooLS1yZWRvU3RhY2suZW5kKCkpKTsKICAgICAgICAgcmVkb1N0
YWNrLnJlbW92ZSgtLXJlZG9TdGFjay5lbmQoKSk7CkBAIC0zNDgsNiArMzY5LDcgQEAgdm9pZCBF
ZGl0b3JDbGllbnQ6OnJlZG8oKQogICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAgICAgICAgIG1f
aXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6
OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRB
Y3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEyMjM1NykKKysrIFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzksMTIgKzIzOSwxNiBAQCBib29sIEVkaXRvckNsaWVudFF0OjpzZWxlY3RXb3JkQmVmb3Jl
TWVuCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2UtPmQt
PnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBpZiAo
bV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVkaXRvcigpLT5sYXN0RWRpdENvbW1h
bmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAgICByZXR1cm47
CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcgVW5kb1N0ZXBRdChzdGVwKSk7CiAj
ZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pCkBAIC0yNTMsOSArMjU3LDExIEBAIHZvaWQg
RWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1QKIAogdm9pZCBFZGl0b3JDbGllbnRR
dDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2so
KS0+Y2xlYXIoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNh
bkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTI3
MCwzOCArMjc2LDUwIEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblBhc3RlKFdlYkNvcmU6OkYK
IAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOwog
I2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuVW5kbygpOwogI2VuZGlm
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dFF0OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZmRl
ZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAgIHJldHVybiBt
X3BhZ2UtPnVuZG9TdGFjaygpLT5jYW5SZWRvKCk7CiAjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVuZG8oKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBtX2lu
VW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnVuZG8oKTsKICAgICBt
X2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xp
ZW50UXQ6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9O
T19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0
YWNrKCktPnJlZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2VuZGlm
CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwg
UmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTIyMzU3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDctMTAgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0Bn
b29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRvTWFuYWdlcidzIHVuZG8sIHJlZG8s
IGxlbmd0aCwgcG9zaXRpb24sIGNsZWFyVW5kbywgYW5kIGNsZWFyUmVkbworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRv
LXJlZG8uaHRtbDogQWRkZWQuCisKIDIwMTItMDctMTEgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBw
bGUuY29tPgogCiAgICAgICAgIFRpbGVDYWNoZSBsYXllcnMgaGF2ZSB3cm9uZyBib3JkZXIgZGVi
dWcgY29sb3IKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFn
ZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFu
c2FjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVz
dHMgVW5kb01hbmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworUEFTUyBkb2N1bWVudCBoYXMg
cHJvcGVydHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJh
bnNhY3QuIAorUEFTUyBBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMg
dGhlIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciB0cmFuc2FjdCBjYWxsLCB1bmRv
TWFuYWdlciBhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbiB1
bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAK
K1BBU1MgQWZ0ZXIgYW5vdGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUg
Zmlyc3QgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIg
cmVhcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgcmVk
byBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQ
QVNTIEFmdGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdlZCBpbnRvIG9uZSBl
bnRyeSwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zLiAKK1BBU1Mg
QWZ0ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRyYW5z
YWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4gCitQQVNTIEFmdGVyIGFuIHJlZG8gY2FsbCwg
dW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJl
Y3Qgb3JkZXIuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9t
YW5hZ2VyLXRyYW5zYWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlVuZG9NYW5hZ2VyLnRyYW5zYWN0KCk8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHRyYW5zYWN0KCkgbWV0aG9kLgorCis8
ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPGRpdiBpZD0ibG9n
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAiZG9jdW1lbnQgaGFzIHByb3Bl
cnR5IHVuZG9NYW5hZ2VyLiIpOworCit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFu
YWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZSh1bmRv
TWFuYWdlciwgInRyYW5zYWN0Iik7Cit9LCAidW5kb01hbmFnZXIgaGFzIHByb3BlcnR5IHRyYW5z
YWN0LiIpOworCit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Iik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAi
ZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFl
ICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxciAiOworICAgICAg
ICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIx
ZSAiKTsKK30sICJBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhl
IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRy
YW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVk
aXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9LAorICAgICAgICAidW5kbyI6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJ1ICI7CisgICAgICAgIH0s
CisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRN
TCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciB0cmFuc2FjdCBj
YWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGws
IHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciB1bmRv
IGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF90
cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAxciAiKTsKK30sICJBZnRlciBhIHJl
ZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1IDFyIDJyICIpOworfSwgIkFmdGVy
IGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHNlY29uZCB0cmFu
c2FjdGlvbi4iKTsKKworZWRpdC5pbm5lckhUTUwgPSAiIjsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAgICAgfSwKKyAg
ICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9
ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7
CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJlICI7CisgICAgICAgIH0sCisg
ICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCAr
PSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAgICAgICB9CisgICAgfSwgdHJ1ZSk7
CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjNlICI7CisgICAgICAgIH0sCisg
ICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCAr
PSAiM3UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzciAiOworICAgICAgICB9CisgICAgfSwgdHJ1ZSk7
CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDNlICIpOworfSwgIkFm
dGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdlZCBpbnRvIG9uZSBlbnRyeSwg
dW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zLiIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0
LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgIik7Cit9LCAiQWZ0ZXIgYW4gdW5kbyBj
YWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUg
Y29ycmVjdCBvcmRlci4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5y
ZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDNlIDN1IDJ1
IDF1IDFyIDJyIDNyICIpOworfSwgIkFmdGVyIGFuIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVh
cHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIik7CisK
K2VkaXQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVu
ZG8tcmVkby1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJl
ZG8tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitUaGlzIHRlc3Rz
IFVuZG9NYW5hZ2VyJ3MgdW5kbygpLCByZWRvKCksIGxlbmd0aCwgYW5kIHBvc2l0aW9uLgorCitQ
QVNTIGRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRvTWFuYWdlci4gCitQQVNTIHVuZG9NYW5hZ2Vy
IGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBvc2l0aW9uLiAKK1BBU1Mg
dW5kb01hbmFnZXIgaGFzIGNvcnJlY3QgaW5pdGlhbCB2YWx1ZXMgZm9yIGxlbmd0aCAoMCkgYW5k
IHBvc2l0aW9uICgwKS4gCitQQVNTIEFmdGVyIGluc2VydGluZyB0ZXh0ICd0ZXN0JyBpbiBhIERJ
ViwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMSBhbmQgcG9zaXRpb24gaXMgMC4gCitQQVNTIEFm
dGVyIGJvbGRpbmcgdGhlIHRleHQsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0
aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIAorUEFTUyBBZnRlciB1
bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQg
dGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHVuZG9pbmcsIHVuZG9N
YW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDIsIGFuZCB0aGUgcmVzdWx0IGlz
IGVtcHR5LiAKK1BBU1MgQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBh
bmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAndGVzdCcuIAorUEFT
UyBBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBp
cyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiAKKwpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8t
cmVkby5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBA
QAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlVuZG9NYW5hZ2VyIGhh
cyB1bmRvKCkgYW5kIHJlZG8oKSB0aGF0IHdvcms8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHVuZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFuZCBw
b3NpdGlvbi4KKworPGRpdiBpZD0iZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4K
KzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIpOworfSwgImRvY3Vt
ZW50IGhhcyBwcm9wZXJ0eSB1bmRvTWFuYWdlci4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFuYWdlciwgInVuZG8iKTsKKyAg
ICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFuYWdlciwgInJlZG8iKTsKKyAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAibGVuZ3RoIik7Cisg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgInBvc2l0aW9uIik7
Cit9LCAidW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBhbmQg
cG9zaXRpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1l
bnQudW5kb01hbmFnZXIubGVuZ3RoID09IDApOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworfSwgInVuZG9NYW5hZ2VyIGhhcyBjb3JyZWN0IGlu
aXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAoMCkuIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgdmFyIGVkaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRp
dCIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihlZGl0LCAwKTsKKyAg
ICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAidGVzdCIpOworICAg
IAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAxKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKK30sICJB
ZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3Ro
IGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29u
dGVudHMoZWRpdCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsK
KyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiQm9sZCIsIGZhbHNlLCBudWxsKTsKKyAgICAKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNz
ZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7Cit9LCAiQWZ0ZXIgYm9sZGlu
ZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwg
YW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90
cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShk
b2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0
LmlubmVySFRNTCA9PSAidGVzdCIpOworfSwgIkFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3Mg
bGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4g
J3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC51bmRvTWFu
YWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIu
bGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0
aW9uID09IDIpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIiKTsKK30sICJB
ZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAy
LCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVy
SFRNTCA9PSAidGVzdCIpOworfSwgIkFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3Ro
IGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3Qn
LiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci5y
ZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3Ro
ID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09
IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOwor
fSwgIkFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9u
IGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisKK2VkaXQuc3R5bGUu
ZGlzcGxheSA9ICdub25lJzsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151763</attachid>
            <date>2012-07-11 13:47:18 -0700</date>
            <delta_ts>2012-07-16 19:30:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120711134901.patch</filename>
            <type>text/plain</type>
            <size>68840</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjM2NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEyLTA3LTEwICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qu
aHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRyYW5zYWN0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnZpc2l0RGljdGlvbmFyeSk6
CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
VHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEpTRE9NVHJhbnNh
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKiBlZGl0
aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2Fj
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjphcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVk
aXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OnJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lz
dGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVk
b1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kbyk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAgKiBlZGl0aW5n
L1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5h
Z2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5SZWRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFu
YWdlci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAgICAoVW5kb1N0
ZXApOgorCiAyMDEyLTA3LTExICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMu
Y29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIFVwZGF0ZSBjb2RlIHRv
IHVzZSB0aGUgbmV3IGNvbnN0YW50IG5hbWUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHJldmlzaW9uIDEyMjM2NikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTEzOTksNiArMTM5OSw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXApAQCAtMTUyMCw2ICsxNTIyLDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJh
eUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlv
bkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0
aW9uTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0
Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMTA2LDYgKzIxMDksNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRp
dmUuaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0QWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxMjIzNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzUsNiArMjc1LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9KU0RP
TVN0cmluZ0xpc3RDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdN
YXBDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20u
Y3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHAgXApAQCAtMzU3LDYgKzM1OCw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMv
SlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4QXJy
YXlDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApJbmRleDog
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQkocmV2aXNpb24gMTIyMzY2KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDEzIEBAIElGIChFTkFCTEVfV0VC
X0lOVEVOVFMpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJMRV9VTkRPX01BTkFHRVIpCisg
ICAgTElTVCAoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAgICBiaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9t
LmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAg
ICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjIzNjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU1MywzICsyNTUzLDkgQEAgX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9f
Wk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1
dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBF
RUUKICNlbmRpZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1
bWVudDExdW5kb01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19f
Wk43V2ViQ29yZTExVW5kb01hbmFnZXI0dW5kb0V2CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDEyMjM2NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtMTk2Niw2ICsxOTY2LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0RpcmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNEaXJlY3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0RvY3VtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01U
cmFuc2FjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rp
b24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCcsCkBAIC0yMDcwLDYgKzIwNzIsNyBA
QAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwJywKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjIz
NjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29y
a2luZyBjb3B5KQpAQCAtMjI1MDMsNiArMjI1MDMsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9N
YW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9
IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNWYWxpZGl0eVN0YXRlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBA
IC01NTQ0Nyw2ICs1NTUwMywxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXERPTVRyYW5zYWN0aW9uLmgiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRWRpdEFjdGlvbi5o
IgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTU3NzcxLDYgKzU3ODMxLDYyIEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb01hbmFn
ZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJ
PFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFz
ZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgor
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb1N0ZXAuaCIKIAkJCQk+CiAJ
CQk8L0ZpbGU+CkBAIC02NTcwNiw2ICs2NTgyMiw2MiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTRE9NVHJhbnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19D
RkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01UcmFuc2FjdGlvbi5o
IgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
YmluZGluZ3NcanNcSlNET01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KQEAgLTY5NDk4LDYgKzY5NjcwLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGlu
Z3NcanNcSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
CS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYktpdEFuaW1hdGlv
bkN1c3RvbS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMjIzNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NDEsOCArMTk0MSwxMiBAQAogCQk3QUYxMUE1
QTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUYxMUE1OTEyRTcyNzQ5MDA2MUYy
M0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYw
MDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJl
YWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdBRkQ0RkY0MTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3
N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAv
KiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01h
bmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IxRUEwQ0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3
QjFFQTBDRjE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdE
IC8qIEpTVW5kb01hbmFnZXIuaCAqLzsgfTsKKwkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8q
IEpTRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24u
Y3BwICovOyB9OworCQk3QjUxN0U4NTE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdF
ODMxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0I1MTdF
ODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyog
RE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVu
ZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJ
CTdCOTE4NEQzMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkz
IC8qIFVuZG9NYW5hZ2VyLmggKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQ
dXJnZVByaW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MDY5LDggKzkwNzMs
MTIgQEAKIAkJN0FGMTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVC
ODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZE
NEZGMzExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5h
Z2VyQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVW5k
b01hbmFnZXJDdXN0b20uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCTdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0Qg
LyogSlNVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Vu
ZG9NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTE3RTgyMTVBQ0Yx
RjMwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Vi
a2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBK
U0RPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9N
VHJhbnNhY3Rpb24uaDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJN0I1MTdFODYxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8u
Li93ZWJraXQvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRv
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvTWFu
YWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQwMTU3NThFNDIw
MDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMTE1
NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFVuZG9NYW5hZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTcwLDYg
KzE2OTc4LDcgQEAKIAkJCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmUuaCAqLywKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9u
Q29tbWFuZC5jcHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlv
bkNvbW1hbmQuaCAqLywKKwkJCQk3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNh
Y3Rpb24uaCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5o
ICovLAogCQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8s
CiAJCQkJOTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0x
OTk0MSw2ICsxOTk1MCw4IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9N
QmluZGluZy5oICovLAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2Jh
bE9iamVjdC5jcHAgKi8sCiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xv
YmFsT2JqZWN0LmggKi8sCisJCQkJN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJh
bnNhY3Rpb24uY3BwICovLAorCQkJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRy
YW5zYWN0aW9uLmggKi8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2lu
ZG93QmFzZS5jcHAgKi8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2lu
ZG93QmFzZS5oICovLAogCQkJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRv
d1NoZWxsLmNwcCAqLywKQEAgLTIwMTgzLDYgKzIwMTk0LDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4
RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUx
MDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkw
NUExNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAor
CQkJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAq
LywKIAkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3Rv
bS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyog
SlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovLApAQCAtMjI5MzEsNiArMjI5NDMsNyBAQAog
CQkJCTE4ODYwNEI0MEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDVGRDY5RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0I1MTdFODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEg
LyogRE9NVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAw
QTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzU4
MCw2ICsyMzU5Myw3IEBACiAJCQkJQzUxMzdDRjMxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3Ry
aW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8q
IEpTRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Njk0NTYzRDEyMTREOTdDMDAw
N0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNTE3RTg1MTVB
Q0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjkzMjc0MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjc1OSw2ICsyNjc3Myw3IEBACiAJCQkJQkM2NDY0OUMxMUQ4
MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTc2OTQ1NjNDMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxNEUwQkM1NjEzNjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8q
IEpTRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0UwMDUxMkRCQzVB
NDAwQTZCMjMzIC8qIEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCQTBDMDlF
QjE4QzcwMDc5N0M3RiAvKiBKU0RPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY5
MzI3MzBEN0UyOTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMjcyMjYsNiArMjcyNDEsNyBAQAogCQkJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAv
KiBKU1VpbnQ4Q2xhbXBlZEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkxQTM5MDVCMTRD
MEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTdCMUVBMENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5h
Z2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2
NyAvKiBKU1ZhbGlkaXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3RjcxM0Q0
QzhCRDAwNEU0MzcyIC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
RkQ4RTlCREYxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyMjM2NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDYgKzYzLDcgQEAKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIgogI2luY2x1
ZGUgIkpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3dCYXNlLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3dTaGVsbC5jcHAiCkBAIC0xNTUsNiArMTU2LDcgQEAKICNpbmNsdWRl
ICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXlDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIgorI2luY2x1ZGUg
IkpTVW5kb01hbmFnZXJDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTRE9NVHJhbnNhY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2lu
Y2x1ZGUgIkpTRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5B
R0VSKQorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pT
RE9NVHJhbnNhY3Rpb246OkpTRE9NVHJhbnNhY3Rpb24oSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09i
amVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIDogbV93cmFwcGVyKHdyYXBwZXIpCisgICAgLCBt
X2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3JsZCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQor
ICAgICwgbV91bmRvTWFuYWdlcigwKQoreworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2Rp
Y3Rpb25hcnkuc2V0TWF5QmVOdWxsKCptX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3Jh
cHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7Cit9
CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6dmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgaWYgKG1fZGljdGlvbmFyeSkKKyAgICAgICAgdmlzaXRvci5h
cHBlbmQoJm1fZGljdGlvbmFyeSk7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6Y2FsbFBy
b3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2Jq
ZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAg
aWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTRGljdGlvbmFyeSBq
c0RpY3Rpb25hcnkoZXhlYywgbV9kaWN0aW9uYXJ5LmdldCgpKTsKKyAgICBpZiAoIWpzRGljdGlv
bmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBTY3JpcHRWYWx1ZSB2
YWx1ZTsKKyAgICBpZiAoIWpzRGljdGlvbmFyeS5nZXQocHJvcGVydHlOYW1lLCB2YWx1ZSkpCisg
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIEpTVmFsdWUgZnVuY3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7CisgICAg
CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIAorICAgIGlmIChjYWxsVHlwZSAhPSBDYWxs
VHlwZU5vbmUpIHsKKyAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgaWYgKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0
ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFy
Z3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICB9Cit9CisKK3ZvaWQg
SlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1fY29udGV4
dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5
KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAidW5kbyIpOworICAgIGlm
IChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVw
KHRoaXMpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkoKQoreworICAgIGNh
bGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJyZWRvIik7CisgICAgaWYgKG1fdW5kb01hbmFn
ZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7Cit9CisK
K30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5z
YWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01U
cmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBK
U0RPTVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUgSlNET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFC
TEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
IDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgSlNE
T01UcmFuc2FjdGlvbiA6IHB1YmxpYyBET01UcmFuc2FjdGlvbiB7CitwdWJsaWM6CisgICAgSlNE
T01UcmFuc2FjdGlvbihKU0M6OkpTT2JqZWN0KiBkaWN0aW9uYXJ5LCBKU0M6OkpTT2JqZWN0KiB3
cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKKyAgICAKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiBj
cmVhdGUoSlNDOjpKU09iamVjdCogZGljdGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwg
RE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0RPTVRyYW5zYWN0
aW9uKGRpY3Rpb25hcnksIHdyYXBwZXIsIGlzb2xhdGVkV29ybGQsIGNvbnRleHQpKTsKKyAgICB9
CisgICAgCisgICAgdm9pZCB2aXNpdERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYpOworICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuYXBw
bHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAg
IAorICAgIHZpcnR1YWwgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgT1ZFUlJJREUgeyByZXR1
cm4gbV91bmRvTWFuYWdlcjsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRv
TWFuYWdlciogdW5kb01hbmFnZXIpIE9WRVJSSURFIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5h
Z2VyOyB9CisgICAgCitwcml2YXRlOgorICAgIHZvaWQgY2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpOworICAgIAorICAgIEpTQzo6
V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+IG1fZGljdGlvbmFyeTsKKyAgICBKU0M6OldlYWs8
SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1f
aXNvbGF0ZWRXb3JsZDsKKyAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250
ZXh0OworICAgIFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vu
ZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEx
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNp
bmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgi
CisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayhjb25zdCBVbmRvTWFuYWdlclN0YWNrJiBzdGFjaywgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICooc3RhY2tbaV0uZ2V0KCkpOworICAg
ICAgICBpZiAoZW50cnkuaXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmIChlbnRyeVswXS0+aXNET01UcmFuc2FjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IGVudHJ5LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgVW5k
b1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5nZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3Rl
cC0+aXNET01UcmFuc2FjdGlvbigpKTsKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0RP
TVRyYW5zYWN0aW9uKj4oc3RlcCktPnZpc2l0RGljdGlvbmFyeSh2aXNpdG9yKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBKU1VuZG9NYW5hZ2VyOjp2aXNpdENo
aWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNVbmRv
TWFuYWdlciogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4oY2VsbCk7CisgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBDT01Q
SUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOwor
ICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAg
VW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyID0gdGhpc09iamVjdC0+aW1wbCgpOworICAgIHZpc2l0
VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFuYWdlci0+dW5kb1N0YWNrKCksIHZpc2l0b3IpOwor
ICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFuYWdlci0+cmVkb1N0YWNrKCksIHZp
c2l0b3IpOworfQorCisKK0pTVmFsdWUgSlNVbmRvTWFuYWdlcjo6dHJhbnNhY3QoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgp
OworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pKQor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgSlNVbmRvTWFuYWdlciog
Y2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7
CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNVbmRvTWFuYWdl
cjo6c19pbmZvKTsKKyAgICBVbmRvTWFuYWdlciogaW1wbCA9IHN0YXRpY19jYXN0PFVuZG9NYW5h
Z2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICAKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOworICAgIAorICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9
IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBpZiAoIWRpY3Rpb25hcnkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGV4ZWMpOworICAgIAorICAgIGJvb2wgbWVyZ2UoTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0Jvb2xlYW4oKSk7CisgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAgUmVmUHRyPEpTRE9NVHJhbnNhY3Rpb24+IHRyYW5z
YWN0aW9uID0gSlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKGRpY3Rpb25hcnkuZ2V0T2JqZWN0KCks
IHRoaXNWYWx1ZS5nZXRPYmplY3QoKSwgY3VycmVudFdvcmxkKGV4ZWMpLCBzY3JpcHRDb250ZXh0
KTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXBsLT50cmFuc2FjdCh0
cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsKKyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTIy
MzY2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
dW5hcHBseSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7
CiAgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9lZGl0QWN0aW9uOyB9CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBib29sIGlzRE9N
VHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiAg
ICAgdm9pZCBhcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqKTsKICAgICBib29sIHdhc0NyZWF0ZUxp
bmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0QWN0aW9uID09IEVkaXRBY3Rpb25DcmVh
dGVMaW5rOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVRyYW5zYWN0aW9uX2gKKyNk
ZWZpbmUgRE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2lu
Y2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgRE9NVHJhbnNhY3Rp
b24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVRyYW5zYWN0
aW9uKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSA9IDA7
CisgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
RWRpdEFjdGlvblVuc3BlY2lmaWVkOyB9CisgICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29u
c3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZpcnR1YWwgVW5kb01hbmFn
ZXIqIHVuZG9NYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdlcihV
bmRvTWFuYWdlciopID0gMDsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTIyMzY2KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAj
aW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
VXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgog
I2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtODAyLDggKzgwMywxMiBAQCB2b2lkIEVkaXRvcjo6YXBw
bGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDCiAgICAgICAgIC8vIE9ubHkgcmVnaXN0ZXIgYSBuZXcg
dW5kbyBjb21tYW5kIGlmIHRoZSBjb21tYW5kIHBhc3NlZCBpbiBpcwogICAgICAgICAvLyBkaWZm
ZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21tYW5kCiAgICAgICAgIG1fbGFzdEVkaXRDb21tYW5kID0g
Y21kOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBpZiAoY2xpZW50KCkpCiAg
ICAgICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+
ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZWxzZQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1
cmVDb21wb3NpdGlvbigpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJlc3BvbmRUb0NoYW5nZWRD
b250ZW50cyhuZXdTZWxlY3Rpb24pOwpAQCAtODIwLDggKzgyNSwxMiBAQCB2b2lkIEVkaXRvcjo6
dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9s
bGVyLT5yZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7CiAgICAgCiAgICAgbV9s
YXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChj
bGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbHNl
CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJSZWRvU3Rl
cChjbWQpOworI2VuZGlmICAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0
aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRp
dGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVj
dGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFy
VHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5y
ZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsxMjU1LDQw
IEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wgRWRpdG9y
OjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xp
ZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lk
IEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNs
aWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBj
bGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAo
Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5k
b01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuY3BwCShyZXZpc2lvbiAxMjIzNjYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5B
QkxFKFVORE9fTUFOQUdFUikKIAotI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJET01UcmFu
c2FjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ0LDcgQEAgUGFz
c1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6OmNyZQogCiBVbmRvTWFuYWdlcjo6VW5k
b01hbmFnZXIoTm9kZSogaG9zdCkKICAgICA6IG1fdW5kb1Njb3BlSG9zdChob3N0KQorICAgICwg
bV9pc0luUHJvZ3Jlc3MoZmFsc2UpCiB7CiB9CiAKQEAgLTUyLDIwICs1MywxMTIgQEAgdm9pZCBV
bmRvTWFuYWdlcjo6dW5kb1Njb3BlSG9zdERlc3Ryb3llZAogICAgIG1fdW5kb1Njb3BlSG9zdCA9
IDA7CiB9CiAKK3ZvaWQgVW5kb01hbmFnZXI6OnRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNh
Y3Rpb24+IHRyYW5zYWN0aW9uLCBib29sIG1lcmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbGVhclJl
ZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2Vy
KHRoaXMpOworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICB0cmFuc2FjdGlv
bi0+ZXhlY3V0ZSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgaWYg
KCFtZXJnZSB8fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIG1fdW5kb1N0YWNrLmFw
cGVuZChhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSkpOworICAgIG1fdW5kb1N0YWNrLmxh
c3QoKS0+YXBwZW5kKHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6dW5kbyhF
eGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Nj
b3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRy
eSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIGNvbnN0IFVuZG9NYW5h
Z2VyRW50cnkmIGVudHJ5ID0gKihtX3VuZG9TdGFjay5sYXN0KCkuZ2V0KCkpOworICAgIGZvciAo
c2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAx
XS0+dW5hcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgbV9y
ZWRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5LnJlbGVhc2UoKSk7CisgICAgbV91bmRv
U3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICBtX2luUHJvZ3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAg
ICAKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgY29uc3QgVW5kb01hbmFnZXJFbnRy
eSYgZW50cnkgPSAqKG1fcmVkb1N0YWNrLmxhc3QoKS5nZXQoKSk7CisgICAgZm9yIChzaXplX3Qg
aSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFdLT5yZWFw
cGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3VuZG9TdGFj
ay5hcHBlbmQobV9pblByb2dyZXNzRW50cnkucmVsZWFzZSgpKTsKKyAgICBtX3JlZG9TdGFjay5y
ZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQogeworICAgIHVuZG8o
QVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OnJlZG8oKQogewor
ICAgIHJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJl
Z2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sKKyAgICBpZiAoIW1f
aXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSA9
IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50cnktPmFwcGVuZChz
dGVwKTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVhc2UoKSk7CisgICAg
ICAgIAorICAgICAgICBjbGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgfSBlbHNl
CisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBlbmQoc3RlcCk7Cit9CisKK3ZvaWQgVW5k
b01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sK
KyAgICBpZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVu
dHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50
cnktPmFwcGVuZChzdGVwKTsKKyAgICAgICAgbV9yZWRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVh
c2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBlbmQoc3Rl
cCk7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kbygpCit2b2lkIFVuZG9NYW5hZ2Vy
OjpjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG1faXNJblByb2dyZXNz
IHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKIH0KIAot
dm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVk
byhFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5k
b1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjIzNjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMy
ICszMyw2MyBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKKyNpbmNs
dWRlICJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTVRyYW5zYWN0aW9uOwog
Y2xhc3MgTm9kZTsKIAordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IFVuZG9NYW5h
Z2VyRW50cnk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gPiBVbmRv
TWFuYWdlclN0YWNrOworCiBjbGFzcyBVbmRvTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVu
ZG9NYW5hZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+
IGNyZWF0ZShOb2RlKiBob3N0KTsKICAgICB2b2lkIHVuZG9TY29wZUhvc3REZXN0cm95ZWQoKTsK
KyAgICAKKyAgICB2b2lkIHRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+LCBib29s
LCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lkIHVuZG8oRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgcmVkbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCBy
ZWRvKCk7CisgICAgCisgICAgaW5saW5lIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyBy
ZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgpICsgbV9yZWRvU3RhY2suc2l6ZSgpOyB9IAorICAgIGlu
bGluZSB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRvU3RhY2su
c2l6ZSgpOyB9CiAKLSAgICB2b2lkIGNsZWFyVW5kbygpOwotICAgIHZvaWQgY2xlYXJSZWRvKCk7
CisgICAgdm9pZCBjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xlYXJSZWRv
KEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAgICBpbmxpbmUgYm9vbCBjYW5VbmRvKCkgY29uc3Qg
eyByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsgfQorICAgIGlubGluZSBib29sIGNhblJl
ZG8oKSBjb25zdCB7IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAg
dm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2b2lkIHJl
Z2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAorICAgIGlubGluZSBj
b25zdCBVbmRvTWFuYWdlclN0YWNrJiB1bmRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3VuZG9T
dGFjazsgfQorICAgIGlubGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiByZWRvU3RhY2soKSBj
b25zdCB7IHJldHVybiBtX3JlZG9TdGFjazsgfQogCiBwcml2YXRlOgogICAgIFVuZG9NYW5hZ2Vy
KE5vZGUqIGhvc3QpOwogICAgIE5vZGUqIG1fdW5kb1Njb3BlSG9zdDsKLX07CiAgICAgCisgICAg
VW5kb01hbmFnZXJTdGFjayBtX3VuZG9TdGFjazsKKyAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVk
b1N0YWNrOworICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7CisgICAgT3duUHRyPFVuZG9NYW5hZ2Vy
RW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5OworfTsKKwogfQotICAgIAorCiAjZW5kaWYKIAogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24g
MTIyMzY2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDEzICszMSwyMyBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJm
YWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VSCisgICAgICAgIENvbmRpdGlv
bmFsPVVORE9fTUFOQUdFUiwKKyAgICAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24KICAgICBdIFVu
ZG9NYW5hZ2VyIHsKLSAgICAgICAgdm9pZCB1bmRvKCk7Ci0gICAgICAgIHZvaWQgcmVkbygpOwor
ICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNhY3Rpb24s
IGluIGJvb2xlYW4gbWVyZ2UpOwogCi0gICAgICAgIHZvaWQgY2xlYXJVbmRvKCk7Ci0gICAgICAg
IHZvaWQgY2xlYXJSZWRvKCk7CisgICAgICAgIHZvaWQgdW5kbygpCisgICAgICAgICAgICByYWlz
ZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZWRvKCkKKyAgICAgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
bG9uZyBwb3NpdGlvbjsKKworICAgICAgICB2b2lkIGNsZWFyVW5kbygpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbGVhclJlZG8oKQorICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIyMzY2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgp
ID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0ID0gMDsK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9vbCBpc0RPTVRyYW5zYWN0
aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNs
aWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMjIzNjYpCisrKyBTb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI2MCw2ICsyNjAsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OmRpZFNldFNlbGVjCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmRv
U3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hlZCB0aGUg
bWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0YWNrLgogICAgIGlmIChtX3VuZG9TdGFjay5zaXpl
KCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5yZW1vdmVG
aXJzdCgpOwpAQCAtMjY4LDI3ICsyNjksNDQgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjpyZWdpc3RlclVuZAogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogCiAgICAgbV91bmRv
U3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5k
aWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclJlZG9TdGVwKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgbV9yZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3Rl
cCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9S
ZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRv
U3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJv
b2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxz
ZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5Q3V0KEZy
YW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMDMsNiArMzIxLDcgQEAgYm9vbCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVkaXRvckNsaWVudEJs
YWNrQmVycnk6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChj
YW5VbmRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0t
bV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFj
ayk7CkBAIC0zMTEsMTAgKzMzMCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVu
ZG8oKQogICAgICAgICAvLyBVbmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBj
b21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsK
ICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAg
ICAgIEVkaXRDb21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgp
OwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3LDYgKzM0
OCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiAgICAgICAgIGNvbW1h
bmQtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYK
IH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNp
b24gMTIyMzY2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHkKIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdp
c3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0
YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRyb3Agb2xk
ZXN0IGl0ZW0gb2ZmIHRoZSBmYXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAgICAgbV9y
ZWRvU3RhY2suY2xlYXIoKTsKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudElt
cGw6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVu
dEltcGw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7
CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZyYW1lKiBm
cmFtZSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzMzOSwyNSBAQCBib29s
IEVkaXRvckNsaWVudEltcGw6OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9yQ2xpZW50
SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0
eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JD
bGllbnRJbXBsOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAo
Y2FuVW5kbygpKSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAt
LW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2sp
OwpAQCAtMzQ2LDEwICszNjUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKICAg
ICAgICAgc3RlcC0+dW5hcHBseSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBi
YWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgfQorI2Vu
ZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBVbmRvTWFuYWdlclN0
YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRy
PFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM2MSw2ICszODIsNyBAQCB2b2lkIEVkaXRvckNs
aWVudEltcGw6OnJlZG8oKQogICAgICAgICAvLyByZWFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRv
IHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHVuZG8gc3RhY2suCiAgICAgICAgIG1faW5SZWRv
ID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9u
IDEyMjM2NikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMCArMTc4LDMwIEBAIHZvaWQgRWRpdG9y
Q2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25UeXAKIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJl
Z2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0
YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVn
aXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVm
bDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIHVuZG9TdGFjay5jbGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlm
CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZh
dWx0VmFsdWUpIGNvbnN0CkBAIC0yMDYsMjQgKzIxNiwzNSBAQCBib29sIEVkaXRvckNsaWVudEVm
bDo6Y2FuUGFzdGUoRnJhbWUqLCBiCiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkg
Y29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFj
ay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29s
IEVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgcmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8oKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAg
UmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gdW5kb1N0YWNrLnRha2VGaXJzdCgpOwog
ICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50RWZsOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAo
Y2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJl
ZG9TdGFjay50YWtlRmlyc3QoKTsKIApAQCAtMjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRpdG9yQ2xp
ZW50RWZsOjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5S
ZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpz
aG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0
aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTIyMzY2KQorKysgU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjg4LDIyICsyODgsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlv
blR5cGVzRgogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQog
ICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKICAgICBpZiAoIW1faXNJblJlZG8pCiAg
ICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+
IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLmFwcGVu
ZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNs
ZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoV2ViQ29y
ZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4LDM3IEBA
IGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5QYXN0ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBFZGl0b3JD
bGllbnQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6
dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkg
ewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5l
bmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAg
ICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBv
bnRvIHRoZSByZWRvIHN0YWNrLgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2Vu
ZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpV
bmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHJlZG9TdGFjay5y
ZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQgRWRpdG9y
Q2xpZW50OjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5S
ZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91
bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9u
IGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMjIzNjYpCisrKyBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5
LDEyICsyMzksMTYgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgog
CiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxX
ZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNp
Zm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdl
LT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKG1faW5V
bmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkg
LyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkKICAgICAgICAgcmV0dXJuOwogICAg
IG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2gobmV3IFVuZG9TdGVwUXQoc3RlcCkpOwogI2VuZGlm
IC8vIFFUX05PX1VORE9TVEFDSworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5k
aWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBAQCB2b2lkIEVkaXRv
ckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNs
ZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNp
Zm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNs
ZWFyKCk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5
Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yNzAsMzgg
KzI3Niw1MCBAQCBib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpGCiAKIGJv
b2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNl
CiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRpZgorI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6
Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRf
Tk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdl
LT51bmRvU3RhY2soKS0+Y2FuUmVkbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9S
ZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT51bmRvKCk7CiAgICAgbV9pblVu
ZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0
OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5E
T1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygp
LT5yZWRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQog
CiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdl
KiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEy
MjM2NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDE1IEBACisyMDEyLTA3LTEwICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5n
dGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9t
YW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRv
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTExICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBFbmFibGUgTEVHQUNZX1ZJRVdQT1JUX0FEQVBUSU9O
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5z
YWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUaGlzIHRlc3RzIFVuZG9N
YW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5
IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnR5IHRyYW5zYWN0LiAK
K1BBU1MgQWZ0ZXIgYSB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSB0cmFu
c2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIg
YXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW4gdW5kbyBjYWxs
LCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFm
dGVyIGFub3RoZXIgdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIGZpcnN0IHRy
YW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGll
cyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90aGVyIHJlZG8gY2FsbCwg
dW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRl
ciB0aHJlZSB0cmFuc2FjdCBjYWxscyB0aGF0IGFyZSBtZXJnZWQgaW50byBvbmUgZW50cnksIHVu
ZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucy4gCitQQVNTIEFmdGVyIGFu
IHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMg
aW4gdGhlIGNvcnJlY3Qgb3JkZXIuIAorUEFTUyBBZnRlciBhbiByZWRvIGNhbGwsIHVuZG9NYW5h
Z2VyIHJlYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVy
LiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10
cmFuc2FjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMzAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5VbmRvTWFuYWdlci50cmFuc2FjdCgpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
K1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworPGRpdiBpZD0i
ZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+
Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9vd25fcHJvcGVydHko
ZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIpOworfSwgImRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRv
TWFuYWdlci4iKTsKKwordmFyIHVuZG9NYW5hZ2VyID0gZG9jdW1lbnQudW5kb01hbmFnZXI7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUodW5kb01hbmFnZXIs
ICJ0cmFuc2FjdCIpOworfSwgInVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0eSB0cmFuc2FjdC4iKTsK
KwordmFyIGVkaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdCIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUi
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxZSAiOworICAg
ICAgICB9LAorICAgICAgICAidW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5p
bm5lckhUTUwgKz0gIjF1ICI7CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXIgIjsKKyAgICAgICAgfQorICAg
IH0sIGZhbHNlKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgIik7Cit9
LCAiQWZ0ZXIgYSB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSB0cmFuc2Fj
dGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7
CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVy
SFRNTCArPSAiMmUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIydSAiOworICAgICAgICB9LAorICAgICAg
ICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJy
ICI7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gIjFlIDJlICIpOworfSwgIkFmdGVyIGFub3RoZXIgdHJhbnNhY3QgY2FsbCwgdW5k
b01hbmFnZXIgYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0Lmlu
bmVySFRNTCA9PSAiMWUgMmUgMnUgIik7Cit9LCAiQWZ0ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFu
YWdlciB1bmFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gIjFlIDJlIDJ1IDF1ICIpOworfSwgIkFmdGVyIGFub3RoZXIgdW5kbyBjYWxsLCB1
bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0
LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgMXIgIik7Cit9LCAiQWZ0ZXIgYSByZWRvIGNhbGws
IHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF90cnVlKGVk
aXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAxciAyciAiKTsKK30sICJBZnRlciBhbm90aGVy
IHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24u
Iik7CisKK2VkaXQuaW5uZXJIVE1MID0gIiI7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1
bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsK
KyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVk
aXQuaW5uZXJIVE1MICs9ICIxciAiOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIHVu
ZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9LAorICAgICAgICAi
dW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJ1ICI7
CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBl
ZGl0LmlubmVySFRNTCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIHRydWUpOworICAgIHVu
ZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzZSAiOworICAgICAgICB9LAorICAgICAgICAi
dW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjN1ICI7
CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBl
ZGl0LmlubmVySFRNTCArPSAiM3IgIjsKKyAgICAgICAgfQorICAgIH0sIHRydWUpOworICAgIGFz
c2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAzZSAiKTsKK30sICJBZnRlciB0aHJl
ZSB0cmFuc2FjdCBjYWxscyB0aGF0IGFyZSBtZXJnZWQgaW50byBvbmUgZW50cnksIHVuZG9NYW5h
Z2VyIGFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucy4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gIjFlIDJlIDNlIDN1IDJ1IDF1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2FsbCwgdW5k
b01hbmFnZXIgdW5hcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qg
b3JkZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOwor
ICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAzZSAzdSAydSAxdSAxciAy
ciAzciAiKTsKK30sICJBZnRlciBhbiByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0
aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOworCitlZGl0LnN0
eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8t
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyBVbmRvTWFu
YWdlcidzIHVuZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4KKworUEFTUyBkb2N1
bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJv
cGVydGllcyB1bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4gCitQQVNTIHVuZG9NYW5h
Z2VyIGhhcyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlv
biAoMCkuIAorUEFTUyBBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9N
YW5hZ2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIAorUEFTUyBBZnRlciBib2xk
aW5nIHRoZSB0ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAw
LCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywg
dW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1
bHQgaXMgYSBwbGFpbiAndGVzdCcuIAorUEFTUyBBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidz
IGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4g
CitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0
aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIg
cmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5k
IHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKzwhZG9j
dHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlciBoYXMgdW5kbygp
IGFuZCByZWRvKCkgdGhhdCB3b3JrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMg
dGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24u
CisKKzxkaXYgaWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlk
PSJsb2ciPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRf
b3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMg
cHJvcGVydHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0
X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAgYXNzZXJ0
X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAgYXNzZXJ0
X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAgIGFzc2Vy
dF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOworfSwgInVu
ZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBvc2l0aW9u
LiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9N
YW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdl
ci5wb3NpdGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZh
bHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7CisgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAgICAKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7CisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAiQWZ0ZXIgaW5z
ZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFu
ZCBwb3NpdGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciByYW5nZSA9
IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVk
aXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVl
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVk
aXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRpbmcgdGhlIHRl
eHQsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUg
cmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1
bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQu
dW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gInRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBp
cyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4i
KTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5k
bygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9
PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAy
KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiQWZ0ZXIgdW5k
b2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRo
ZSByZXN1bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01h
bmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
InRlc3QiKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFu
ZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAg
ICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOwor
ICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsK
KyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAg
ICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRl
ciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBh
bmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkg
PSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152682</attachid>
            <date>2012-07-16 19:30:23 -0700</date>
            <delta_ts>2012-07-17 17:16:24 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-89722-20120716193218.patch</filename>
            <type>text/plain</type>
            <size>86444</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk3IEBACisyMDEyLTA3LTE2ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qu
aHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5z
YWN0aW9uOjpKU0RPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNh
Y3Rpb246OnZpc2l0RGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0
aW9uOjpjYWxsUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6
ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEpTRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01U
cmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5h
Z2VyOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6OnRy
YW5zYWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYWtEaWN0aW9uYXJ5
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6VjhET01UcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjp+VjhET01UcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpkaXNwb3NlRGlj
dGlvbmFyeU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpleGVj
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFY4RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmV4aXN0aW5n
RGljdGlvbmFyeU9iamVjdFBlcnNpc3RlbnRIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01UcmFuc2FjdGlvbjo6aGFzRXhpc3RpbmdEaWN0aW9uYXJ5T2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhVbmRvTWFuYWdlcjo6dmlzaXRET01XcmFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VW5kb01hbmFnZXI6OnRyYW5zYWN0Q2FsbGJhY2spOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChET01U
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6fkRPTVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5h
cHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlYXBwbGllZEVkaXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblJlZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWRvKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kbyk6CisgICAgICAgIChX
ZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdl
cjo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVn
aXN0ZXJSZWRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAq
IGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVW5k
b01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpj
YW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5SZWRvKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5p
ZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAgICAoVW5kb1N0ZXApOgor
CiAyMDEyLTA3LTE2ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBUdXJuIG9mZiBTY3JvbGxiYXJMYXllckNocm9taXVtIGZvciBXaW5kb3dz
IGR1ZSB0byBiYWQgYWxwaGEgdmFsdWVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MDIsNiArMTQwMiw4IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3Bw
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAor
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKKwlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXApAQCAtMTUyMyw2ICsxNTI1LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1
c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0
b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9u
TGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NT
S2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCkBAIC0yMTE3LDYgKzIxMjAsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUu
aCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmggXAorCVNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
QWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxMjI3OTYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzAsNiArMTMwLDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9WOEJpbmRp
bmdQZXJDb250ZXh0RGF0YS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
Y3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvVjhET01NYXAuY3BwIFwKKyAgICAgICAgYmluZGlu
Z3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9WOERPTVdy
YXBwZXIuY3BwIFwKICAgICAgICAgYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lckxpc3QuY3BwIFwKQEAgLTIyNyw2ICsy
MjgsOCBAQCB2OCB7CiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3Rv
bS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTVkdQYXRoU2VnQ3VzdG9tLmNw
cCBcCiAgICAgICAgIFwKKyAgICAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJD
dXN0b20uY3BwIFwKKyAgICAgICAgXAogICAgICAgICBiaW5kaW5ncy92OC9zcGVjaWFsaXphdGlv
bi9WOEJpbmRpbmdTdGF0ZS5jcHBcCiAgICAgICAgIFwKICAgICAgICAgYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcCBcCkBAIC0yNzUsNiArMjc4LDcgQEAgdjggewog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNET01U
cmFuc2FjdGlvbi5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3Bw
IFwKICAgICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKICAgICAgICAg
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgXApAQCAtMzU3LDYgKzM2MSw3IEBAIHY4
IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3Mv
anMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9K
U1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5p
bWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9u
TGlzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1l
UnVsZUN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkocmV2aXNpb24gMTIyNzk2KQor
KysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiAr
Mjk1LDEzIEBAIElGIChFTkFCTEVfV0VCX0lOVEVOVFMpCiAgICAgKQogRU5ESUYgKCkKIAorSUYg
KEVOQUJMRV9VTkRPX01BTkFHRVIpCisgICAgTElTVCAoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAorICAgICAgICBiaW5kaW5n
cy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQ
RU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3IucG0KICkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCShyZXZpc2lvbiAxMjI3OTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9WOEJp
bmRpbmcuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAogICAgIGJpbmRpbmdz
L3Y4L1Y4RE9NTWFwLmNwcAorICAgIGJpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uY3BwCiAg
ICAgYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKICAgICBiaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcApAQCAtMTUw
LDYgKzE1MSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4
L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OFVpbnQzMkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJy
YXlDdXN0b20uY3BwCisgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20u
Y3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTU3LDMgKzI1NTcsOSBAQCBfX1pO
N1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dlYkNvcmUyNFRleHRB
bHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19a
TjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0
ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVF
RQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTF1bmRvTWFuYWdlckV2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHJlZG9FdgorX19a
TjdXZWJDb3JlMTFVbmRvTWFuYWdlcjR1bmRvRXYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQkocmV2aXNpb24gMTIyNzk2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOTY5LDYgKzE5NjksOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9K
U0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRy
YW5zYWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlv
bi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0VudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNFbnRyeVN5bmNDdXN0b20uY3BwJywKQEAgLTIwNzMsNiArMjA3NSw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApAQCAtMjIyNiw2ICsy
MjI5LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy92OC9WOERPTU1hcC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0
aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwJywKQEAgLTIzNzMsNiArMjM3OCw3IEBACiAgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3Bw
JywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwJywKQEAgLTI2MjUsNiArMjYzMSw3IEBACiAgICAg
ICAgICAgICAnZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCcsCiAgICAgICAgICAg
ICAnZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAnLAogICAgICAgICAgICAgJ2VkaXRp
bmcvRGljdGF0aW9uQ29tbWFuZC5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9NVHJhbnNh
Y3Rpb24uaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAnLAogICAgICAg
ICAgICAgJ2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuY3BwJywKQEAgLTI2OTIsNiArMjY5OSw4IEBACiAgICAgICAgICAgICAn
ZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCcsCiAgICAgICAgICAgICAnZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL1R5cGluZ0NvbW1hbmQu
Y3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcCcsCisgICAgICAgICAg
ICAnZWRpdGluZy9VbmRvTWFuYWdlci5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1VuZG9TdGVw
LmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5jcHAnLAogICAgICAgICAg
ICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjI3OTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjI1MDMsNiArMjI1MDMsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1
aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0Zp
bGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmgiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNWYWxpZGl0eVN0
YXRlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC01NTYxOSw2ICs1NTY3
NSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxlZGl0aW5nXERPTVRyYW5zYWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUK
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRWRpdEFjdGlvbi5oIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTU3OTQzLDYgKzU4MDAzLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZp
bGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb01hbmFnZXIuY3BwIgorCQkJCT4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29s
CisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxX
aW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wK
KwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0
aW5nXFVuZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb1N0ZXAuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC02
NTg3OCw2ICs2NTk5NCw2MiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NVHJh
bnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01UcmFuc2FjdGlvbi5oIgorCQkJCQk+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNE
T01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTY5
NjcwLDYgKzY5ODQyLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNVbmRvTWFu
YWdlckN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJv
ZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAJ
CQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjI3OTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE5NDMsOCArMTk0MywxMiBAQAogCQk3QUYxMUE1QTEyRTcyNzQ5MDA2MUYy
M0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9y
UnVudGltZUFnZW50LmggKi87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3Jp
cHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0MTEz
Mjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMgLyog
U2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLzsg
fTsKIAkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0MxNTc2QzVC
NTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBDRjE1NzZDNUI1
MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFn
ZXIuaCAqLzsgfTsKKwkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1
MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9OworCQk3
QjUxN0U4NTE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODMxNUFDRjFGNTAwRjE2
QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0I1MTdFODcxNUFDRjIxMTAwRjE2
QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24u
aCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NENGMTU3
NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCOTE4NEQzMTU3NThF
NDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2Vy
LmggKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0QwMDEy
N0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MDgxLDggKzkwODUsMTIgQEAKIAkJN0FGMTFB
NTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJy
ZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtw
b2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3N0I2MDAz
NUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVW5kb01hbmFnZXJDdXN0b20u
Y3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VW5kb01hbmFnZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdC
MUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBK
U0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CisJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24uaDsg
cGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRy
YW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0I1MTdFODYxNUFD
RjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRv
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMTE1NzU4RTQyMDA5MkFBOTMg
LyogVW5kb01hbmFnZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2OTkzLDYgKzE3MDAxLDcgQEAKIAkJ
CQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLywK
IAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgKi8s
CiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCAqLywK
KwkJCQk3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCAqLywKIAkJ
CQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICovLAogCQkJCTkzMzA5
RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlEOTUw
OTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0xOTk2Miw2ICsxOTk3MSw4
IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICovLAog
CQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAgKi8s
CiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmggKi8s
CisJCQkJN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICov
LAorCQkJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8s
CiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgKi8s
CiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICovLAog
CQkJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCAqLywK
QEAgLTIwMjA0LDYgKzIwMjE1LDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlGQUIgLyog
SlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUxMDUwOEQ5QzAwMDk5RkFC
IC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkwNUExNEMwRjYxMTAwRjY3
OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAorCQkJCTdCMDk5MkY0MTVB
Q0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhFOUJE
RTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJCQkJ
NDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9t
LmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmltYXRp
b25DdXN0b20uY3BwICovLApAQCAtMjI5NjUsNiArMjI5NzcsNyBAQAogCQkJCTE4ODYwNEI0MEYy
RTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDVGRDY5RTAx
Mjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzZG
QzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0I1MTdFODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdhbGtl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERPTVRy
ZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzYxNiw2ICsyMzYyOSw3IEBA
CiAJCQkJQzUxMzdDRjMxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3RyaW5nTGlzdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFw
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Njk0NTYzRDEyMTREOTdDMDAwN0NCQUUgLyogSlNET01U
b2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNTE3RTg1MTVBQ0YxRjUwMEYxNkI3QSAv
KiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJDNUE0
MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjkzMjc0MEQ3RTI5
MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1MkZC
QkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yNjgwMiw2ICsyNjgxNiw3IEBACiAJCQkJQkM2NDY0OUMxMUQ4MjM4QzAwNjQ1NUIwIC8q
IEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2OTQ1NjNDMTIx
NEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
NEUwQkM1NjEzNjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMzIC8qIEpT
RE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCQTBDMDlFQjE4QzcwMDc5N0M3RiAv
KiBKU0RPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY5MzI3MzBEN0UyOTM5MDBB
RTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyNzAsNiAr
MjcyODUsNyBAQAogCQkJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xhbXBl
ZEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkxQTM5MDVCMTRDMEY2MTEwMEY2NzkwMSAv
KiBKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCMUVB
MENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlkaXR5
U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3RjcxM0Q0QzhCRDAwNEU0MzcyIC8q
IEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4RTlCREYxM0Q0Q0Qy
QjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC0yODQxMyw3ICsyODQyOSw5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJT1RI
RVJfQ0ZMQUdTID0gIi1ERU5BQkxFX1VORE9fTUFOQUdFUiI7CiAJCQkJU1RSSVBfSU5TVEFMTEVE
X1BST0RVQ1QgPSBOTzsKKwkJCQlTWU1ST09UID0gL1ZvbHVtZXMvcHJvamVjdC93ZWJraXQvV2Vi
S2l0QnVpbGQ7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlz
aW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJKU0RP
TVN0cmluZ0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNET01U
cmFuc2FjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKICNpbmNsdWRl
ICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5jcHAi
CkBAIC0xNTUsNiArMTU2LDcgQEAKICNpbmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU1VpbnQ4QXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhDbGFt
cGVkQXJyYXlDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVW5kb01hbmFnZXJDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktp
dEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJh
bnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKworI2lu
Y2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgorI2lu
Y2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlVuZG9NYW5h
Z2VyLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCit1c2luZyBuYW1lc3BhY2UgSlND
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTRE9NVHJhbnNhY3Rpb246OkpTRE9NVHJhbnNh
Y3Rpb24oSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldv
cmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAg
IDogbV93cmFwcGVyKHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRXb3Js
ZCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91bmRvTWFuYWdlcigwKQorewor
ICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2RpY3Rpb25hcnkuc2V0TWF5QmVOdWxsKCptX2lz
b2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVsc2UK
KyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6
dmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgaWYgKG1f
ZGljdGlvbmFyeSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZGljdGlvbmFyeSk7Cit9CisK
K3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6Y2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK3sK
KyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRFeGVj
dXRpb25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3Ji
aWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAgICAg
IHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOworICAgIAorICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rpb25hcnkoZXhlYywgbV9kaWN0aW9u
YXJ5LmdldCgpKTsKKyAgICBpZiAoIWpzRGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZTsKKyAgICBpZiAoIWpzRGljdGlvbmFy
eS5nZXQocHJvcGVydHlOYW1lLCB2YWx1ZSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXZh
bHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUgZnVu
Y3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7CisgICAgCisgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwor
ICAgIAorICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgTWFya2Vk
QXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBmdW5jdGlv
bjsKKyAgICAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2Fs
bFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1Zh
bHVlLCBhcmdzKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSgp
Cit7CisgICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30KKwor
dm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9j
b250ZXh0LmdldCgpLCAidW5kbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBt
X3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOworfQorCit2b2lkIEpTRE9NVHJh
bnNhY3Rpb246OnJlYXBwbHkoKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCks
ICJyZWRvIik7CisgICAgaWYgKG1fdW5kb01hbmFnZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXIt
PnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0RPTVRyYW5zYWN0aW9uX2gKKyNkZWZpbmUg
SlNET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVk
ZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3Vu
dGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Citj
bGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgSlNET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBET01U
cmFuc2FjdGlvbiB7CitwdWJsaWM6CisgICAgSlNET01UcmFuc2FjdGlvbihKU0M6OkpTT2JqZWN0
KiBkaWN0aW9uYXJ5LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlz
b2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiBjcmVhdGUoSlNDOjpKU09iamVjdCogZGljdGlv
bmFyeSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdv
cmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBKU0RPTVRyYW5zYWN0aW9uKGRpY3Rpb25hcnksIHdyYXBwZXIsIGlz
b2xhdGVkV29ybGQsIGNvbnRleHQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2aXNpdERpY3Rp
b25hcnkoSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgVW5kb01hbmFnZXIq
IHVuZG9NYW5hZ2VyKCkgT1ZFUlJJREUgeyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIE9WRVJS
SURFIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9CisgICAgCitwcml2YXRlOgorICAg
IHZvaWQgY2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUpOworICAgIAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmplY3Q+
IG1fZGljdGlvbmFyeTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVyOwor
ICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKKyAgICBSZWZQdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OworICAgIFVuZG9NYW5hZ2VyKiBtX3Vu
ZG9NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20u
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgiCisK
KyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5o
PgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRp
YyB2b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayhjb25zdCBVbmRvTWFuYWdlclN0YWNrJiBz
dGFjaywgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBl
bnRyeSA9ICooc3RhY2tbaV0uZ2V0KCkpOworICAgICAgICBpZiAoZW50cnkuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeVswXS0+aXNET01UcmFuc2Fj
dGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVudHJ5LnNpemUo
KTsgKytqKSB7CisgICAgICAgICAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5nZXQo
KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RlcC0+aXNET01UcmFuc2FjdGlvbigpKTsKKyAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVRyYW5zYWN0aW9uKj4oc3RlcCktPnZpc2l0
RGljdGlvbmFyeSh2aXNpdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30K
Kwordm9pZCBKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNVbmRvTWFuYWdlciogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1VuZG9NYW5hZ2VyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFncyAm
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0U2V0
dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8o
KS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhp
c09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyID0g
dGhpc09iamVjdC0+aW1wbCgpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRvTWFu
YWdlci0+dW5kb1N0YWNrKCksIHZpc2l0b3IpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayh1bmRvTWFuYWdlci0+cmVkb1N0YWNrKCksIHZpc2l0b3IpOworfQorCisKK0pTVmFsdWUgSlNV
bmRvTWFuYWdlcjo6dHJhbnNhY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKCZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZXhlYyk7CisgICAgSlNVbmRvTWFuYWdlciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1VuZG9N
YW5hZ2VyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCAmSlNVbmRvTWFuYWdlcjo6c19pbmZvKTsKKyAgICBVbmRvTWFuYWdl
ciogaW1wbCA9IHN0YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsK
KyAgICAKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwor
ICAgIAorICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIWRpY3Rpb25hcnkuaXNP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgIAorICAg
IGJvb2wgbWVyZ2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5k
ZWZpbmVkKS50b0Jvb2xlYW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICgh
c2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisgICAg
UmVmUHRyPEpTRE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSlNET01UcmFuc2FjdGlvbjo6
Y3JlYXRlKGRpY3Rpb25hcnkuZ2V0T2JqZWN0KCksIHRoaXNWYWx1ZS5nZXRPYmplY3QoKSwgY3Vy
cmVudFdvcmxkKGV4ZWMpLCBzY3JpcHRDb250ZXh0KTsKKyAgICAKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBpbXBsLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsKKyAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
fQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01U
cmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgorCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIu
aCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgorI2lu
Y2x1ZGUgIlY4U3RvcmFnZS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgd2Vha0RpY3Rpb25hcnlDYWxsYmFjayh2ODo6UGVy
c2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhET01UcmFuc2Fj
dGlvbiogZGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFY4RE9NVHJhbnNhY3Rpb24qPihwYXJhbWV0
ZXIpOworICAgIGRpY3Rpb25hcnktPmRpc3Bvc2VEaWN0aW9uYXJ5T2JqZWN0KCk7Cit9CisgICAg
CitWOERPTVRyYW5zYWN0aW9uOjpWOERPTVRyYW5zYWN0aW9uKHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fd29ybGRDb250ZXh0KHdvcmxk
Q29udGV4dCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQoreworICAgIG1fZGljdGlvbmFyeSA9
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcoZGljdGlvbmFyeSk7CisgICAgbV9kaWN0
aW9uYXJ5Lk1ha2VXZWFrKHRoaXMsICZ3ZWFrRGljdGlvbmFyeUNhbGxiYWNrKTsKK30KKyAgICAK
K1Y4RE9NVHJhbnNhY3Rpb246On5WOERPTVRyYW5zYWN0aW9uKCkKK3sKKyAgICBkaXNwb3NlRGlj
dGlvbmFyeU9iamVjdCgpOworfQorCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246OmRpc3Bvc2VEaWN0
aW9uYXJ5T2JqZWN0KCkKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5Jc0VtcHR5KCkpIHsKKyAg
ICAgICAgbV9kaWN0aW9uYXJ5LkRpc3Bvc2UoKTsKKyAgICAgICAgbV9kaWN0aW9uYXJ5LkNsZWFy
KCk7CisgICAgfQorfQorCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246OmV4ZWN1dGUoKQoreworICAg
IGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJleGVjdXRlIik7Cit9CisKK3ZvaWQgVjhE
T01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5n
ZXQoKSwgInVuZG8iKTsKKyAgICBpZiAobV91bmRvTWFuYWdlcikKKyAgICAgICAgbV91bmRvTWFu
YWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsKK30KKwordm9pZCBWOERPTVRyYW5zYWN0aW9u
OjpyZWFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250ZXh0LmdldCgpLCAicmVkbyIp
OworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3Rl
clVuZG9TdGVwKHRoaXMpOworfQorCisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6Y2FsbFByb3Bl
cnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSkKK3sKKyAgICBpZiAoY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAg
IAorICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0ID0gdG9WOENvbnRleHQoY29u
dGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4
dCk7CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGRpY3Rpb25hcnkgPSB2ODo6TG9j
YWw8djg6Ok9iamVjdD46Ok5ldyhtX2RpY3Rpb25hcnkpOworICAgIGlmIChkaWN0aW9uYXJ5Lklz
RW1wdHkoKSB8fCAhZGljdGlvbmFyeS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHByb3BlcnR5ID0gZGljdGlvbmFyeS0+R2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbChwcm9wZXJ0eU5hbWUpKTsKKyAgICBpZiAocHJvcGVydHkuSXNF
bXB0eSgpIHx8ICFwcm9wZXJ0eS0+SXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gaGFuZGxlckZ1bmN0aW9uID0gIHY4OjpMb2Nh
bDx2ODo6RnVuY3Rpb24+OjpDYXN0KHByb3BlcnR5KTsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6
Ok9iamVjdD4gcmVjZWl2ZXIgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QoaGFuZGxlckZ1
bmN0aW9uKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1swXSA9IHsgfTsK
KyAgICAKKyAgICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0
KSkgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLT5mcmFtZSgpOworICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2Ny
aXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCisgICAgICAgICAgICBwcm94eS0+Y2FsbEZ1bmN0
aW9uKGhhbmRsZXJGdW5jdGlvbiwgcmVjZWl2ZXIsIDEsIHBhcmFtZXRlcnMpOworICAgIH0KK30K
KworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NVHJh
bnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFY4RE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBWOERPTVRyYW5zYWN0aW9uX2gKKworI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgorI2luY2x1
ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFVuZG9NYW5h
Z2VyOworCitjbGFzcyBWOERPTVRyYW5zYWN0aW9uIDogcHVibGljIERPTVRyYW5zYWN0aW9uIHsK
K3B1YmxpYzoKKyAgICBWOERPTVRyYW5zYWN0aW9uKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBkaWN0
aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VjhET01UcmFuc2FjdGlvbj4gY3JlYXRlKHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdv
cmxkQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhET01UcmFuc2FjdGlvbihkaWN0aW9uYXJ5LCB3b3Js
ZENvbnRleHQsIGNvbnRleHQpKTsKKyAgICB9CisgICAgCisgICAgflY4RE9NVHJhbnNhY3Rpb24o
KTsKKyAgICAKKyAgICAvLyBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgaGFuZGxl
IGZvciBHQy4gUmV0dXJuZWQKKyAgICAvLyB2YWx1ZSBpcyBhIHdlYWsgaGFuZGxlIGFuZCBzbyBu
b3QgZ3VhcmFudGVlZCB0byBzdGF5IGFsaXZlLgorICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+IGV4aXN0aW5nRGljdGlvbmFyeU9iamVjdFBlcnNpc3RlbnRIYW5kbGUoKSB7IHJldHVybiBt
X2RpY3Rpb25hcnk7IH0KKyAgICBib29sIGhhc0V4aXN0aW5nRGljdGlvbmFyeU9iamVjdCgpIHsg
cmV0dXJuICFtX2RpY3Rpb25hcnkuSXNFbXB0eSgpOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lk
IGV4ZWN1dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisgICAgCisgICAgdmlydHVh
bCBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSBPVkVSUklERSB7IHJldHVybiBtX3VuZG9NYW5h
Z2VyOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKiB1bmRv
TWFuYWdlcikgT1ZFUlJJREUgeyBtX3VuZG9NYW5hZ2VyID0gdW5kb01hbmFnZXI7IH0KKyAgICAK
KyAgICB2b2lkIGRpc3Bvc2VEaWN0aW9uYXJ5T2JqZWN0KCk7CisKK3ByaXZhdGU6CisgICAgdm9p
ZCBjYWxsUHJvcGVydHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSk7CisKKyAgICBXb3JsZENvbnRleHRIYW5kbGUgbV93b3JsZENvbnRleHQ7CisgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9kaWN0aW9uYXJ5OworICAgIFJlZlB0cjxTY3Jp
cHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7CisgICAgVW5kb01hbmFnZXIqIG1fdW5kb01h
bmFnZXI7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhV
bmRvTWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlY4
VW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgor
I2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0Lmgi
CisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayhWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+JiBkaWN0aW9uYXJpZXMsIGNvbnN0
IFVuZG9NYW5hZ2VyU3RhY2smIHN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
c3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50
cnkgPSAqKHN0YWNrW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKGVudHJ5LmlzRW1wdHkoKSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoZW50cnlbMF0tPmlzRE9NVHJhbnNhY3Rp
b24oKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBlbnRyeS5zaXplKCk7
ICsraikgeworICAgICAgICAgICAgICAgIFVuZG9TdGVwKiBzdGVwID0gZW50cnlbal0uZ2V0KCk7
CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0ZXAtPmlzRE9NVHJhbnNhY3Rpb24oKSk7CisgICAg
ICAgICAgICAgICAgVjhET01UcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBzdGF0aWNfY2FzdDxW
OERPTVRyYW5zYWN0aW9uKj4oc3RlcCk7CisgICAgICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlv
bi0+aGFzRXhpc3RpbmdMaXN0ZW5lck9iamVjdCgpKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBkaWN0aW9uYXJpZXMuYXBwZW5kKHRyYW5zYWN0aW9uLT5l
eGlzdGluZ0RpY3Rpb25hcnlPYmplY3RQZXJzaXN0ZW50SGFuZGxlKCkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFY4VW5kb01hbmFnZXI6OnZpc2l0RE9NV3Jh
cHBlcihET01EYXRhU3RvcmUqIHN0b3JlLCB2b2lkKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXIpCit7CisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyID0gc3Rh
dGljX2Nhc3Q8VW5kb01hbmFnZXIqPihvYmplY3QpOworICAgIFZlY3Rvcjx2ODo6UGVyc2lzdGVu
dDx2ODo6VmFsdWU+ID4gZGljdGlvbmFyaWVzOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayhkaWN0aW9uYXJpZXMsIHVuZG9NYW5hZ2VyLT51bmRvU3RhY2soKSk7CisgICAgdmlzaXRUcmFu
c2FjdGlvbnNJblN0YWNrKGRpY3Rpb25hcmllcywgdW5kb01hbmFnZXItPnJlZG9TdGFjaygpKTsK
KyAgICBpZiAoIWRpY3Rpb25hcmllcy5pc0VtcHR5KCkpCisgICAgICAgIHY4OjpWODo6QWRkSW1w
bGljaXRSZWZlcmVuY2VzKHdyYXBwZXIsIGRpY3Rpb25hcmllcy5kYXRhKCksIGRpY3Rpb25hcmll
cy5zaXplKCkpOworfQorCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhVbmRvTWFuYWdlcjo6dHJh
bnNhY3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFU
UygiRE9NLlVuZG9NYW5hZ2VyLnRyYW5zYWN0Iik7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAy
KQorICAgICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CisgICAgVW5kb01hbmFnZXIqIGltcCA9IFY4VW5kb01hbmFnZXI6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
IHsgICAgICAgIAorICAgICAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1ZT4s
IGRpY3Rpb25hcnksIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJc1Vu
ZGVmaW5lZCkpOworICAgICAgICBpZiAoIWRpY3Rpb25hcnkuSXNFbXB0eSgpICYmICFkaWN0aW9u
YXJ5LT5Jc09iamVjdCgpKQorICAgICAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93VHlwZUVy
cm9yKCJOb3QgYW4gb2JqZWN0LiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgCisgICAg
ICAgIEVYQ0VQVElPTl9CTE9DSyhib29sLCBtZXJnZSwgTUFZQkVfTUlTU0lOR19QQVJBTUVURVIo
YXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS0+Qm9vbGVhblZhbHVlKCkpOworICAgICAgICAK
KyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKKyAgICAgICAgaWYgKCFjb250ZXh0KQorICAgICAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxWOERPTVRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbiA9IFY4RE9NVHJhbnNhY3Rpb246OmNyZWF0ZSh2ODo6TG9jYWw8djg6
Ok9iamVjdD46OkNhc3QoZGljdGlvbmFyeSksIFdvcmxkQ29udGV4dEhhbmRsZShVc2VDdXJyZW50
V29ybGQpLCBjb250ZXh0KTsKKyAgICAgICAgCisgICAgICAgIGltcC0+dHJhbnNhY3QodHJhbnNh
Y3Rpb24sIG1lcmdlLCBlYyk7CisgICAgICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgICAg
ICBnb3RvIGZhaWw7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKKyAg
ICB9CitmYWlsOgorICAgIHJldHVybiBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFVORE9fTUFOQUdFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOwogICAgIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZWRpdEFjdGlvbjsgfQorI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisgICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgogICAgIHZvaWQgYXBwZW5kKFNpbXBsZUVk
aXRDb21tYW5kKik7CiAgICAgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWRpdEFjdGlvbiA9PSBFZGl0QWN0aW9uQ3JlYXRlTGluazsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6Cisg
KgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAq
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBET01UcmFuc2FjdGlvbl9oCisjZGVmaW5lIERPTVRyYW5zYWN0aW9uX2gK
KworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJVbmRvU3RlcC5oIgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
VW5kb01hbmFnZXI7CisKK2NsYXNzIERPTVRyYW5zYWN0aW9uIDogcHVibGljIFVuZG9TdGVwIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5ET01UcmFuc2FjdGlvbigpIHsgfQorICAgIAorICAgIHZp
cnR1YWwgdm9pZCBleGVjdXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAwOworICAgIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEVkaXRBY3Rpb25VbnNwZWNpZmllZDsg
fQorICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VW5kb01hbmFnZXIoVW5kb01hbmFnZXIqKSA9IDA7Cit9Owor
Cit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJ
KHJldmlzaW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudC5oIgog
I2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKKyNp
bmNsdWRlICJVbmRvTWFuYWdlci5oIgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNh
dG9yLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAg
LTgwMiw4ICs4MDMsMTIgQEAgdm9pZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8
QwogICAgICAgICAvLyBPbmx5IHJlZ2lzdGVyIGEgbmV3IHVuZG8gY29tbWFuZCBpZiB0aGUgY29t
bWFuZCBwYXNzZWQgaW4gaXMKICAgICAgICAgLy8gZGlmZmVyZW50IGZyb20gdGhlIGxhc3QgY29t
bWFuZAogICAgICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IGNtZDsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPnJl
Z2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOwor
I2Vsc2UKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0
ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZW5k
aWYKICAgICB9CiAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsK
QEAgLTgyMCw4ICs4MjUsMTIgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1Jl
ZlB0cgogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvVW5hcHBsaWVk
RWRpdGluZyhjbWQuZ2V0KCkpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVu
dCgpLT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbmRpZiAgCiAgICAg
cmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTgzNSw4ICs4
NDQsMTIgQEAgdm9pZCBFZGl0b3I6OnJlYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cgogICAgIGNo
YW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpD
bG9zZVR5cGluZyB8IEZyYW1lU2VsZWN0aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICAKICAg
ICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOwor
I2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVu
ZG9TdGVwKGNtZCk7CisjZW5kaWYKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2Vs
ZWN0aW9uKTsKIH0KIApAQCAtMTI0MiwyNCArMTI1NSw0MCBAQCB2b2lkIEVkaXRvcjo6Y2xlYXJV
bmRvUmVkb09wZXJhdGlvbnMoKQogCiBib29sIEVkaXRvcjo6Y2FuVW5kbygpCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5V
bmRvKCk7CisjZWxzZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdl
cigpLT5jYW5VbmRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnVuZG8oKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50
KCktPnVuZG8oKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIo
KS0+dW5kbygpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yOjpjYW5SZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNh
blJlZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5h
Z2VyKCktPmNhblJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6cmVkbygpCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGll
bnQoKS0+cmVkbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdl
cigpLT5yZWRvKCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OmRpZEJlZ2luRWRpdGluZygp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTIy
Nzk2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDcgKzMzLDcgQEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKLSNp
bmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC00NCw2ICs0NCw3IEBAIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IFVu
ZG9NYW5hZ2VyOjpjcmUKIAogVW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpCiAg
ICAgOiBtX3VuZG9TY29wZUhvc3QoaG9zdCkKKyAgICAsIG1faXNJblByb2dyZXNzKGZhbHNlKQog
ewogfQogCkBAIC01MiwyMCArNTMsMTEyIEBAIHZvaWQgVW5kb01hbmFnZXI6OnVuZG9TY29wZUhv
c3REZXN0cm95ZWQKICAgICBtX3VuZG9TY29wZUhvc3QgPSAwOwogfQogCit2b2lkIFVuZG9NYW5h
Z2VyOjp0cmFuc2FjdChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiwgYm9v
bCBtZXJnZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8
ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgY2xlYXJSZWRvKEFTU0VSVF9OT19FWENFUFRJT04p
OworICAgIHRyYW5zYWN0aW9uLT5zZXRVbmRvTWFuYWdlcih0aGlzKTsKKyAgICAKKyAgICBtX2lz
SW5Qcm9ncmVzcyA9IHRydWU7CisgICAgdHJhbnNhY3Rpb24tPmV4ZWN1dGUoKTsKKyAgICBtX2lz
SW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIGlmICghbWVyZ2UgfHwgbV91bmRvU3RhY2su
aXNFbXB0eSgpKQorICAgICAgICBtX3VuZG9TdGFjay5hcHBlbmQoYWRvcHRQdHIobmV3IFVuZG9N
YW5hZ2VyRW50cnkpKTsKKyAgICBtX3VuZG9TdGFjay5sYXN0KCktPmFwcGVuZCh0cmFuc2FjdGlv
bik7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKG1f
dW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVzc0Vu
dHJ5ID0gYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgIAorICAgIG1faXNJblBy
b2dyZXNzID0gdHJ1ZTsKKyAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICoobV91
bmRvU3RhY2subGFzdCgpLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gZW50cnkuc2l6ZSgp
OyBpID4gMDsgLS1pKQorICAgICAgICBlbnRyeVtpIC0gMV0tPnVuYXBwbHkoKTsKKyAgICBtX2lz
SW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIG1fcmVkb1N0YWNrLmFwcGVuZChtX2luUHJv
Z3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKK30K
Kwordm9pZCBVbmRvTWFuYWdlcjo6cmVkbyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAo
bV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFM
SURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yZWRvU3Rh
Y2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBh
ZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3Mg
PSB0cnVlOworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3JlZG9TdGFj
ay5sYXN0KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAw
OyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+cmVhcHBseSgpOworICAgIG1faXNJblByb2dy
ZXNzID0gZmFsc2U7CisgICAgCisgICAgbV91bmRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVzc0Vu
dHJ5LnJlbGVhc2UoKSk7CisgICAgbV9yZWRvU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2b2lk
IFVuZG9NYW5hZ2VyOjp1bmRvKCkKIHsKKyAgICB1bmRvKEFTU0VSVF9OT19FWENFUFRJT04pOwog
fQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKCkKIHsKKyAgICByZWRvKEFTU0VSVF9OT19FWENF
UFRJT04pOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQ
dHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykgeworICAgICAg
ICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFn
ZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAgIG1fdW5kb1N0
YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgICAgICAKKyAgICAgICAgY2xlYXJSZWRv
KEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NF
bnRyeS0+YXBwZW5kKHN0ZXApOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9T
dGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVz
cykgeworICAgICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihu
ZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAg
ICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAg
ICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOwogfQogCi12b2lkIFVuZG9NYW5h
Z2VyOjpjbGVhclVuZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKEV4Y2VwdGlvbkNv
ZGUmIGVjKQogeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0KSB7
CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNsZWFy
UmVkbygpCit2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9y
ZWRvU3RhY2suY2xlYXIoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9V
bmRvTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuaAkocmV2aXNpb24gMTIyNzk2KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRv
TWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywzMiArMzMsNjUgQEAKIAogI2lmIEVOQUJM
RShVTkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJEaWN0aW9uYXJ5LmgiIC8vIHN1a29sc2FrCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhv
bGRlci5oIgorI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8d3RmL093blB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgRE9N
VHJhbnNhY3Rpb247CiBjbGFzcyBOb2RlOwogCit0eXBlZGVmIFZlY3RvcjxSZWZQdHI8VW5kb1N0
ZXA+ID4gVW5kb01hbmFnZXJFbnRyeTsKK3R5cGVkZWYgVmVjdG9yPE93blB0cjxVbmRvTWFuYWdl
ckVudHJ5PiA+IFVuZG9NYW5hZ2VyU3RhY2s7CisKIGNsYXNzIFVuZG9NYW5hZ2VyIDogcHVibGlj
IFJlZkNvdW50ZWQ8VW5kb01hbmFnZXI+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxVbmRvTWFuYWdlcj4gY3JlYXRlKE5vZGUqIGhvc3QpOwogICAgIHZvaWQgdW5kb1Njb3BlSG9z
dERlc3Ryb3llZCgpOworICAgIAorICAgIHZvaWQgdHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFu
c2FjdGlvbj4sIGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRyYW5zYWN0KGNvbnN0
IERpY3Rpb25hcnkmLCBib29sLCBFeGNlcHRpb25Db2RlJikgeyB9IC8vIHN1a29sc2FrCiAKKyAg
ICB2b2lkIHVuZG8oRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVkbyhFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCB1bmRvKCk7CiAgICAgdm9pZCByZWRvKCk7CisgICAgCisgICAgaW5saW5l
IHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgp
ICsgbV9yZWRvU3RhY2suc2l6ZSgpOyB9IAorICAgIGlubGluZSB1bnNpZ25lZCBsb25nIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOyB9CiAKLSAgICB2b2lkIGNs
ZWFyVW5kbygpOwotICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgdm9pZCBjbGVhclVuZG8oRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xlYXJSZWRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAK
KyAgICBpbmxpbmUgYm9vbCBjYW5VbmRvKCkgY29uc3QgeyByZXR1cm4gIW1fdW5kb1N0YWNrLmlz
RW1wdHkoKTsgfQorICAgIGlubGluZSBib29sIGNhblJlZG8oKSBjb25zdCB7IHJldHVybiAhbV9y
ZWRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0
cjxVbmRvU3RlcD4pOworICAgIAorICAgIGlubGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiB1
bmRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3VuZG9TdGFjazsgfQorICAgIGlubGluZSBjb25z
dCBVbmRvTWFuYWdlclN0YWNrJiByZWRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFj
azsgfQogCiBwcml2YXRlOgogICAgIFVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpOwogICAgIE5vZGUq
IG1fdW5kb1Njb3BlSG9zdDsKLX07CiAgICAgCisgICAgVW5kb01hbmFnZXJTdGFjayBtX3VuZG9T
dGFjazsKKyAgICBVbmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0lu
UHJvZ3Jlc3M7CisgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5
OworfTsKKwogfQotICAgIAorCiAjZW5kaWYKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24gMTIyNzk2KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwy
NCBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9u
YWw9VU5ET19NQU5BR0VSCisgICAgICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAg
ICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIFY4Q3VzdG9tSXNSZWFjaGFibGUKICAg
ICBdIFVuZG9NYW5hZ2VyIHsKLSAgICAgICAgdm9pZCB1bmRvKCk7Ci0gICAgICAgIHZvaWQgcmVk
bygpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRyYW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNh
Y3Rpb24sIGluIGJvb2xlYW4gbWVyZ2UpOwogCi0gICAgICAgIHZvaWQgY2xlYXJVbmRvKCk7Ci0g
ICAgICAgIHZvaWQgY2xlYXJSZWRvKCk7CisgICAgICAgIHZvaWQgdW5kbygpCisgICAgICAgICAg
ICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCByZWRvKCkKKyAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBwb3NpdGlvbjsKKworICAgICAgICB2b2lkIGNsZWFyVW5kbygpCisgICAgICAg
ICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBjbGVhclJlZG8oKQorICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIyNzk2KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVh
cHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0
ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9vbCBpc0RPTVRy
YW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Vk
aXRvckNsaWVudEJsYWNrQmVycnkuY3BwCShyZXZpc2lvbiAxMjI3OTYpCisrKyBTb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsyNjAsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OmRpZFNldFNlbGVjCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0
ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hl
ZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3IgdGhlIHN0YWNrLgogICAgIGlmIChtX3VuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5y
ZW1vdmVGaXJzdCgpOwpAQCAtMjY4LDI3ICsyNjksNDQgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFj
a0JlcnJ5OjpyZWdpc3RlclVuZAogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogCiAgICAg
bV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclJlZG9T
dGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgbV9yZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
bV91bmRvU3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7
CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4g
ZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5
Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMDMsNiArMzIxLDcgQEAg
Ym9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFj
ayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFu
ZCgqYmFjayk7CkBAIC0zMTEsMTAgKzMzMCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnVuZG8oKQogICAgICAgICAvLyBVbmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2gg
dGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIGNvbW1hbmQtPnVuYXBw
bHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpy
ZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7
CiAgICAgICAgIEVkaXRDb21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNr
LmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3
LDYgKzM0OCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiAgICAgICAg
IGNvbW1hbmQtPnJlYXBwbHkoKTsKICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9Cisj
ZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gMTIyNzk2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0aW9uVHkKIAogdm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVt
VW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRy
b3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBmYXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAg
ICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEltcGw6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRv
ckNsaWVudEltcGw6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNs
ZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZy
YW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzMzOSwyNSBA
QCBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9y
Q2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25z
dAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2su
aXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBF
ZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJh
Y2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAo
KmJhY2spOwpAQCAtMzQ2LDEwICszNjUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRv
KCkKICAgICAgICAgc3RlcC0+dW5hcHBseSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2Fs
bCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAg
fQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBVbmRvTWFu
YWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAg
UmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM2MSw2ICszODIsNyBAQCB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlZG8oKQogICAgICAgICAvLyByZWFwcGx5IHdpbGwgY2FsbCB1cyBi
YWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHVuZG8gc3RhY2suCiAgICAgICAgIG1f
aW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJl
dmlzaW9uIDEyMjc5NikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMCArMTc4LDMwIEBAIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25UeXAKIAogdm9pZCBFZGl0b3JDbGllbnRF
Zmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAg
cmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQor
ICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVm
bDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLnByZXBlbmQoc3RlcCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHVuZG9TdGFjay5jbGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOwor
I2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9v
bCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yMDYsMjQgKzIxNiwzNSBAQCBib29sIEVkaXRvckNs
aWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBiCiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5V
bmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVu
ZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQog
CiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8o
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAg
ICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gdW5kb1N0YWNrLnRha2VGaXJz
dCgpOwogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3Rl
cCA9IHJlZG9TdGFjay50YWtlRmlyc3QoKTsKIApAQCAtMjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRp
dG9yQ2xpZW50RWZsOjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBt
X2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5z
ZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTIyNzk2KQorKysgU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjg4LDIyICsyODgsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNl
bGVjdGlvblR5cGVzRgogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0Rl
cHRoKQogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKICAgICBpZiAoIW1faXNJblJl
ZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFjay5hcHBlbmQoc3Rl
cCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNr
LmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9
CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0
YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQo
V2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4
LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5QYXN0ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBF
ZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZh
bHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5SZWRvKCkgY29uc3QKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVu
ZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9T
dGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgp
KTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29t
bWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAg
fQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJD
b3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHJlZG9T
dGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQg
RWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBt
X2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShyZXZpc2lvbiAxMjI3OTYpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjM5LDEyICsyMzksMTYgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9y
ZU1lbgogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5k
LT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYg
KG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21t
YW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnB1c2gobmV3IFVuZG9TdGVwUXQoc3RlcCkpOwog
I2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBAQCB2b2lk
IEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50
UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNr
KCktPmNsZWFyKCk7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0Ojpj
YW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0y
NzAsMzggKzI3Niw1MCBAQCBib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpG
CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsK
ICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRp
ZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGll
bnRRdDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZk
ZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4g
bV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuUmVkbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVy
biBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9p
blVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT51bmRvKCk7CiAgICAg
bV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNs
aWVudFF0OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRf
Tk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9T
dGFjaygpLT5yZWRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUs
IFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEyMjc5NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE1IEBACisyMDEyLTA3LTEwICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtA
Z29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5kb01hbmFnZXIncyB1bmRvLCByZWRv
LCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRp
dGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5k
by1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA3LTE2ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGNocm9taXVtIG1hYyByZWJhc2VsaW5l
IG9mIGZhc3QvdGV4dC90ZXh0SXRlcmF0b3JOaWxSZW5kZXJlciBmb3IgcjEyMjc2OS4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIn
cyB0cmFuc2FjdCgpIG1ldGhvZC4KKworUEFTUyBkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01h
bmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIAorUEFTUyBB
ZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRyYW5zYWN0aW9u
LiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVz
IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9N
YW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5v
dGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rp
b24uIAorUEFTUyBBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBm
aXJzdCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFu
YWdlciByZWFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIHRocmVl
IHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdlZCBpbnRvIG9uZSBlbnRyeSwgdW5kb01hbmFn
ZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zLiAKK1BBU1MgQWZ0ZXIgYW4gdW5kbyBj
YWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUg
Y29ycmVjdCBvcmRlci4gCitQQVNTIEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFw
cGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4gCisKSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9t
YW5hZ2VyLXRyYW5zYWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTMwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VW5k
b01hbmFnZXIudHJhbnNhY3QoKTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRl
c3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKKzxkaXYgaWQ9ImVkaXQiIGNv
bnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPHNjcmlw
dD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50
LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIu
Iik7CisKK3ZhciB1bmRvTWFuYWdlciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHVuZG9NYW5hZ2VyLCAidHJhbnNh
Y3QiKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIik7CisKK3ZhciBl
ZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAgICAgfSwK
KyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1M
ICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9LCBmYWxz
ZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlICIpOworfSwgIkFmdGVy
IGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rpb24uIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAg
ICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0g
IjJlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8i
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAg
ICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICIxZSAyZSAiKTsKK30sICJBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2Vy
IGFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gIjFlIDJlIDJ1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5h
cHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICIxZSAyZSAydSAxdSAiKTsKK30sICJBZnRlciBhbm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFn
ZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gIjFlIDJlIDJ1IDF1IDFyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFu
YWdlciByZWFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVy
SFRNTCA9PSAiMWUgMmUgMnUgMXUgMXIgMnIgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciByZWRvIGNh
bGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCitl
ZGl0LmlubmVySFRNTCA9ICIiOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGVkaXQuaW5uZXJIVE1MICs9ICIxZSAiOworICAgICAgICB9LAorICAgICAgICAidW5kbyI6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjF1ICI7CisgICAgICAg
IH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVy
SFRNTCArPSAiMXIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICB1bmRvTWFuYWdl
ci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiMmUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIydSAiOworICAgICAg
ICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5l
ckhUTUwgKz0gIjJyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICB1bmRvTWFuYWdl
ci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiM2UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzdSAiOworICAgICAg
ICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5l
ckhUTUwgKz0gIjNyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgIik7Cit9LCAiQWZ0ZXIgdGhyZWUgdHJhbnNh
Y3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdlciBhcHBs
aWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
dW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIx
ZSAyZSAzZSAzdSAydSAxdSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2Vy
IHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgMXIgMnIgM3IgIik7
Cit9LCAiQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgdGhyZWUg
dHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOworCitlZGl0LnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHVu
ZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4KKworUEFTUyBkb2N1bWVudCBoYXMg
cHJvcGVydHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydGllcyB1
bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBj
b3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAoMCkuIAor
UEFTUyBBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5hZ2VyJ3Mg
bGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIAorUEFTUyBBZnRlciBib2xkaW5nIHRoZSB0
ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhl
IHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFn
ZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBw
bGFpbiAndGVzdCcuIAorUEFTUyBBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBp
cyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4gCitQQVNTIEFm
dGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEs
IGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgcmVkb2luZywg
dW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1
bHQgaXMgYSBib2xkICd0ZXN0Jy4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5k
by1yZWRvLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKzwhZG9jdHlwZSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlciBoYXMgdW5kbygpIGFuZCByZWRv
KCkgdGhhdCB3b3JrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgVW5k
b01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisKKzxkaXYg
aWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwv
ZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3Bl
cnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkg
dW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2lkbF9hdHRy
aWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAgYXNzZXJ0X2lkbF9hdHRy
aWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAgYXNzZXJ0X293bl9wcm9w
ZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAgIGFzc2VydF9vd25fcHJv
cGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOworfSwgInVuZG9NYW5hZ2Vy
IGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBvc2l0aW9uLiIpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxl
bmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlv
biA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBmb3Ig
bGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0Nv
bW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1
ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAiQWZ0ZXIgaW5zZXJ0aW5nIHRl
eHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3NpdGlv
biBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciByYW5nZSA9IGRvY3VtZW50
LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXQpOworICAg
IHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgZG9jdW1lbnQuZXhl
Y0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50
LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRpbmcgdGhlIHRleHQsIHVuZG9N
YW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlz
IGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50
LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRv
TWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFn
ZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRl
c3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBw
b3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAgICAK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOworICAg
IAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAyKTsKKyAgICBh
c3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiQWZ0ZXIgdW5kb2luZywgdW5k
b01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSByZXN1bHQg
aXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9N
YW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdl
ci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9z
aXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRlc3QiKTsK
K30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlv
biBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAgICAKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAorICAg
IGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3Nl
cnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3NlcnRf
dHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciByZWRvaW5n
LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhlIHJl
c3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152880</attachid>
            <date>2012-07-17 17:16:30 -0700</date>
            <delta_ts>2012-07-19 00:36:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120717171630.patch</filename>
            <type>text/plain</type>
            <size>85595</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjg5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk2IEBACisyMDEyLTA3LTE3ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwK
KyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3Qu
aHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQu
cHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5z
YWN0aW9uOjpKU0RPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNh
Y3Rpb246OnZpc2l0RGljdGlvbmFyeSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0
aW9uOjpjYWxsUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6
ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEpTRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNET01U
cmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5h
Z2VyOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVW5kb01hbmFnZXI6OnRy
YW5zYWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OndlYWtEaWN0aW9uYXJ5
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6VjhET01UcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjp+VjhET01UcmFu
c2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpkaXNwb3NlRGlj
dGlvbmFyeU9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpleGVj
dXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6cmVhcHBseSk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFY4RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OmV4aXN0aW5n
RGljdGlvbmFyeU9iamVjdFBlcnNpc3RlbnRIYW5kbGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhE
T01UcmFuc2FjdGlvbjo6aGFzRXhpc3RpbmdEaWN0aW9uYXJ5T2JqZWN0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VjhVbmRvTWFuYWdlcjo6dmlzaXRET01XcmFwcGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VW5kb01hbmFnZXI6OnRyYW5zYWN0Q2FsbGJhY2spOgorICAgICAg
ICAqIGVkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChET01U
cmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6fkRPTVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5h
cHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlYXBwbGllZEVkaXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNv
cmU6OkVkaXRvcjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblJlZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWRvKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kbyk6CisgICAgICAgIChX
ZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdl
cjo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVn
aXN0ZXJSZWRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAq
IGVkaXRpbmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVW5k
b01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6Omxlbmd0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VW5kb01hbmFnZXI6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNh
blJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG9TdGFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVkb1N0YWNrKToKKyAgICAgICAgKiBlZGl0aW5n
L1VuZG9NYW5hZ2VyLmlkbDoKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9TdGVwLmg6CisgICAgICAg
IChVbmRvU3RlcCk6CisKIDIwMTItMDctMTcgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxl
LmNvbT4KIAogICAgICAgICBBc3NlcnRpb24gZmFpbHVyZS9jcmFzaCBvbiBXaW5kb3dzIHdoZW4g
dXNpbmcgYSBmb250IGluIGFuIFNWRyAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkocmV2aXNpb24gMTIyODk5KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtMTQwMyw2ICsxNDAzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAorCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCkBAIC0xNTI0LDYgKzE1MjYsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0
b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20u
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3Vz
dG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3Rv
bS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3Vz
dG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25M
aXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NL
ZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKQEAgLTIxMTgsNiArMjEyMSw3IEBAIHdlYmNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5o
IFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaCBcCisJU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRB
Y3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJl
dmlzaW9uIDEyMjg5OSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSw2ICsxMDksNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNE
T01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFw
Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBc
CisgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKICAgICAgYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIFwKQEAgLTE5
MSw2ICsxOTIsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNVaW50MzJBcnJh
eUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwK
ICAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgXAorICAgICBi
aW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pT
V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5p
bWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZy
YW1lUnVsZUN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkocmV2aXNpb24gMTIyODk5
KQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUs
NiArMjk1LDEzIEBAIElGIChFTkFCTEVfV0VCX0lOVEVOVFMpCiAgICAgKQogRU5ESUYgKCkKIAor
SUYgKEVOQUJMRV9VTkRPX01BTkFHRVIpCisgICAgTElTVCAoQVBQRU5EIFdlYkNvcmVfU09VUkNF
UworICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAorICAgICAgICBiaW5k
aW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1Qo
QVBQRU5EIFNDUklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3IucG0KICkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCShyZXZpc2lvbiAxMjI4
OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYs
NiArNDYsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAogICAgIGJpbmRp
bmdzL3Y4L1Y4RE9NTWFwLmNwcAorICAgIGJpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uY3Bw
CiAgICAgYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKICAgICBiaW5kaW5ncy92OC9W
OERPTVdyYXBwZXIuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcApAQCAt
MTUwLDYgKzE1MSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOFVpbnQxNkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4
QXJyYXlDdXN0b20uY3BwCisgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0
b20uY3BwCiAgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyMjg5OSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTU4LDMgKzI1NTgsOSBAQCBf
X1pON1dlYkNvcmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dlYkNvcmUyNFRl
eHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQog
X19aTjdXZWJDb3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJp
YnV0ZWRTdHJpbmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxt
MEVFRQogI2VuZGlmCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorX19aTjdXZWJDb3JlOERv
Y3VtZW50MTF1bmRvTWFuYWdlckV2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHJlZG9Fdgor
X19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjR1bmRvRXYKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkocmV2aXNpb24gMTIyODk5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTcwLDYgKzE5NzAsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRGlyZWN0b3J5RW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0RpcmVjdG9yeUVudHJ5U3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2Fj
dGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0VudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNFbnRyeVN5bmNDdXN0b20uY3BwJywKQEAgLTIwNzQsNiArMjA3Niw3
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApAQCAtMjIyNiw2
ICsyMjI5LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOERPTU1hcC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVRyYW5z
YWN0aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAgICAgICAgICdi
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwJywKQEAgLTIzNzMsNiArMjM3OCw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJyYXlDdXN0b20u
Y3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3Rv
bS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdl
YktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFdlYktpdFBvaW50Q29uc3RydWN0b3IuY3BwJywKQEAgLTI2MjUsNiArMjYzMSw3IEBACiAg
ICAgICAgICAgICAnZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcCcsCiAgICAgICAg
ICAgICAnZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAnLAogICAgICAgICAgICAgJ2Vk
aXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAnLAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9NVHJh
bnNhY3Rpb24uaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAnLAogICAg
ICAgICAgICAgJ2VkaXRpbmcvRWRpdGluZ0FsbEluT25lLmNwcCcsCiAgICAgICAgICAgICAnZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwJywKQEAgLTI2OTIsNiArMjY5OSw4IEBACiAgICAgICAgICAg
ICAnZWRpdGluZy9UZXh0SW5zZXJ0aW9uQmFzZUNvbW1hbmQuaCcsCiAgICAgICAgICAgICAnZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL1R5cGluZ0NvbW1h
bmQuY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcCcsCisgICAgICAg
ICAgICAnZWRpdGluZy9VbmRvTWFuYWdlci5oJywKICAgICAgICAgICAgICdlZGl0aW5nL1VuZG9T
dGVwLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5jcHAnLAogICAgICAg
ICAgICAgJ2VkaXRpbmcvVW5saW5rQ29tbWFuZC5oJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAxMjI4OTkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpA
QCAtMjI1MDMsNiArMjI1MDMsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNWYWxpZGl0
eVN0YXRlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC01NTYyMyw2ICs1
NTY3OSwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxlZGl0aW5nXERPTVRyYW5zYWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRWRpdEFjdGlvbi5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4KQEAgLTU3OTQ3LDYgKzU4MDA3LDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb01hbmFnZXIuY3BwIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlv
bnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxl
ZGl0aW5nXFVuZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcVW5kb1N0ZXAuaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBA
IC02NTg5MCw2ICs2NjAwNiw2MiBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwv
RmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9N
VHJhbnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8
VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlBy
b2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01UcmFuc2FjdGlvbi5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNET01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAg
LTY5NjgyLDYgKzY5ODU0LDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19B
bGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJ
CTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0i
UHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAi
CiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjI4OTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTE5NDYsOCArMTk0NiwxMiBAQAogCQk3QUYxMUE1QTEyRTcyNzQ5MDA2
MUYyM0MgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVj
dG9yUnVudGltZUFnZW50LmggKi87IH07CiAJCTdBRkQ0QThCMTEzMUMyNzYwMDM1Qjg4MyAvKiBT
Y3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdBRkQ0RkY0
MTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUZENEZGMzExMzI3N0I2MDAzNUI4ODMg
LyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5h
Z2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0MxNTc2
QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBDRjE1NzZD
NUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01h
bmFnZXIuaCAqLzsgfTsKKwkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNh
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9Owor
CQk3QjUxN0U4NTE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I1MTdFODMxNUFDRjFGNTAw
RjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKKwkJN0I1MTdFODcxNUFDRjIxMTAw
RjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rp
b24uaCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NENG
MTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCOTE4NEQzMTU3
NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5h
Z2VyLmggKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTMzQ0Qw
MDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MDg3LDggKzkwOTEsMTIgQEAKIAkJN0FG
MTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJl
YWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEZGMzExMzI3N0I2
MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTVW5kb01hbmFnZXJDdXN0
b20uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTVW5kb01hbmFnZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJ
CTdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAv
KiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CisJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTRE9NVHJhbnNhY3Rpb24u
aDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0I1MTdFODYx
NUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09VUkNF
X1JPT1Q7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmRvTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBV
bmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMTE1NzU4RTQyMDA5MkFB
OTMgLyogVW5kb01hbmFnZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2Vy
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MDAxLDYgKzE3MDA5LDcgQEAK
IAkJCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAq
LywKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAg
Ki8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCAq
LywKKwkJCQk3QjUxN0U4NjE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCAqLywK
IAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICovLAogCQkJCTkz
MzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMzMDlE
OTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0xOTk3MCw2ICsxOTk3
OSw4IEBACiAJCQkJOTNCNzBENDgwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oICov
LAogCQkJCUUxQzM2Q0JDMEVCMDgwNjIwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVjdC5jcHAg
Ki8sCiAJCQkJRTFDMzZDMDIwRUIwNzZENjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0Lmgg
Ki8sCisJCQkJN0I1MTdFODIxNUFDRjFGMzAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uY3Bw
ICovLAorCQkJCTdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmgg
Ki8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAg
Ki8sCiAJCQkJQkM2OTMyNzIwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oICov
LAogCQkJCUJDQkZCNTNBMERDRDI5Q0YwMDE5QjNFNSAvKiBKU0RPTVdpbmRvd1NoZWxsLmNwcCAq
LywKQEAgLTIwMjEyLDYgKzIwMjIzLDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlGQUIg
LyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUxMDUwOEQ5QzAwMDk5
RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkwNUExNEMwRjYxMTAw
RjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAorCQkJCTdCMDk5MkY0
MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlGRDhF
OUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8sCiAJ
CQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3Vz
dG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRBbmlt
YXRpb25DdXN0b20uY3BwICovLApAQCAtMjI5NzQsNiArMjI5ODYsNyBAQAogCQkJCTE4ODYwNEI0
MEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDVGRDY5
RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJN0I1MTdFODcxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2FsLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJlZVdh
bGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8qIERP
TVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzYyNyw2ICsyMzY0MCw3
IEBACiAJCQkJQzUxMzdDRjMxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3RyaW5nTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5n
TWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Njk0NTYzRDEyMTREOTdDMDAwN0NCQUUgLyogSlNE
T01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNTE3RTg1MTVBQ0YxRjUwMEYxNkI3
QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEyREJD
NUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjkzMjc0MEQ3
RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1
MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0yNjgxNCw2ICsyNjgyOCw3IEBACiAJCQkJQkM2NDY0OUMxMUQ4MjM4QzAwNjQ1NUIw
IC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2OTQ1NjND
MTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxNEUwQkM1NjEzNjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0I1MTdFODQxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNh
Y3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0UwMDUxMkRCQzVBNDAwQTZCMjMzIC8q
IEpTRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MDNCQTBDMDlFQjE4QzcwMDc5N0M3
RiAvKiBKU0RPTVdpbmRvdy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzY5MzI3MzBEN0UyOTM5
MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjcyODIs
NiArMjcyOTcsNyBAQAogCQkJCTkxMDg5RDMzMTRDMzM2MDUwMDVBRkM0OSAvKiBKU1VpbnQ4Q2xh
bXBlZEFycmF5LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkxQTM5MDVCMTRDMEY2MTEwMEY2Nzkw
MSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdC
MUVBMENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdCMDk5MkY1MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTE1Qzc3MDk0MTAwRDNDQTgwMDVCQTI2NyAvKiBKU1ZhbGlk
aXR5U3RhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4MkQ3RjcxM0Q0QzhCRDAwNEU0Mzcy
IC8qIEpTV2F2ZVNoYXBlck5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQ4RTlCREYxM0Q0
Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0yODQyNSw3ICsyODQ0MSw5IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
T1RIRVJfQ0ZMQUdTID0gIi1ERU5BQkxFX1VORE9fTUFOQUdFUiI7CiAJCQkJU1RSSVBfSU5TVEFM
TEVEX1BST0RVQ1QgPSBOTzsKKwkJCQlTWU1ST09UID0gL1ZvbHVtZXMvcHJvamVjdC93ZWJraXQv
V2ViS2l0QnVpbGQ7CiAJCQl9OwogCQkJbmFtZSA9IFJlbGVhc2U7CiAJCX07CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJl
dmlzaW9uIDEyMjg5OSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NB
bGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJK
U0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwQ3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNE
T01UcmFuc2FjdGlvbi5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKICNpbmNs
dWRlICJKU0RPTVdpbmRvd0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5j
cHAiCkBAIC0xNTUsNiArMTU2LDcgQEAKICNpbmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU1VpbnQ4QXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhD
bGFtcGVkQXJyYXlDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dl
YktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlQ3VzdG9tLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5oIgor
I2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1ZS5oIgorI2luY2x1ZGUgIlVuZG9N
YW5hZ2VyLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTRE9NVHJhbnNhY3Rpb246OkpTRE9NVHJh
bnNhY3Rpb24oSlNPYmplY3QqIGZ1bmN0aW9uLCBKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBl
cldvcmxkKiBpc29sYXRlZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQor
ICAgIDogbV93cmFwcGVyKHdyYXBwZXIpCisgICAgLCBtX2lzb2xhdGVkV29ybGQoaXNvbGF0ZWRX
b3JsZCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91bmRvTWFuYWdlcigwKQor
eworICAgIGlmICh3cmFwcGVyKQorICAgICAgICBtX2RpY3Rpb25hcnkuc2V0TWF5QmVOdWxsKCpt
X2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZnVuY3Rpb24pOworICAgIGVs
c2UKKyAgICAgICAgQVNTRVJUKCFmdW5jdGlvbik7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlv
bjo6dmlzaXREaWN0aW9uYXJ5KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgaWYg
KG1fZGljdGlvbmFyeSkKKyAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZGljdGlvbmFyeSk7Cit9
CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6Y2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkK
K3sKKyAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFzY3JpcHRF
eGVjdXRpb25Db250ZXh0IHx8IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzSlNFeGVjdXRpb25G
b3JiaWRkZW4oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9NR2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIG1faXNvbGF0ZWRXb3JsZC5nZXQoKSk7CisgICAgaWYgKCFnbG9iYWxPYmplY3QpCisgICAg
ICAgIHJldHVybjsKKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOworICAgIAorICAgIEpTRGljdGlvbmFyeSBqc0RpY3Rpb25hcnkoZXhlYywgbV9kaWN0
aW9uYXJ5LmdldCgpKTsKKyAgICBpZiAoIWpzRGljdGlvbmFyeS5pc1ZhbGlkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBTY3JpcHRWYWx1ZSB2YWx1ZTsKKyAgICBpZiAoIWpzRGljdGlv
bmFyeS5nZXQocHJvcGVydHlOYW1lLCB2YWx1ZSkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
IXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTVmFsdWUg
ZnVuY3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7CisgICAgCisgICAgQ2FsbERhdGEgY2FsbERhdGE7
CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEp
OworICAgIAorICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBmdW5j
dGlvbjsKKyAgICAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkK
KyAgICAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhp
c1ZhbHVlLCBhcmdzKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0
ZSgpCit7CisgICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30K
Kwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHko
bV9jb250ZXh0LmdldCgpLCAidW5kbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAg
ICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOworfQorCit2b2lkIEpTRE9N
VHJhbnNhY3Rpb246OnJlYXBwbHkoKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0
KCksICJyZWRvIik7CisgICAgaWYgKG1fdW5kb01hbmFnZXIpCisgICAgICAgIG1fdW5kb01hbmFn
ZXItPnJlZ2lzdGVyVW5kb1N0ZXAodGhpcyk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAq
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0RPTVRyYW5zYWN0aW9uX2gKKyNkZWZp
bmUgSlNET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5j
bHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtD
b3VudGVyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgSlNET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBE
T01UcmFuc2FjdGlvbiB7CitwdWJsaWM6CisgICAgSlNET01UcmFuc2FjdGlvbihKU0M6OkpTT2Jq
ZWN0KiBkaWN0aW9uYXJ5LCBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQq
IGlzb2xhdGVkV29ybGQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICAKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiBjcmVhdGUoSlNDOjpKU09iamVjdCogZGlj
dGlvbmFyeSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBKU0RPTVRyYW5zYWN0aW9uKGRpY3Rpb25hcnksIHdyYXBwZXIs
IGlzb2xhdGVkV29ybGQsIGNvbnRleHQpKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB2aXNpdERp
Y3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYpOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKCkg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwgVW5kb01hbmFn
ZXIqIHVuZG9NYW5hZ2VyKCkgT1ZFUlJJREUgeyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIE9W
RVJSSURFIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9CisgICAgCitwcml2YXRlOgor
ICAgIHZvaWQgY2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUpOworICAgIAorICAgIEpTQzo6V3JpdGVCYXJyaWVyPEpTQzo6SlNPYmpl
Y3Q+IG1fZGljdGlvbmFyeTsKKyAgICBKU0M6OldlYWs8SlNDOjpKU09iamVjdD4gbV93cmFwcGVy
OworICAgIFJlZlB0cjxET01XcmFwcGVyV29ybGQ+IG1faXNvbGF0ZWRXb3JsZDsKKyAgICBSZWZQ
dHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OworICAgIFVuZG9NYW5hZ2VyKiBt
X3VuZG9NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgi
CisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyB2b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayhjb25zdCBVbmRvTWFuYWdlclN0YWNr
JiBzdGFjaywgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5
JiBlbnRyeSA9ICooc3RhY2tbaV0uZ2V0KCkpOworICAgICAgICBpZiAoZW50cnkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeVswXS0+aXNET01UcmFu
c2FjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVudHJ5LnNp
emUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5n
ZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RlcC0+aXNET01UcmFuc2FjdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTVRyYW5zYWN0aW9uKj4oc3RlcCktPnZp
c2l0RGljdGlvbmFyeSh2aXNpdG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgSlNVbmRvTWFuYWdlciogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU1VuZG9NYW5hZ2VyKj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklU
Uyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICBDT01QSUxFX0FTU0VSVChTdHJ1Y3R1cmVGbGFn
cyAmIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW4sIE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW5XaXRob3V0
U2V0dGluZ0ZsYWcpOworICAgIEFTU0VSVCh0aGlzT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5vdmVycmlkZXNWaXNpdENoaWxkcmVuKCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4o
dGhpc09iamVjdCwgdmlzaXRvcik7CisgICAgCisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2Vy
ID0gdGhpc09iamVjdC0+aW1wbCgpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayh1bmRv
TWFuYWdlci0+dW5kb1N0YWNrKCksIHZpc2l0b3IpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5T
dGFjayh1bmRvTWFuYWdlci0+cmVkb1N0YWNrKCksIHZpc2l0b3IpOworfQorCisKK0pTVmFsdWUg
SlNVbmRvTWFuYWdlcjo6dHJhbnNhY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmlu
aGVyaXRzKCZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYyk7CisgICAgSlNVbmRvTWFuYWdlciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1Vu
ZG9NYW5hZ2VyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9J
TkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNVbmRvTWFuYWdlcjo6c19pbmZvKTsKKyAgICBVbmRvTWFu
YWdlciogaW1wbCA9IHN0YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgp
KTsKKyAgICAKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKKyAgICAgICAgcmV0
dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykp
OworICAgIAorICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVS
KGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIWRpY3Rpb25hcnku
aXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgIAor
ICAgIGJvb2wgbWVyZ2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElz
VW5kZWZpbmVkKS50b0Jvb2xlYW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlm
ICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgCisg
ICAgUmVmUHRyPEpTRE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gSlNET01UcmFuc2FjdGlv
bjo6Y3JlYXRlKGRpY3Rpb25hcnkuZ2V0T2JqZWN0KCksIHRoaXNWYWx1ZS5nZXRPYmplY3QoKSwg
Y3VycmVudFdvcmxkKGV4ZWMpLCBzY3JpcHRDb250ZXh0KTsKKyAgICAKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBpbXBsLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsK
KyAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01UcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgor
CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVW5kb01hbmFn
ZXIuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOERPTVdpbmRvdy5oIgor
I2luY2x1ZGUgIlY4U3RvcmFnZS5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgd2Vha0RpY3Rpb25hcnlDYWxsYmFjayh2ODo6
UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBwYXJhbWV0ZXIpCit7CisgICAgVjhET01UcmFu
c2FjdGlvbiogZGljdGlvbmFyeSA9IHN0YXRpY19jYXN0PFY4RE9NVHJhbnNhY3Rpb24qPihwYXJh
bWV0ZXIpOworICAgIGRpY3Rpb25hcnktPmRpc3Bvc2VEaWN0aW9uYXJ5T2JqZWN0KCk7Cit9Cisg
ICAgCitWOERPTVRyYW5zYWN0aW9uOjpWOERPTVRyYW5zYWN0aW9uKHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fd29ybGRDb250ZXh0KHdv
cmxkQ29udGV4dCkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV91bmRvTWFuYWdl
cigwKQoreworICAgIG1fZGljdGlvbmFyeSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpO
ZXcoZGljdGlvbmFyeSk7CisgICAgbV9kaWN0aW9uYXJ5Lk1ha2VXZWFrKHRoaXMsICZ3ZWFrRGlj
dGlvbmFyeUNhbGxiYWNrKTsKK30KKyAgICAKK1Y4RE9NVHJhbnNhY3Rpb246On5WOERPTVRyYW5z
YWN0aW9uKCkKK3sKKyAgICBkaXNwb3NlRGljdGlvbmFyeU9iamVjdCgpOworfQorCit2b2lkIFY4
RE9NVHJhbnNhY3Rpb246OmRpc3Bvc2VEaWN0aW9uYXJ5T2JqZWN0KCkKK3sKKyAgICBpZiAoIW1f
ZGljdGlvbmFyeS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgbV9kaWN0aW9uYXJ5LkRpc3Bvc2UoKTsK
KyAgICAgICAgbV9kaWN0aW9uYXJ5LkNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIFY4RE9NVHJh
bnNhY3Rpb246OmV4ZWN1dGUoKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCks
ICJleGVjdXRlIik7Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7Cisg
ICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwgInVuZG8iKTsKKyAgICBpZiAobV91bmRv
TWFuYWdlcikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsK
K30KKwordm9pZCBWOERPTVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVy
dHkobV9jb250ZXh0LmdldCgpLCAicmVkbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAg
ICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOworfQorCisKK3ZvaWQg
VjhET01UcmFuc2FjdGlvbjo6Y2FsbFByb3BlcnR5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK3sKKyAgICBpZiAoY29udGV4dC0+aXNK
U0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4g
djhDb250ZXh0ID0gdG9WOENvbnRleHQoY29udGV4dCwgbV93b3JsZENvbnRleHQpOworICAgIGlm
ICh2OENvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdjg6OkNv
bnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGRpY3Rpb25hcnkgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46Ok5ldyhtX2RpY3Rpb25h
cnkpOworICAgIGlmIChkaWN0aW9uYXJ5LklzRW1wdHkoKSB8fCAhZGljdGlvbmFyeS0+SXNPYmpl
Y3QoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHBy
b3BlcnR5ID0gZGljdGlvbmFyeS0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChwcm9wZXJ0eU5h
bWUpKTsKKyAgICBpZiAocHJvcGVydHkuSXNFbXB0eSgpIHx8ICFwcm9wZXJ0eS0+SXNGdW5jdGlv
bigpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4g
aGFuZGxlckZ1bmN0aW9uID0gIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KHByb3BlcnR5
KTsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gcmVjZWl2ZXIgPSB2ODo6TG9jYWw8
djg6Ok9iamVjdD46OkNhc3QoaGFuZGxlckZ1bmN0aW9uKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcGFyYW1ldGVyc1swXSA9IHsgfTsKKyAgICAKKyAgICBpZiAoVjhQcm94eSogcHJveHkg
PSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KSkgeworICAgICAgICBGcmFtZSogZnJhbWUgPSBz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgICAgICBpZiAoZnJh
bWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCisg
ICAgICAgICAgICBwcm94eS0+Y2FsbEZ1bmN0aW9uKGhhbmRsZXJGdW5jdGlvbiwgcmVjZWl2ZXIs
IDEsIHBhcmFtZXRlcnMpOworICAgIH0KK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFY4RE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBW
OERPTVRyYW5zYWN0aW9uX2gKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRl
ICJET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIldvcmxkQ29udGV4dEhhbmRsZS5oIgorI2lu
Y2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKK2NsYXNzIFVuZG9NYW5hZ2VyOworCitjbGFzcyBWOERPTVRyYW5zYWN0aW9u
IDogcHVibGljIERPTVRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBWOERPTVRyYW5zYWN0aW9u
KHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5k
bGUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VjhE
T01UcmFuc2FjdGlvbj4gY3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBkaWN0aW9uYXJ5LCBj
b25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdvcmxkQ29udGV4dCwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhET01U
cmFuc2FjdGlvbihkaWN0aW9uYXJ5LCB3b3JsZENvbnRleHQsIGNvbnRleHQpKTsKKyAgICB9Cisg
ICAgCisgICAgflY4RE9NVHJhbnNhY3Rpb24oKTsKKyAgICAKKyAgICAvLyBQcm92aWRlcyBhY2Nl
c3MgdG8gdGhlIHVuZGVybHlpbmcgaGFuZGxlIGZvciBHQy4gUmV0dXJuZWQKKyAgICAvLyB2YWx1
ZSBpcyBhIHdlYWsgaGFuZGxlIGFuZCBzbyBub3QgZ3VhcmFudGVlZCB0byBzdGF5IGFsaXZlLgor
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGV4aXN0aW5nRGljdGlvbmFyeU9iamVjdFBl
cnNpc3RlbnRIYW5kbGUoKSB7IHJldHVybiBtX2RpY3Rpb25hcnk7IH0KKyAgICBib29sIGhhc0V4
aXN0aW5nRGljdGlvbmFyeU9iamVjdCgpIHsgcmV0dXJuICFtX2RpY3Rpb25hcnkuSXNFbXB0eSgp
OyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkg
T1ZFUlJJREU7CisgICAgCisgICAgdmlydHVhbCBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSBP
VkVSUklERSB7IHJldHVybiBtX3VuZG9NYW5hZ2VyOyB9CisgICAgdmlydHVhbCB2b2lkIHNldFVu
ZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcikgT1ZFUlJJREUgeyBtX3VuZG9NYW5h
Z2VyID0gdW5kb01hbmFnZXI7IH0KKyAgICAKKyAgICB2b2lkIGRpc3Bvc2VEaWN0aW9uYXJ5T2Jq
ZWN0KCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjYWxsUHJvcGVydHkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSk7CisKKyAgICBXb3JsZENvbnRleHRI
YW5kbGUgbV93b3JsZENvbnRleHQ7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9k
aWN0aW9uYXJ5OworICAgIFJlZlB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBtX2NvbnRleHQ7
CisgICAgVW5kb01hbmFnZXIqIG1fdW5kb01hbmFnZXI7Cit9OworCit9CisKKyNlbmRpZgorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5h
Z2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVO
RE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlY4VW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5j
bHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2lu
Y2x1ZGUgIlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgorI2luY2x1
ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2
b2lkIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayhWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZh
bHVlPiA+JiBkaWN0aW9uYXJpZXMsIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHN0YWNrKQorewor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
Y29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAqKHN0YWNrW2ldLmdldCgpKTsKKyAgICAg
ICAgaWYgKGVudHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBp
ZiAoZW50cnlbMF0tPmlzRE9NVHJhbnNhY3Rpb24oKSkgeworICAgICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBlbnRyeS5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIFVuZG9T
dGVwKiBzdGVwID0gZW50cnlbal0uZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0ZXAt
PmlzRE9NVHJhbnNhY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgVjhET01UcmFuc2FjdGlvbiog
dHJhbnNhY3Rpb24gPSBzdGF0aWNfY2FzdDxWOERPTVRyYW5zYWN0aW9uKj4oc3RlcCk7CisgICAg
ICAgICAgICAgICAgaWYgKCF0cmFuc2FjdGlvbi0+aGFzRXhpc3RpbmdEaWN0aW9uYXJ5T2JqZWN0
KCkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGRpY3Rp
b25hcmllcy5hcHBlbmQodHJhbnNhY3Rpb24tPmV4aXN0aW5nRGljdGlvbmFyeU9iamVjdFBlcnNp
c3RlbnRIYW5kbGUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgVjhVbmRvTWFuYWdlcjo6dmlzaXRET01XcmFwcGVyKERPTURhdGFTdG9yZSogc3RvcmUsIHZv
aWQqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKK3sKKyAgICBV
bmRvTWFuYWdlciogdW5kb01hbmFnZXIgPSBzdGF0aWNfY2FzdDxVbmRvTWFuYWdlcio+KG9iamVj
dCk7CisgICAgVmVjdG9yPHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiBkaWN0aW9uYXJpZXM7
CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKGRpY3Rpb25hcmllcywgdW5kb01hbmFnZXIt
PnVuZG9TdGFjaygpKTsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soZGljdGlvbmFyaWVz
LCB1bmRvTWFuYWdlci0+cmVkb1N0YWNrKCkpOworICAgIGlmICghZGljdGlvbmFyaWVzLmlzRW1w
dHkoKSkKKyAgICAgICAgdjg6OlY4OjpBZGRJbXBsaWNpdFJlZmVyZW5jZXMod3JhcHBlciwgZGlj
dGlvbmFyaWVzLmRhdGEoKSwgZGljdGlvbmFyaWVzLnNpemUoKSk7Cit9CisKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFVuZG9NYW5hZ2VyOjp0cmFuc2FjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVW5kb01hbmFnZXIudHJhbnNhY3Qi
KTsKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCisgICAgICAgIHJldHVybiBWOFByb3h5Ojp0
aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBVbmRv
TWFuYWdlciogaW1wID0gVjhVbmRvTWFuYWdlcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Cisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgeyAgICAgICAgCisgICAgICAgIEVYQ0VQVElP
Tl9CTE9DSyh2ODo6TG9jYWw8djg6OlZhbHVlPiwgZGljdGlvbmFyeSwgTUFZQkVfTUlTU0lOR19Q
QVJBTUVURVIoYXJncywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKSk7CisgICAgICAgIGlmICghZGlj
dGlvbmFyeS5Jc0VtcHR5KCkgJiYgIWRpY3Rpb25hcnktPklzT2JqZWN0KCkpCisgICAgICAgICAg
ICByZXR1cm4gVjhQcm94eTo6dGhyb3dUeXBlRXJyb3IoIk5vdCBhbiBvYmplY3QuIiwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgICAgICAKKyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKGJvb2wsIG1l
cmdlLCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQp
LT5Cb29sZWFuVmFsdWUoKSk7CisgICAgICAgIAorICAgICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgICAgICBpZiAo
IWNvbnRleHQpCisgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgICAgICAK
KyAgICAgICAgUmVmUHRyPFY4RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gVjhET01UcmFu
c2FjdGlvbjo6Y3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChkaWN0aW9uYXJ5KSwg
V29ybGRDb250ZXh0SGFuZGxlKFVzZUN1cnJlbnRXb3JsZCksIGNvbnRleHQpOworICAgICAgICAK
KyAgICAgICAgaW1wLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsKKyAgICAgICAg
aWYgKFVOTElLRUxZKGVjKSkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIH0KK2ZhaWw6CisgICAgcmV0dXJuIFY4UHJv
eHk6OnNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoVU5ET19NQU5BR0VSKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkocmV2aXNp
b24gMTIyODk5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFu
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZF
UlJJREU7CiAgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9lZGl0QWN0aW9uOyB9CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBib29s
IGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorI2Vu
ZGlmCiAgICAgdm9pZCBhcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqKTsKICAgICBib29sIHdhc0Ny
ZWF0ZUxpbmtDb21tYW5kKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0QWN0aW9uID09IEVkaXRBY3Rp
b25DcmVhdGVMaW5rOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNh
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0
aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVRyYW5zYWN0aW9u
X2gKKyNkZWZpbmUgRE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
KworI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBVbmRvTWFuYWdlcjsKKworY2xhc3MgRE9NVHJh
bnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVibGljOgorICAgIHZpcnR1YWwgfkRPTVRy
YW5zYWN0aW9uKCkgeyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHko
KSA9IDA7CisgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gRWRpdEFjdGlvblVuc3BlY2lmaWVkOyB9CisgICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9u
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZpcnR1YWwgVW5k
b01hbmFnZXIqIHVuZG9NYW5hZ2VyKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRVbmRvTWFu
YWdlcihVbmRvTWFuYWdlciopID0gMDsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTIyODk5KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3
IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAj
aW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGlu
Zy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtODAyLDggKzgwMywxMiBAQCB2b2lkIEVkaXRv
cjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDCiAgICAgICAgIC8vIE9ubHkgcmVnaXN0ZXIg
YSBuZXcgdW5kbyBjb21tYW5kIGlmIHRoZSBjb21tYW5kIHBhc3NlZCBpbiBpcwogICAgICAgICAv
LyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21tYW5kCiAgICAgICAgIG1fbGFzdEVkaXRDb21t
YW5kID0gY21kOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgICAgICBpZiAoY2xpZW50
KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29t
bWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZWxzZQorICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5k
LT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHJlc3BvbmRUb0No
YW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwpAQCAtODIwLDggKzgyNSwxMiBAQCB2b2lkIEVk
aXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRD
b250cm9sbGVyLT5yZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7CiAgICAgCiAg
ICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsK
KyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJS
ZWRvU3RlcChjbWQpOworI2VuZGlmICAKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3
U2VsZWN0aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBs
aWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5l
d1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246
OkNsZWFyVHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVu
dCgpLT5yZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJl
c3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsx
MjU1LDQwIEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wg
RWRpdG9yOjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1
cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQog
CiB2b2lkIEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9v
bCBFZGl0b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJl
dHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9
CiAKIHZvaWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2
b2lkIEVkaXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVW5kb01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VW5kb01hbmFnZXIuY3BwCShyZXZpc2lvbiAxMjI4OTkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAotI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJE
T01UcmFuc2FjdGlvbi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ0LDcg
QEAgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6OmNyZQogCiBVbmRvTWFuYWdl
cjo6VW5kb01hbmFnZXIoTm9kZSogaG9zdCkKICAgICA6IG1fdW5kb1Njb3BlSG9zdChob3N0KQor
ICAgICwgbV9pc0luUHJvZ3Jlc3MoZmFsc2UpCiB7CiB9CiAKQEAgLTUyLDIwICs1MywxMTIgQEAg
dm9pZCBVbmRvTWFuYWdlcjo6dW5kb1Njb3BlSG9zdERlc3Ryb3llZAogICAgIG1fdW5kb1Njb3Bl
SG9zdCA9IDA7CiB9CiAKK3ZvaWQgVW5kb01hbmFnZXI6OnRyYW5zYWN0KFBhc3NSZWZQdHI8RE9N
VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uLCBib29sIG1lcmdlLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBj
bGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9N
YW5hZ2VyKHRoaXMpOworICAgIAorICAgIG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICB0cmFu
c2FjdGlvbi0+ZXhlY3V0ZSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisg
ICAgaWYgKCFtZXJnZSB8fCBtX3VuZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIG1fdW5kb1N0
YWNrLmFwcGVuZChhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSkpOworICAgIG1fdW5kb1N0
YWNrLmxhc3QoKS0+YXBwZW5kKHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6
dW5kbyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1f
dW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFn
ZXJFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIGNvbnN0IFVu
ZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3VuZG9TdGFjay5sYXN0KCkuZ2V0KCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5
W2kgLSAxXS0+dW5hcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisg
ICAgbV9yZWRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5LnJlbGVhc2UoKSk7CisgICAg
bV91bmRvU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKEV4
Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2Nv
cGVIb3N0KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2luUHJvZ3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5
KTsKKyAgICAKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgY29uc3QgVW5kb01hbmFn
ZXJFbnRyeSYgZW50cnkgPSAqKG1fcmVkb1N0YWNrLmxhc3QoKS5nZXQoKSk7CisgICAgZm9yIChz
aXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFd
LT5yZWFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBtX3Vu
ZG9TdGFjay5hcHBlbmQobV9pblByb2dyZXNzRW50cnkucmVsZWFzZSgpKTsKKyAgICBtX3JlZG9T
dGFjay5yZW1vdmVMYXN0KCk7Cit9CisKIHZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQogeworICAg
IHVuZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OnJlZG8o
KQogeworICAgIHJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQgVW5kb01hbmFn
ZXI6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sKKyAgICBp
ZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiBl
bnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50cnktPmFw
cGVuZChzdGVwKTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVhc2UoKSk7
CisgICAgICAgIAorICAgICAgICBjbGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAg
fSBlbHNlCisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBlbmQoc3RlcCk7Cit9CisKK3Zv
aWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3Rl
cCkKK3sKKyAgICBpZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFu
YWdlckVudHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAg
ICAgZW50cnktPmFwcGVuZChzdGVwKTsKKyAgICAgICAgbV9yZWRvU3RhY2suYXBwZW5kKGVudHJ5
LnJlbGVhc2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBl
bmQoc3RlcCk7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kbygpCit2b2lkIFVuZG9N
YW5hZ2VyOjpjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7CisgICAgaWYgKG1faXNJblBy
b2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VT
U19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV91bmRvU3RhY2suY2xlYXIoKTsK
IH0KIAotdm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKCkKK3ZvaWQgVW5kb01hbmFnZXI6OmNs
ZWFyUmVkbyhFeGNlcHRpb25Db2RlJiBlYykKIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwg
IW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjI4OTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDMyICszMyw2MyBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUg
IkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIK
KyNpbmNsdWRlICJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTVRyYW5zYWN0
aW9uOwogY2xhc3MgTm9kZTsKIAordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IFVu
ZG9NYW5hZ2VyRW50cnk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4g
PiBVbmRvTWFuYWdlclN0YWNrOworCiBjbGFzcyBVbmRvTWFuYWdlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFVuZG9NYW5hZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VW5kb01h
bmFnZXI+IGNyZWF0ZShOb2RlKiBob3N0KTsKICAgICB2b2lkIHVuZG9TY29wZUhvc3REZXN0cm95
ZWQoKTsKKyAgICAKKyAgICB2b2lkIHRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+
LCBib29sLCBFeGNlcHRpb25Db2RlJik7CiAKKyAgICB2b2lkIHVuZG8oRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgcmVkbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB1bmRvKCk7CiAgICAg
dm9pZCByZWRvKCk7CisgICAgCisgICAgaW5saW5lIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgpICsgbV9yZWRvU3RhY2suc2l6ZSgpOyB9IAor
ICAgIGlubGluZSB1bnNpZ25lZCBsb25nIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRv
U3RhY2suc2l6ZSgpOyB9CiAKLSAgICB2b2lkIGNsZWFyVW5kbygpOwotICAgIHZvaWQgY2xlYXJS
ZWRvKCk7CisgICAgdm9pZCBjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgY2xl
YXJSZWRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAKKyAgICBpbmxpbmUgYm9vbCBjYW5VbmRvKCkg
Y29uc3QgeyByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsgfQorICAgIGlubGluZSBib29s
IGNhblJlZG8oKSBjb25zdCB7IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAg
CisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2
b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAorICAgIGlu
bGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiB1bmRvU3RhY2soKSBjb25zdCB7IHJldHVybiBt
X3VuZG9TdGFjazsgfQorICAgIGlubGluZSBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiByZWRvU3Rh
Y2soKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFjazsgfQogCiBwcml2YXRlOgogICAgIFVuZG9N
YW5hZ2VyKE5vZGUqIGhvc3QpOwogICAgIE5vZGUqIG1fdW5kb1Njb3BlSG9zdDsKLX07CiAgICAg
CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3VuZG9TdGFjazsKKyAgICBVbmRvTWFuYWdlclN0YWNr
IG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7CisgICAgT3duUHRyPFVuZG9N
YW5hZ2VyRW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5OworfTsKKwogfQotICAgIAorCiAjZW5kaWYK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2
aXNpb24gMTIyODk5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDEzICszMSwyNCBAQAogbW9kdWxlIGNvcmUgewogCiAgICAg
aW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VSCisgICAgICAgIENv
bmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisg
ICAgICAgIFY4Q3VzdG9tSXNSZWFjaGFibGUKICAgICBdIFVuZG9NYW5hZ2VyIHsKLSAgICAgICAg
dm9pZCB1bmRvKCk7Ci0gICAgICAgIHZvaWQgcmVkbygpOworICAgICAgICBbQ3VzdG9tXSB2b2lk
IHRyYW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNhY3Rpb24sIGluIGJvb2xlYW4gbWVyZ2UpOwog
Ci0gICAgICAgIHZvaWQgY2xlYXJVbmRvKCk7Ci0gICAgICAgIHZvaWQgY2xlYXJSZWRvKCk7Cisg
ICAgICAgIHZvaWQgdW5kbygpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgdm9pZCByZWRvKCkKKyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAg
ICAgICAKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBwb3NpdGlvbjsKKworICAg
ICAgICB2b2lkIGNsZWFyVW5kbygpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICAgICAgdm9pZCBjbGVhclJlZG8oKQorICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAgICAgfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNp
b24gMTIyODk5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBs
eSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVk
aXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5B
R0VSKQorICAgIHZpcnR1YWwgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2Vu
ZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNrQmVycnkuY3BwCShy
ZXZpc2lvbiAxMjI4OTkpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MCw2ICsy
NjAsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZFNldFNlbGVjCiAKIHZvaWQg
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9T
dGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIC8vIFJlbW92ZSB0
aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hlZCB0aGUgbWF4aW11bSBjYXBhY2l0eSBmb3Ig
dGhlIHN0YWNrLgogICAgIGlmIChtX3VuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFj
a0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwpAQCAtMjY4LDI3ICsy
NjksNDQgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZAogICAgICAg
ICBtX3JlZG9TdGFjay5jbGVhcigpOwogCiAgICAgbV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0
ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV9yZWRvU3RhY2suYXBwZW5k
KHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xlYXIoKTsKICAgICBt
X3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsK
KyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblJlZG8oKSBjb25z
dAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2su
aXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBF
ZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFs
dWUpIGNvbnN0CkBAIC0zMDMsNiArMzIxLDcgQEAgYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAg
RWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAg
ICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0zMTEsMTAgKzMzMCwx
MiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogICAgICAgICAvLyBVbmFw
cGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8g
c3RhY2suCiAgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIEVkaXRDb21tYW5kU3RhY2s6
Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5k
b1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3LDYgKzM0OCw3IEBAIHZvaWQgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6cmVkbygpCiAgICAgICAgIGNvbW1hbmQtPnJlYXBwbHkoKTsKICAgICAg
ICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTIyODk5KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkU2V0U2VsZWN0
aW9uVHkKIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQ
dHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYg
KG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1f
dW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRyb3Agb2xkZXN0IGl0ZW0gb2ZmIHRoZSBmYXIg
ZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAgICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKICAg
ICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVw
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lzdGVyUmVkb1N0ZXAo
UGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShz
dGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OmNsZWFyVW5kb1JlZG9P
cGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFj
ay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBF
ZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZyYW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0VmFs
dWUpIGNvbnN0CkBAIC0zMjksMTYgKzMzOSwyNSBAQCBib29sIEVkaXRvckNsaWVudEltcGw6OmNh
blBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuVW5kbygpIGNvbnN0
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5p
c0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVk
aXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1
cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5kbygpKSB7CiAgICAgICAg
IFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0YWNrLmVuZCgpOwog
ICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzQ2LDEwICszNjUsMTIg
QEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKICAgICAgICAgc3RlcC0+dW5hcHBseSgp
OwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21t
YW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYg
KGNhblJlZG8oKSkgewogICAgICAgICBVbmRvTWFuYWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0g
LS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNr
KTsKQEAgLTM2MSw2ICszODIsNyBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZG8oKQogICAg
ICAgICAvLyByZWFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9u
dG8gdGhlIHVuZG8gc3RhY2suCiAgICAgICAgIG1faW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2Vu
ZGlmCiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0
b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyMjg5OSkKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3OCwyMCArMTc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRTZWxl
Y3Rpb25UeXAKIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQ
YXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5k
b1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBh
c3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgcmVkb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVw
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJh
dGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVuZG9TdGFjay5jbGVh
cigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xp
ZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0y
MDYsMjQgKzIxNiwzNSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBi
CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxF
KFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2Fu
UmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFy
ZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0K
IAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9T
dGVwPiBzdGVwID0gdW5kb1N0YWNrLnRha2VGaXJzdCgpOwogICAgICAgICBzdGVwLT51bmFwcGx5
KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAg
IFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJlZG9TdGFjay50YWtlRmlyc3QoKTsK
IApAQCAtMjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKICAgICAg
ICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQor
I2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUq
IG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb24gMTIyODk5KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDIyICsyODgsMzIg
QEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRgogCiB2b2lkIEVkaXRv
ckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0
ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKHVuZG9TdGFj
ay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICB1bmRvU3RhY2sucmVt
b3ZlRmlyc3QoKTsKICAgICBpZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVh
cigpOwogICAgIHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3Rl
cChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVh
clVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
dW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAog
Ym9vbCBFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1
bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50Ojpj
YW5QYXN0ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25z
dAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlz
RW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRp
dG9yQ2xpZW50OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8V2Vi
Q29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1bmRv
U3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxs
IGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgog
ICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2Fu
UmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVk
b1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5k
KCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICAg
ICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQor
I2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5v
ZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCShy
ZXZpc2lvbiAxMjI4OTkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0VkaXRv
ckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDEyICsyMzksMTYgQEAgYm9vbCBF
ZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogCiB2b2lkIEVkaXRvckNsaWVudFF0
OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3Rl
cCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNL
CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKG1faW5VbmRvUmVkbyB8fCAoZnJhbWUgJiYg
IWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEhIERvbid0IHJlY3Jl
YXRlIHVuZG9zICovKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCkt
PnB1c2gobmV3IFVuZG9TdGVwUXQoc3RlcCkpOwogI2VuZGlmIC8vIFFUX05PX1VORE9TVEFDSwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JD
bGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0
ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJl
ZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25z
KCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNL
CiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAjZW5kaWYKKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KFdlYkNvcmU6OkZyYW1lKiwg
Ym9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yNzAsMzggKzI3Niw1MCBAQCBib29sIEVkaXRv
ckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpGCiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNh
blVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmZGVmIFFUX05P
X1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgcmV0dXJuIG1fcGFnZS0+
dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRpZgorI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuUmVkbygpIGNvbnN0CiB7Cisj
aWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0
dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuUmVk
bygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lk
IEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNp
Zm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3Bh
Z2UtPnVuZG9TdGFjaygpLT51bmRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5k
aWYKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWRvKCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9S
ZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5yZWRvKCk7CiAgICAgbV9pblVu
ZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0
OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0
QWN0aW9uIGFjdGlvbikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjg5OSkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA3LTE3ICBT
dWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgdW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVu
ZG8sIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdl
ci10cmFuc2FjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3Vu
ZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEy
LTA3LTE3ICBFbWlsIEEgRWtsdW5kICA8ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkIGNocm9taXVtIGxpb24vc25vd2xlb3BhcmQgcmViYXNlbGluZSBmb3IgcjEyMjg4My4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNh
Y3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgdGVzdHMgVW5kb01h
bmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworUEFTUyBkb2N1bWVudCBoYXMgcHJvcGVydHkg
dW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIAor
UEFTUyBBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRyYW5z
YWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBh
cHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbiB1bmRvIGNhbGws
IHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0
ZXIgYW5vdGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmlyc3QgdHJh
bnNhY3Rpb24uIAorUEFTUyBBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVz
IHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgcmVkbyBjYWxsLCB1
bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVy
IHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdlZCBpbnRvIG9uZSBlbnRyeSwgdW5k
b01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zLiAKK1BBU1MgQWZ0ZXIgYW4g
dW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBp
biB0aGUgY29ycmVjdCBvcmRlci4gCitQQVNTIEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdl
ciByZWFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4g
CisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJh
bnNhY3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTMwIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+VW5kb01hbmFnZXIudHJhbnNhY3QoKTwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitU
aGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKKzxkaXYgaWQ9ImVk
aXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRv
Y3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01h
bmFnZXIuIik7CisKK3ZhciB1bmRvTWFuYWdlciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHVuZG9NYW5hZ2VyLCAi
dHJhbnNhY3QiKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIik7CisK
K3ZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAg
ICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5u
ZXJIVE1MICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkg
eworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9
LCBmYWxzZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlICIpOworfSwg
IkFmdGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rp
b24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3Qoewor
ICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhU
TUwgKz0gIjJlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAg
InJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAi
OworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICIxZSAyZSAiKTsKK30sICJBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9N
YW5hZ2VyIGFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gIjFlIDJlIDJ1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFn
ZXIgdW5hcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICIxZSAyZSAydSAxdSAiKTsKK30sICJBZnRlciBhbm90aGVyIHVuZG8gY2FsbCwgdW5k
b01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5p
bm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1IDFyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1
bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0
LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgMXIgMnIgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciBy
ZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIp
OworCitlZGl0LmlubmVySFRNTCA9ICIiOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9N
YW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxZSAiOworICAgICAgICB9LAorICAgICAgICAidW5k
byI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjF1ICI7Cisg
ICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0
LmlubmVySFRNTCArPSAiMXIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICB1bmRv
TWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMmUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVu
ZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIydSAiOwor
ICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRp
dC5pbm5lckhUTUwgKz0gIjJyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICB1bmRv
TWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiM2UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVu
ZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzdSAiOwor
ICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRp
dC5pbm5lckhUTUwgKz0gIjNyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgIik7Cit9LCAiQWZ0ZXIgdGhyZWUg
dHJhbnNhY3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdl
ciBhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1M
ID09ICIxZSAyZSAzZSAzdSAydSAxdSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9N
YW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9y
ZGVyLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAg
ICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgMXIgMnIg
M3IgIik7Cit9LCAiQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUg
dGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOworCitlZGl0LnN0eWxl
LmRpc3BsYXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdl
cidzIHVuZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4KKworUEFTUyBkb2N1bWVu
dCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVy
dGllcyB1bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4gCitQQVNTIHVuZG9NYW5hZ2Vy
IGhhcyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAo
MCkuIAorUEFTUyBBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5h
Z2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIAorUEFTUyBBZnRlciBib2xkaW5n
IHRoZSB0ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBh
bmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5k
b01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQg
aXMgYSBwbGFpbiAndGVzdCcuIAorUEFTUyBBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxl
bmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4gCitQ
QVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9u
IGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgcmVk
b2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRo
ZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
dW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFn
ZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlciBoYXMgdW5kbygpIGFu
ZCByZWRvKCkgdGhhdCB3b3JrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVz
dHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisK
KzxkaXYgaWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3du
X3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJv
cGVydHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X2lk
bF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAgYXNzZXJ0X2lk
bF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAgYXNzZXJ0X293
bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAgIGFzc2VydF9v
d25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOworfSwgInVuZG9N
YW5hZ2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBvc2l0aW9uLiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5h
Z2VyLmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5w
b3NpdGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVl
cyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKyAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7CisgICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAgICAKKyAgICBhc3Nl
cnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7CisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAiQWZ0ZXIgaW5zZXJ0
aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBw
b3NpdGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciByYW5nZSA9IGRv
Y3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVkaXQp
OworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRpbmcgdGhlIHRleHQs
IHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVz
dWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gInRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAy
IGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsK
KyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygp
OworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAy
KTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAyKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiQWZ0ZXIgdW5kb2lu
ZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSBy
ZXN1bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50
LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRv
TWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFn
ZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gInRl
c3QiKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBw
b3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsKKyAgICAK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAg
IAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBh
c3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciBy
ZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQg
dGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153172</attachid>
            <date>2012-07-18 21:09:34 -0700</date>
            <delta_ts>2012-07-27 12:43:16 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-89722-20120718211131.patch</filename>
            <type>text/plain</type>
            <size>103731</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzA2NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzMiBAQAorMjAxMi0wNy0xOCAgU3Vrb2xz
YWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHVuZG9NYW5hZ2VyJ3MgdW5kbywgcmVkbywgbGVuZ3RoLCBwb3NpdGlvbiwgY2xlYXJVbmRvLCBh
bmQgY2xlYXJSZWRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzOiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1s
CisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0
Lmh0bWwKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6
CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6SlNET01UcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp2aXNpdERpY3Rpb25hcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY1N0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OmdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NVHJhbnNhY3Rpb246OmNhbGxQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVRyYW5zYWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rp
b246OmV4ZWN1dGVBdXRvbWF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlv
bjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpyZWRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OmlzQXV0b21hdGljKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChKU0RPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
VHJhbnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVbmRvTWFuYWdl
ckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
Ojp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNVbmRvTWFu
YWdlcjo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp0
cmFuc2FjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp3ZWFrRGljdGlvbmFy
eUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OlY4RE9NVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6flY4RE9NVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6ZGlzcG9zZURp
Y3Rpb25hcnlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6ZXhl
Y3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01UcmFuc2FjdGlvbjo6Y2FsbFByb3BlcnR5KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOERPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChWOERPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rp
b246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpleGlzdGlu
Z0RpY3Rpb25hcnlPYmplY3RQZXJzaXN0ZW50SGFuZGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
RE9NVHJhbnNhY3Rpb246Omhhc0V4aXN0aW5nRGljdGlvbmFyeU9iamVjdCk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dmlzaXRUcmFuc2FjdGlvbnNJblN0YWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VW5kb01hbmFnZXI6OnZpc2l0RE9NV3JhcHBlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFVuZG9NYW5hZ2VyOjp0cmFuc2FjdENhbGxiYWNrKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjppbnNlcnRCZWZvcmVDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9k
ZTo6cmVtb3ZlQmV0d2Vlbik6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1z
Lmg6CisgICAgICAgIChXZWJDb3JlOjphcHBlbmRDaGlsZFRvQ29udGFpbmVyKToKKyAgICAgICAg
KiBlZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9ET01D
aGFuZ2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Tm9kZUluc2VydGluZ0RPTUNoYW5nZTo6Tm9kZUluc2VydGluZ0RPTUNoYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpOb2RlSW5zZXJ0aW5nRE9NQ2hhbmdlOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZUluc2VydGluZ0RPTUNoYW5nZTo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlSW5zZXJ0aW5nRE9NQ2hhbmdlOjpyZWFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW1vdmluZ0RPTUNoYW5nZTo6Tm9kZVJlbW92aW5nRE9NQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGVSZW1vdmluZ0RPTUNoYW5nZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGVSZW1vdmluZ0RPTUNoYW5nZTo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
UmVtb3ZpbmdET01DaGFuZ2U6OnJlYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvRE9NQ2hhbmdl
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChET01DaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQ2hhbmdlOjp+RE9NQ2hhbmdlKToKKyAgICAgICAgKE5vZGVJbnNl
cnRpbmdET01DaGFuZ2UpOgorICAgICAgICAoTm9kZVJlbW92aW5nRE9NQ2hhbmdlKToKKyAgICAg
ICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpET01UcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNh
Y3Rpb246OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmFkZERP
TUNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NVHJhbnNhY3Rpb246On5ET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpET01UcmFuc2FjdGlvbjo6dW5kb01hbmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJh
bnNhY3Rpb246OnNldFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0
aW9uOjppc0NhcHR1cmluZ0RPTUNoYW5nZXMpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6cmVhcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblVu
ZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZG8pOgorICAg
ICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01h
bmFnZXI6OlVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp0cmFu
c2FjdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
Ojp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9TdGVwKToKKyAgICAgICAgKFdlYkNv
cmU6OlVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlVu
ZG9NYW5hZ2VyOjpjbGVhclVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNs
ZWFyUmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5oOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChVbmRvTWFuYWdlcik6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFu
YWdlcjo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJD
b3JlOjpVbmRvTWFuYWdlcjo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdl
cjo6dW5kb1N0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvU3RhY2sp
OgorICAgICAgICAqIGVkaXRpbmcvVW5kb01hbmFnZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcv
VW5kb1N0ZXAuaDoKKyAgICAgICAgKFVuZG9TdGVwKToKKwogMjAxMi0wNy0xOCAgSGlyb25vcmkg
Qm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIGNvbnRlbnRzIHJpZ2h0
IHdoZW4gYSB2ZXJ0aWNhbCBzY3JvbGxiYXIgaXMgc2hvd24gYXQgdGhlIGxlZnQgc2lkZSBvZiBh
biBSVEwgZWxlbWVudC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjMwNjcp
CisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjk3
LDYgKzY5Nyw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBlZGl0aW5nL0RlbGV0ZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCiAgICAgZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5jcHAKICAg
ICBlZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwCisgICAgZWRpdGluZy9ET01DaGFuZ2UuY3Bw
CisgICAgZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAKICAgICBlZGl0aW5nL0VkaXRDb21tYW5k
LmNwcAogICAgIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAogICAgIGVkaXRpbmcvRWRpdG9yLmNw
cApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMjMwNjcpCisr
KyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAzLDYgKzE0MDMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01UcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
IFwKQEAgLTE1MjQsNiArMTUyNiw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAg
XApAQCAtMjExOCw2ICsyMTIxLDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dl
YkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rp
Y3RhdGlvbkNvbW1hbmQuaCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01DaGFuZ2UuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTUNoYW5nZS5oIFwKKwlTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
T01UcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaCBc
CiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEy
MzA2NykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEw
OSw2ICsxMDksNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdM
aXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNw
cCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCisgICAgIGJp
bmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBc
CiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwIFwKQEAgLTE5MSw2ICsxOTIs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5j
cHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKICAgICAgYmlu
ZGluZ3MvanMvSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9q
cy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5p
bWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlz
dEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1
c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkocmV2aXNpb24gMTIzMDY3KQorKysgU291
cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yOTUsNiArMjk1LDEz
IEBAIElGIChFTkFCTEVfV0VCX0lOVEVOVFMpCiAgICAgKQogRU5ESUYgKCkKIAorSUYgKEVOQUJM
RV9VTkRPX01BTkFHRVIpCisgICAgTElTVCAoQVBQRU5EIFdlYkNvcmVfU09VUkNFUworICAgICAg
ICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9K
U1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFND
UklQVFNfQklORElOR1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3IucG0KICkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCShyZXZpc2lvbiAxMjMwNjcpCisrKyBT
b3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBA
QCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCiAgICAgYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmNwcAorICAgIGJpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uY3BwCiAgICAgYmlu
ZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKICAgICBiaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcApAQCAtMTUwLDYgKzE1
MSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFVpbnQxNkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQz
MkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4QXJyYXlDdXN0
b20uY3BwCisgICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20uY3BwCiAg
ICAgYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDEyMzA2NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNTU5LDMgKzI1NTksOSBAQCBfX1pON1dlYkNv
cmUyN0FsdGVybmF0aXZlVGV4dFVJQ29udHJvbGxlCiBfX1pON1dlYkNvcmUyNFRleHRBbHRlcm5h
dGl2ZVdpdGhSYW5nZUMxRVAxOE5TVGV4dEFsdGVybmF0aXZlczhfTlNSYW5nZQogX19aTjdXZWJD
b3JlMzJjb2xsZWN0RGljdGF0aW9uVGV4dEFsdGVybmF0aXZlc0VQMThOU0F0dHJpYnV0ZWRTdHJp
bmdSTjNXVEY2VmVjdG9ySU5TXzI0VGV4dEFsdGVybmF0aXZlV2l0aFJhbmdlRUxtMEVFRQogI2Vu
ZGlmCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorX19aTjdXZWJDb3JlOERvY3VtZW50MTF1
bmRvTWFuYWdlckV2CitfX1pON1dlYkNvcmUxMVVuZG9NYW5hZ2VyNHJlZG9FdgorX19aTjdXZWJD
b3JlMTFVbmRvTWFuYWdlcjR1bmRvRXYKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gMTIzMDY3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNv
cHkpCkBAIC0xOTcwLDYgKzE5NzAsOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRGly
ZWN0b3J5RW50cnlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RpcmVj
dG9yeUVudHJ5U3luY0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0
aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0VsZW1lbnRDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0VudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNFbnRyeVN5bmNDdXN0b20uY3BwJywKQEAgLTIwNzQsNiArMjA3Niw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApAQCAtMjIyNiw2ICsyMjI5LDgg
QEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9W
OERPTU1hcC5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNw
cCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOERPTVdyYXBwZXIuY3BwJywKQEAgLTIzNzMsNiArMjM3OCw3IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktpdEFuaW1h
dGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYktp
dFBvaW50Q29uc3RydWN0b3IuY3BwJywKQEAgLTI2MjUsNiArMjYzMSwxMCBAQAogICAgICAgICAg
ICAgJ2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2Vk
aXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0Rp
Y3RhdGlvbkNvbW1hbmQuY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTUNoYW5nZS5jcHAn
LAorICAgICAgICAgICAgJ2VkaXRpbmcvRE9NQ2hhbmdlLmgnLAorICAgICAgICAgICAgJ2VkaXRp
bmcvRE9NVHJhbnNhY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0
aW9uLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwJywKICAgICAgICAg
ICAgICdlZGl0aW5nL0VkaXRpbmdBbGxJbk9uZS5jcHAnLAogICAgICAgICAgICAgJ2VkaXRpbmcv
RWRpdGluZ1N0eWxlLmNwcCcsCkBAIC0yNjkyLDYgKzI3MDIsOCBAQAogICAgICAgICAgICAgJ2Vk
aXRpbmcvVGV4dEluc2VydGlvbkJhc2VDb21tYW5kLmgnLAogICAgICAgICAgICAgJ2VkaXRpbmcv
VGV4dEl0ZXJhdG9yLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9UeXBpbmdDb21tYW5kLmNw
cCcsCisgICAgICAgICAgICAnZWRpdGluZy9VbmRvTWFuYWdlci5jcHAnLAorICAgICAgICAgICAg
J2VkaXRpbmcvVW5kb01hbmFnZXIuaCcsCiAgICAgICAgICAgICAnZWRpdGluZy9VbmRvU3RlcC5o
JywKICAgICAgICAgICAgICdlZGl0aW5nL1VubGlua0NvbW1hbmQuY3BwJywKICAgICAgICAgICAg
ICdlZGl0aW5nL1VubGlua0NvbW1hbmQuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTIzMDY3KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIy
NTAzLDYgKzIyNTAzLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxh
dGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNVbmRvTWFuYWdlci5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNVbmRvTWFuYWdlci5oIgorCQkJCT4K
KwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTVmFsaWRpdHlTdGF0
ZS5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNTU2MjMsNiArNTU2Nzks
MTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZWRpdGluZ1xET01UcmFuc2FjdGlvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXEVkaXRBY3Rpb24uaCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkBAIC01Nzk0Nyw2ICs1ODAwNyw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdp
bjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAor
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGlu
Z1xVbmRvTWFuYWdlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlxlZGl0aW5nXFVuZG9TdGVwLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjU4
OTAsNiArNjYwMDYsNjIgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVRyYW5z
YWN0aW9uLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0
aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJ
CQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NVHJhbnNhY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9N
V2luZG93QmFzZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02OTY4
Miw2ICs2OTg1NCw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTVW5kb01hbmFn
ZXJDdXN0b20uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIgogCQkJ
CQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIzMDY3KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTQ2LDggKzE5NDYsMTUgQEAKIAkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjND
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0FGMTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1
bnRpbWVBZ2VudC5oICovOyB9OwogCQk3QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0
QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUZENEZGNDExMzI3
N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNj
cmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3QjA5OTJGNTE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi87IH07
CiAJCTdCMUVBMENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENDMTU3NkM1QjUw
MDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0YxNTc2QzVCNTAw
NjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2Vy
LmggKi87IH07CisJCTdCNTE3RTg0MTVBQ0YxRjUwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNTE3
RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I1
MTdFODUxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNTE3RTgzMTVBQ0YxRjUwMEYxNkI3
QSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi87IH07CisJCTdCNTE3RTg3MTVBQ0YyMTEwMEYxNkI3
QSAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I1MTdFODYxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0aW9uLmgg
Ki87IH07CisJCTdCNzhEOTMxMTVCNzY2NUEwMDMzQzJEMiAvKiBET01DaGFuZ2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNzhEOTMwMTVCNzY2NUEw
MDMzQzJEMiAvKiBET01DaGFuZ2UuaCAqLzsgfTsKKwkJN0I3OERBQTgxNUI3N0MwMzAwMzNDMkQy
IC8qIERPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCNzhEQUE3MTVCNzdDMDMwMDMzQzJEMiAvKiBET01UcmFuc2FjdGlvbi5j
cHAgKi87IH07CisJCTdCNzhERDk3MTVCN0FCMjcwMDMzQzJEMiAvKiBET01DaGFuZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I3OEREOTYxNUI3
QUIyNzAwMzNDMkQyIC8qIERPTUNoYW5nZS5jcHAgKi87IH07CiAJCTdCOTE4NEQyMTU3NThFNDIw
MDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIu
Y3BwICovOyB9OwogCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3
NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBE
MDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3Jp
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
OTA4Nyw4ICs5MDk0LDE1IEBACiAJCTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0
b3JSdW50aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVj
dG9yUnVudGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThB
MTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAg
LyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtpdC9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk3QjFFQTBDQzE1NzZDNUI1MDA2MDE3N0QgLyogSlNV
bmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Vu
ZG9NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxRUEwQ0QxNTc2
QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjUxN0U4MjE1QUNGMUYzMDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU0RPTVRyYW5zYWN0aW9uLmNwcDsgcGF0aCA9
IC4uLy4uLy4uL3dlYmtpdC9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0
aW9uLmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3QjUxN0U4MzE1QUNGMUY1
MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBKU0RPTVRyYW5zYWN0aW9uLmg7IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CisJCTdCNTE3RTg2MTVBQ0YyMTEwMEYxNkI3QSAvKiBET01UcmFuc2FjdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBET01UcmFuc2FjdGlvbi5oOyBw
YXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rp
b24uaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQk3Qjc4RDkzMDE1Qjc2NjVBMDAz
M0MyRDIgLyogRE9NQ2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERP
TUNoYW5nZS5oOyBwYXRoID0gLi4vLi4vLi4vd2Via2l0L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RE9NQ2hhbmdlLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJN0I3OERBQTcxNUI3
N0MwMzAwMzNDMkQyIC8qIERPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IERPTVRyYW5zYWN0aW9uLmNwcDsgcGF0aCA9IC4uLy4uLy4uL3dlYmtp
dC9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcDsgc291cmNlVHJlZSA9
IFNPVVJDRV9ST09UOyB9OworCQk3Qjc4REQ5NjE1QjdBQjI3MDAzM0MyRDIgLyogRE9NQ2hhbmdl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERPTUNoYW5nZS5jcHA7
IHBhdGggPSAuLi8uLi8uLi93ZWJraXQvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01DaGFuZ2Uu
Y3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTdCOTE4NENGMTU3NThFNDIwMDky
QUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBVbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4
NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjkxODREMTE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE3MDAxLDYgKzE3MDE1LDEwIEBACiAJCQkJQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8q
IERpY3RhdGlvbkFsdGVybmF0aXZlLmggKi8sCiAJCQkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4
IC8qIERpY3RhdGlvbkNvbW1hbmQuY3BwICovLAogCQkJCUNFQ0FERkM1MTUzNzc4RkYwMEUzNzA2
OCAvKiBEaWN0YXRpb25Db21tYW5kLmggKi8sCisJCQkJN0I3OEREOTYxNUI3QUIyNzAwMzNDMkQy
IC8qIERPTUNoYW5nZS5jcHAgKi8sCisJCQkJN0I3OEQ5MzAxNUI3NjY1QTAwMzNDMkQyIC8qIERP
TUNoYW5nZS5oICovLAorCQkJCTdCNzhEQUE3MTVCNzdDMDMwMDMzQzJEMiAvKiBET01UcmFuc2Fj
dGlvbi5jcHAgKi8sCisJCQkJN0I1MTdFODYxNUFDRjIxMTAwRjE2QjdBIC8qIERPTVRyYW5zYWN0
aW9uLmggKi8sCiAJCQkJOTMzMDlEOTMwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRBY3Rpb24uaCAq
LywKIAkJCQk5MzMwOUQ5NDA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuY3BwICovLAog
CQkJCTkzMzA5RDk1MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5oICovLApAQCAtMTk5
NzAsNiArMTk5ODgsOCBAQAogCQkJCTkzQjcwRDQ4MDlFQjBDN0MwMDlEODQ2OCAvKiBKU0RPTUJp
bmRpbmcuaCAqLywKIAkJCQlFMUMzNkNCQzBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9iYWxP
YmplY3QuY3BwICovLAogCQkJCUUxQzM2QzAyMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2Jh
bE9iamVjdC5oICovLAorCQkJCTdCNTE3RTgyMTVBQ0YxRjMwMEYxNkI3QSAvKiBKU0RPTVRyYW5z
YWN0aW9uLmNwcCAqLywKKwkJCQk3QjUxN0U4MzE1QUNGMUY1MDBGMTZCN0EgLyogSlNET01UcmFu
c2FjdGlvbi5oICovLAogCQkJCUJDNjkzMjcxMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRv
d0Jhc2UuY3BwICovLAogCQkJCUJDNjkzMjcyMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRv
d0Jhc2UuaCAqLywKIAkJCQlCQ0JGQjUzQTBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dT
aGVsbC5jcHAgKi8sCkBAIC0yMDIxMiw2ICsyMDIzMiw3IEBACiAJCQkJNDlFRUNGNzYxMDUwOEQ5
QzAwMDk5RkFCIC8qIEpTVWludDMyQXJyYXlDdXN0b20uY3BwICovLAogCQkJCTQ5RUVDRjc1MTA1
MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQ4QXJyYXlDdXN0b20uY3BwICovLAogCQkJCTkxQTM5MDVB
MTRDMEY2MTEwMEY2NzkwMSAvKiBKU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCAqLywKKwkJ
CQk3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi8s
CiAJCQkJRkQ4RTlCREUxM0Q0Q0QyQjAwNTBEQzcyIC8qIEpTV2F2ZVNoYXBlck5vZGVDdXN0b20u
Y3BwICovLAogCQkJCTQ5RUVEMTRDMTA1MTk3MUEwMDA5OUZBQiAvKiBKU1dlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAgKi8sCiAJCQkJMzE5RTY4ODYxMzI3QzkxMTAwNEFDOTFBIC8qIEpT
V2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTIyNDEzLDYgKzIyNDM0LDcgQEAKIAkJ
CQkyRTJEOTlFQTEwRTJCQzM4MDA0OTYzMzcgLyogRE9NQmxvYkludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTA4OUNENzBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE4RTBBQzVENTM1MDA1MzI3MEYgLyogRE9NQ0RBVEFT
ZWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCNzhEOTMxMTVCNzY2NUEwMDMz
QzJEMiAvKiBET01DaGFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1QUNBOTg2MEE5QjUyMDMw
MDY3MUU5MCAvKiBET01DaGFyYWN0ZXJEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NUU3MTE4
RjBBQzVENTM1MDA1MzI3MEYgLyogRE9NQ2hhcmFjdGVyRGF0YUludGVybmFsLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NTA4OUNEOTBBOThDNDI4MDBBMjc1QUEgLyogRE9NQ29tbWVudC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0yMjk3NCw2ICsyMjk5Niw3IEBACiAJCQkJMTg4NjA0QjQwRjJFNjU0QTAw
MEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNUZENjlFMDEyODQ1RDQz
MDBCMkJFQjMgLyogRE9NVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZDMkIwQzEy
MzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjUx
N0U4NzE1QUNGMjExMDBGMTZCN0EgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNjI3LDYgKzIzNjUwLDcgQEAKIAkJCQlD
NTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlz
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0I1MTdFODUxNUFDRjFGNTAwRjE2QjdBIC8qIEpTRE9N
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUy
N0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI1
OTMzLDYgKzI1OTU3LDcgQEAKIAkJCQlCQzk0NkVGMDEwN0ZEQkFDMDA4NTcxOTMgLyogRE9NQmVm
b3JlTG9hZEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUyRDk5RTgxMEUyQkMxQzAwNDk2
MzM3IC8qIERPTUJsb2IubW0gaW4gU291cmNlcyAqLywKIAkJCQk4NTA4OUNEODBBOThDNDI4MDBB
Mjc1QUEgLyogRE9NQ0RBVEFTZWN0aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJN0I3OEREOTcx
NUI3QUIyNzAwMzNDMkQyIC8qIERPTUNoYW5nZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NUFD
QTk4NzBBOUI1MjAzMDA2NzFFOTAgLyogRE9NQ2hhcmFjdGVyRGF0YS5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTg1MDg5Q0RBMEE5OEM0MjgwMEEyNzVBQSAvKiBET01Db21tZW50Lm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTc4RDA3QkUxNDVBMEY2QzAwOTY5MDhEIC8qIERPTUNvcmVFeGNlcHRpb24u
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNjIxNyw2ICsyNjI0Miw3IEBACiAJCQkJOTMzQTE0QUEw
QjdEMUQwOTAwQTUzRkZEIC8qIERPTVRleHRFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE4
ODYwNEIzMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3NkZDMkIwQjEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTdCNzhEQUE4MTVCNzdDMDMwMDMzQzJEMiAvKiBET01UcmFuc2FjdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9NVHJlZVdh
bGtlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdGNDkyMEFBRjc5REMwMDQwMTRERCAvKiBE
T01VSUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0RGREExMkRCQUZCODAwQTZCMjMz
IC8qIERPTVVSTC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2ODE0LDYgKzI2ODQwLDcgQEAKIAkJ
CQlCQzY0NjQ5QzExRDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5M
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RTBCQzU2MTM2MTQ4QTgwMDJBRDEyRSAvKiBK
U0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjUxN0U4NDE1QUNG
MUY1MDBGMTZCN0EgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RTM3RTAwNTEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTQwM0JBMEMwOUVCMThDNzAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDNjkzMjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0yNzI4Miw2ICsyNzMwOSw3IEBACiAJCQkJOTEwODlEMzMxNEMz
MzYwNTAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTFBMzkwNUIxNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5k
b01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0IwOTkyRjUxNUFDRjFBRDAwRUQ2RDIw
IC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVDNzcwOTQx
MDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDhFOUJERjEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9k
ZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMTIzMDY3KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQAogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
RE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmNwcCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmNwcCIKQEAgLTE1NSw2ICsxNTYs
NyBAQAogI2luY2x1ZGUgIkpTVWludDMyQXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWlu
dDhBcnJheUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5j
cHAiCisjaW5jbHVkZSAiSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJL
aXRBbmltYXRpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5z
YWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV3JhcHBl
cldvcmxkLmgiCisjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSlNNYWluVGhy
ZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKKworI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworSlNET01UcmFuc2FjdGlvbjo6SlNET01UcmFuc2FjdGlvbihKU09iamVjdCog
ZGljdGlvbmFyeSwgSlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRX
b3JsZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fd3JhcHBlcih3
cmFwcGVyKQorICAgICwgbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCisgICAgLCBtX2Nv
bnRleHQoY29udGV4dCkKK3sKKyAgICBpZiAod3JhcHBlcikKKyAgICAgICAgbV9kaWN0aW9uYXJ5
LnNldE1heUJlTnVsbCgqbV9pc29sYXRlZFdvcmxkLT5nbG9iYWxEYXRhKCksIHdyYXBwZXIsIGRp
Y3Rpb25hcnkpOworICAgIGVsc2UKKyAgICAgICAgQVNTRVJUKCFkaWN0aW9uYXJ5KTsKKyAgICAK
KyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjU3RhdGUoKTsKKyAgICBBU1NFUlQoZXhlYyk7Cisg
ICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgbV9pc0F1dG9tYXRpYyA9IGdldFByb3BlcnR5KGV4
ZWMsICJleGVjdXRlQXV0b21hdGljIiwgdmFsdWUpICYmIHZhbHVlLmlzRnVuY3Rpb24oKTsKK30K
Kwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp2aXNpdERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRv
ciYgdmlzaXRvcikKK3sKKyAgICBpZiAobV9kaWN0aW9uYXJ5KQorICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9kaWN0aW9uYXJ5KTsKK30KKyAgICAKK0V4ZWNTdGF0ZSogSlNET01UcmFuc2FjdGlv
bjo6ZXhlY1N0YXRlKCkKK3sKKyAgICBBU1NFUlQobV9jb250ZXh0LmdldCgpKTsKKyAgICBpZiAo
IW1fY29udGV4dC5nZXQoKSB8fCBtX2NvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QobV9jb250ZXh0LmdldCgpLCBtX2lzb2xhdGVkV29y
bGQuZ2V0KCkpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Cit9CisgICAgCitib29s
IEpTRE9NVHJhbnNhY3Rpb246OmdldFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lLCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit7CisgICAgSlNEaWN0aW9uYXJ5
IGpzRGljdGlvbmFyeShleGVjLCBtX2RpY3Rpb25hcnkuZ2V0KCkpOworICAgIGlmICghanNEaWN0
aW9uYXJ5LmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVy
biBqc0RpY3Rpb25hcnkuZ2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpOworfQorCit2b2lkIEpTRE9N
VHJhbnNhY3Rpb246OmNhbGxQcm9wZXJ0eShjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY1N0YXRlKCk7CisgICAgaWYgKCFleGVjKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgU2NyaXB0VmFsdWUgdmFsdWU7CisgICAgaWYgKCFnZXRQcm9w
ZXJ0eShleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSB8fCAhdmFsdWUuaXNGdW5jdGlvbigpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IHZhbHVlLmpzVmFs
dWUoKTsKKyAgICAKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlw
ZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgCisgICAgaWYgKGNhbGxU
eXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OworICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGZ1bmN0aW9uOworICAgICAgICBpZiAobV9j
b250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6
OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdz
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CisgICAgfQorfQorCit2b2lkIEpT
RE9NVHJhbnNhY3Rpb246OmV4ZWN1dGUoKQoreworICAgIGNhbGxQcm9wZXJ0eSgiZXhlY3V0ZSIp
OworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmV4ZWN1dGVBdXRvbWF0aWMoKQoreworICAg
IGNhbGxQcm9wZXJ0eSgiZXhlY3V0ZUF1dG9tYXRpYyIpOworfQorCit2b2lkIEpTRE9NVHJhbnNh
Y3Rpb246OnVuZG8oKQoreworICAgIGNhbGxQcm9wZXJ0eSgidW5kbyIpOworfQorCit2b2lkIEpT
RE9NVHJhbnNhY3Rpb246OnJlZG8oKQoreworICAgIGNhbGxQcm9wZXJ0eSgicmVkbyIpOworfQor
Citib29sIEpTRE9NVHJhbnNhY3Rpb246OmlzQXV0b21hdGljKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9pc0F1dG9tYXRpYzsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIEpTRE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBKU0RPTVRy
YW5zYWN0aW9uX2gKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJET01U
cmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RE9NV3JhcHBlcldvcmxkOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFNj
cmlwdFZhbHVlOworCitjbGFzcyBKU0RPTVRyYW5zYWN0aW9uIDogcHVibGljIERPTVRyYW5zYWN0
aW9uIHsKK3B1YmxpYzoKKyAgICBKU0RPTVRyYW5zYWN0aW9uKEpTQzo6SlNPYmplY3QqIGRpY3Rp
b25hcnksIEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRX
b3JsZCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIAorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEpTRE9NVHJhbnNhY3Rpb24+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBkaWN0aW9uYXJ5LCBK
U0M6OkpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgeworICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEpTRE9NVHJhbnNhY3Rpb24oZGljdGlvbmFyeSwgd3JhcHBlciwgaXNvbGF0ZWRX
b3JsZCwgY29udGV4dCkpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHZpc2l0RGljdGlvbmFyeShK
U0M6OlNsb3RWaXNpdG9yJik7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUF1dG9tYXRpYygpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCB1bmRvKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZG8oKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRvbWF0aWMoKSBjb25zdCBPVkVSUklERTsKKyAgICAK
K3ByaXZhdGU6CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSgpOworICAgIGJvb2wgZ2V0
UHJvcGVydHkoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIFNjcmlw
dFZhbHVlJik7CisgICAgdm9pZCBjYWxsUHJvcGVydHkoY29uc3QgY2hhciogcHJvcGVydHlOYW1l
KTsKKyAgICAKKyAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiBtX2RpY3Rpb25h
cnk7CisgICAgSlNDOjpXZWFrPEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKyAgICBSZWZQdHI8
RE9NV3JhcHBlcldvcmxkPiBtX2lzb2xhdGVkV29ybGQ7CisgICAgUmVmUHRyPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBib29sIG1faXNBdXRvbWF0aWM7Cit9OworCit9
CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VW5kb01hbmFnZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFO
QUdFUikKKworI2luY2x1ZGUgIkpTVW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkpTRE9NVHJh
bnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFj
ZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgdmlzaXRUcmFuc2Fj
dGlvbnNJblN0YWNrKGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHN0YWNrLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihzdGFja1tpXS5n
ZXQoKSk7CisgICAgICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkpIHsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAg
ICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAgICAgICAgICAgICAg
IEFTU0VSVChzdGVwLT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PEpTRE9NVHJhbnNhY3Rpb24qPihzdGVwKS0+dmlzaXREaWN0aW9uYXJ5KHZpc2l0b3Ip
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEpTVW5kb01hbmFn
ZXI6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKK3sK
KyAgICBKU1VuZG9NYW5hZ2VyKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVW5kb01hbmFnZXIqPihj
ZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsICZzX2luZm8p
OworICAgIENPTVBJTEVfQVNTRVJUKFN0cnVjdHVyZUZsYWdzICYgT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbiwgT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbldpdGhvdXRTZXR0aW5nRmxhZyk7CisgICAgQVNT
RVJUKHRoaXNPYmplY3QtPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW4oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsK
KyAgICAKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCk7
CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKHVuZG9NYW5hZ2VyLT51bmRvU3RhY2soKSwg
dmlzaXRvcik7CisgICAgdmlzaXRUcmFuc2FjdGlvbnNJblN0YWNrKHVuZG9NYW5hZ2VyLT5yZWRv
U3RhY2soKSwgdmlzaXRvcik7Cit9CisKKworSlNWYWx1ZSBKU1VuZG9NYW5hZ2VyOjp0cmFuc2Fj
dChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0
VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVW5kb01hbmFnZXI6
OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICBKU1Vu
ZG9NYW5hZ2VyKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVW5kb01hbmFnZXIqPihhc09iamVjdCh0
aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZK
U1VuZG9NYW5hZ2VyOjpzX2luZm8pOworICAgIFVuZG9NYW5hZ2VyKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VW5kb01hbmFnZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAorICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAyKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNWYWx1ZSBk
aWN0aW9uYXJ5ID0gTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5k
ZWZpbmVkKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgIGlmICghZGljdGlvbmFyeS5pc09iamVjdCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgCisgICAgYm9vbCBtZXJnZShNQVlCRV9N
SVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvQm9vbGVhbigp
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIAorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAKKyAgICBSZWZQdHI8SlNET01UcmFuc2Fj
dGlvbj4gdHJhbnNhY3Rpb24gPSBKU0RPTVRyYW5zYWN0aW9uOjpjcmVhdGUoZGljdGlvbmFyeS5n
ZXRPYmplY3QoKSwgdGhpc1ZhbHVlLmdldE9iamVjdCgpLCBjdXJyZW50V29ybGQoZXhlYyksIHNj
cmlwdENvbnRleHQpOworICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwt
PnRyYW5zYWN0KHRyYW5zYWN0aW9uLCBtZXJnZSwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK30KKworI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNh
Y3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJWOERPTVRyYW5zYWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5B
R0VSKQorCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCisjaW5jbHVkZSAiVjhTdG9yYWdlLmgi
CisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0
aWMgdm9pZCB3ZWFrRGljdGlvbmFyeUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4s
IHZvaWQqIHBhcmFtZXRlcikKK3sKKyAgICBWOERPTVRyYW5zYWN0aW9uKiBkaWN0aW9uYXJ5ID0g
c3RhdGljX2Nhc3Q8VjhET01UcmFuc2FjdGlvbio+KHBhcmFtZXRlcik7CisgICAgZGljdGlvbmFy
eS0+ZGlzcG9zZURpY3Rpb25hcnlPYmplY3QoKTsKK30KKyAgICAKK1Y4RE9NVHJhbnNhY3Rpb246
OlY4RE9NVHJhbnNhY3Rpb24odjg6OkxvY2FsPHY4OjpPYmplY3Q+IGRpY3Rpb25hcnksIGNvbnN0
IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorICAgIDogbV93b3JsZENvbnRleHQod29ybGRDb250ZXh0KQorICAgICwgbV9j
b250ZXh0KGNvbnRleHQpCisgICAgLCBtX3VuZG9NYW5hZ2VyKDApCit7CisgICAgbV9kaWN0aW9u
YXJ5ID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhkaWN0aW9uYXJ5KTsKKyAgICBt
X2RpY3Rpb25hcnkuTWFrZVdlYWsodGhpcywgJndlYWtEaWN0aW9uYXJ5Q2FsbGJhY2spOworfQor
ICAgIAorVjhET01UcmFuc2FjdGlvbjo6flY4RE9NVHJhbnNhY3Rpb24oKQoreworICAgIGRpc3Bv
c2VEaWN0aW9uYXJ5T2JqZWN0KCk7Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6ZGlzcG9z
ZURpY3Rpb25hcnlPYmplY3QoKQoreworICAgIGlmICghbV9kaWN0aW9uYXJ5LklzRW1wdHkoKSkg
eworICAgICAgICBtX2RpY3Rpb25hcnkuRGlzcG9zZSgpOworICAgICAgICBtX2RpY3Rpb25hcnku
Q2xlYXIoKTsKKyAgICB9Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZSgpCit7
CisgICAgY2FsbFByb3BlcnR5KG1fY29udGV4dC5nZXQoKSwgImV4ZWN1dGUiKTsKK30KKwordm9p
ZCBWOERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAgICBjYWxsUHJvcGVydHkobV9jb250
ZXh0LmdldCgpLCAidW5kbyIpOworICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3Vu
ZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOworfQorCit2b2lkIFY4RE9NVHJhbnNh
Y3Rpb246OnJlYXBwbHkoKQoreworICAgIGNhbGxQcm9wZXJ0eShtX2NvbnRleHQuZ2V0KCksICJy
ZWRvIik7CisgICAgaWYgKG1fdW5kb01hbmFnZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXItPnJl
Z2lzdGVyVW5kb1N0ZXAodGhpcyk7Cit9CisKKwordm9pZCBWOERPTVRyYW5zYWN0aW9uOjpjYWxs
UHJvcGVydHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcHJv
cGVydHlOYW1lKQoreworICAgIGlmIChjb250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4
dChjb250ZXh0LCBtX3dvcmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhD
b250ZXh0KTsKKyAgICAKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZGljdGlvbmFyeSA9IHY4
OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3KG1fZGljdGlvbmFyeSk7CisgICAgaWYgKGRpY3Rpb25h
cnkuSXNFbXB0eSgpIHx8ICFkaWN0aW9uYXJ5LT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvcGVydHkgPSBkaWN0aW9uYXJ5LT5H
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKHByb3BlcnR5TmFtZSkpOworICAgIGlmIChwcm9wZXJ0
eS5Jc0VtcHR5KCkgfHwgIXByb3BlcnR5LT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPiBoYW5kbGVyRnVuY3Rpb24gPSAgdjg6
OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QocHJvcGVydHkpOworICAgIAorICAgIHY4OjpMb2Nh
bDx2ODo6T2JqZWN0PiByZWNlaXZlciA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChoYW5k
bGVyRnVuY3Rpb24pOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzBdID0g
eyB9OworICAgIAorICAgIGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGNv
bnRleHQpKSB7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4o
Y29udGV4dCktPmZyYW1lKCk7CisgICAgICAgIGlmIChmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgIHByb3h5LT5jYWxs
RnVuY3Rpb24oaGFuZGxlckZ1bmN0aW9uLCByZWNlaXZlciwgMSwgcGFyYW1ldGVycyk7CisgICAg
fQorfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVjhET01UcmFuc2FjdGlvbl9oCisjZGVmaW5lIFY4RE9NVHJhbnNhY3Rpb25faAorCisj
aWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCisj
aW5jbHVkZSAiV29ybGRDb250ZXh0SGFuZGxlLmgiCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVW5k
b01hbmFnZXI7CisKK2NsYXNzIFY4RE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgRE9NVHJhbnNhY3Rp
b24geworcHVibGljOgorICAgIFY4RE9NVHJhbnNhY3Rpb24odjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGRpY3Rpb25hcnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOERPTVRyYW5zYWN0aW9uPiBjcmVhdGUo
djg6OkxvY2FsPHY4OjpPYmplY3Q+IGRpY3Rpb25hcnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRs
ZSYgd29ybGRDb250ZXh0LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOERPTVRyYW5zYWN0aW9uKGRpY3Rpb25hcnks
IHdvcmxkQ29udGV4dCwgY29udGV4dCkpOworICAgIH0KKyAgICAKKyAgICB+VjhET01UcmFuc2Fj
dGlvbigpOworICAgIAorICAgIC8vIFByb3ZpZGVzIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBo
YW5kbGUgZm9yIEdDLiBSZXR1cm5lZAorICAgIC8vIHZhbHVlIGlzIGEgd2VhayBoYW5kbGUgYW5k
IHNvIG5vdCBndWFyYW50ZWVkIHRvIHN0YXkgYWxpdmUuCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gZXhpc3RpbmdEaWN0aW9uYXJ5T2JqZWN0UGVyc2lzdGVudEhhbmRsZSgpIHsgcmV0
dXJuIG1fZGljdGlvbmFyeTsgfQorICAgIGJvb2wgaGFzRXhpc3RpbmdEaWN0aW9uYXJ5T2JqZWN0
KCkgeyByZXR1cm4gIW1fZGljdGlvbmFyeS5Jc0VtcHR5KCk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAKKyAgICB2
aXJ0dWFsIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcigpIE9WRVJSSURFIHsgcmV0dXJuIG1fdW5k
b01hbmFnZXI7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VW5kb01hbmFnZXIoVW5kb01hbmFnZXIq
IHVuZG9NYW5hZ2VyKSBPVkVSUklERSB7IG1fdW5kb01hbmFnZXIgPSB1bmRvTWFuYWdlcjsgfQor
ICAgIAorICAgIHZvaWQgZGlzcG9zZURpY3Rpb25hcnlPYmplY3QoKTsKKworcHJpdmF0ZToKKyAg
ICB2b2lkIGNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgY2hhciog
cHJvcGVydHlOYW1lKTsKKworICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsK
KyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBtX2RpY3Rpb25hcnk7CisgICAgUmVmUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IG1fY29udGV4dDsKKyAgICBVbmRvTWFuYWdlciogbV91
bmRvTWFuYWdlcjsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3Vz
dG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVk
ZSAiVjhVbmRvTWFuYWdlci5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKKyNpbmNsdWRlICJWOERPTVRyYW5zYWN0aW9u
LmgiCisjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRl
eHQuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgdmlzaXRUcmFuc2FjdGlvbnNJ
blN0YWNrKFZlY3Rvcjx2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+ID4mIGRpY3Rpb25hcmllcywg
Y29uc3QgVW5kb01hbmFnZXJTdGFjayYgc3RhY2spCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5
JiBlbnRyeSA9ICooc3RhY2tbaV0uZ2V0KCkpOworICAgICAgICBpZiAoZW50cnkuaXNFbXB0eSgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChlbnRyeVswXS0+aXNET01UcmFu
c2FjdGlvbigpKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGVudHJ5LnNp
emUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgVW5kb1N0ZXAqIHN0ZXAgPSBlbnRyeVtqXS5n
ZXQoKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoc3RlcC0+aXNET01UcmFuc2FjdGlvbigpKTsK
KyAgICAgICAgICAgICAgICBWOERPTVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IHN0YXRpY19j
YXN0PFY4RE9NVHJhbnNhY3Rpb24qPihzdGVwKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYW5z
YWN0aW9uLT5oYXNFeGlzdGluZ0RpY3Rpb25hcnlPYmplY3QoKSkKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgZGljdGlvbmFyaWVzLmFwcGVuZCh0cmFuc2Fj
dGlvbi0+ZXhpc3RpbmdEaWN0aW9uYXJ5T2JqZWN0UGVyc2lzdGVudEhhbmRsZSgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBWOFVuZG9NYW5hZ2VyOjp2aXNp
dERPTVdyYXBwZXIoRE9NRGF0YVN0b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQoreworICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdl
ciA9IHN0YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4ob2JqZWN0KTsKKyAgICBWZWN0b3I8djg6OlBl
cnNpc3RlbnQ8djg6OlZhbHVlPiA+IGRpY3Rpb25hcmllczsKKyAgICB2aXNpdFRyYW5zYWN0aW9u
c0luU3RhY2soZGljdGlvbmFyaWVzLCB1bmRvTWFuYWdlci0+dW5kb1N0YWNrKCkpOworICAgIHZp
c2l0VHJhbnNhY3Rpb25zSW5TdGFjayhkaWN0aW9uYXJpZXMsIHVuZG9NYW5hZ2VyLT5yZWRvU3Rh
Y2soKSk7CisgICAgaWYgKCFkaWN0aW9uYXJpZXMuaXNFbXB0eSgpKQorICAgICAgICB2ODo6Vjg6
OkFkZEltcGxpY2l0UmVmZXJlbmNlcyh3cmFwcGVyLCBkaWN0aW9uYXJpZXMuZGF0YSgpLCBkaWN0
aW9uYXJpZXMuc2l6ZSgpKTsKK30KKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VW5kb01hbmFn
ZXI6OnRyYW5zYWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJ
TkNfU1RBVFMoIkRPTS5VbmRvTWFuYWdlci50cmFuc2FjdCIpOworICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMikKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93Tm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworICAgIFVuZG9NYW5hZ2VyKiBpbXAgPSBWOFVuZG9N
YW5hZ2VyOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKKyAgICB7ICAgICAgICAKKyAgICAgICAgRVhDRVBUSU9OX0JMT0NLKHY4OjpMb2NhbDx2ODo6
VmFsdWU+LCBkaWN0aW9uYXJ5LCBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihhcmdzLCAwLCBEZWZh
dWx0SXNVbmRlZmluZWQpKTsKKyAgICAgICAgaWYgKCFkaWN0aW9uYXJ5LklzRW1wdHkoKSAmJiAh
ZGljdGlvbmFyeS0+SXNPYmplY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJv
d1R5cGVFcnJvcigiTm90IGFuIG9iamVjdC4iLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgICAg
IAorICAgICAgICBFWENFUFRJT05fQkxPQ0soYm9vbCwgbWVyZ2UsIE1BWUJFX01JU1NJTkdfUEFS
QU1FVEVSKGFyZ3MsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCktPkJvb2xlYW5WYWx1ZSgpKTsKKyAg
ICAgICAgCisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgICAgIGlmICghY29udGV4dCkKKyAgICAgICAgICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8VjhET01U
cmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBWOERPTVRyYW5zYWN0aW9uOjpjcmVhdGUodjg6Okxv
Y2FsPHY4OjpPYmplY3Q+OjpDYXN0KGRpY3Rpb25hcnkpLCBXb3JsZENvbnRleHRIYW5kbGUoVXNl
Q3VycmVudFdvcmxkKSwgY29udGV4dCk7CisgICAgICAgIAorICAgICAgICBpbXAtPnRyYW5zYWN0
KHRyYW5zYWN0aW9uLCBtZXJnZSwgZWMpOworICAgICAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAg
ICAgICAgICAgZ290byBmYWlsOworICAgICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+
KCk7CisgICAgfQorZmFpbDoKKyAgICByZXR1cm4gVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShVTkRPX01BTkFHRVIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCShyZXZpc2lvbiAxMjMwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFp
bmVyTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUg
IkNoaWxkTGlzdE11dGF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJDb250YWluZXJOb2RlQWxnb3Jp
dGhtcy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCkBAIC0yMDMsNiArMjA0LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5z
ZXJ0QmVmb3JlQ29tbW9uKE4KICAgICBuZXdDaGlsZC0+c2V0UGFyZW50T3JIb3N0Tm9kZSh0aGlz
KTsKICAgICBuZXdDaGlsZC0+c2V0UHJldmlvdXNTaWJsaW5nKHByZXYpOwogICAgIG5ld0NoaWxk
LT5zZXROZXh0U2libGluZyhuZXh0Q2hpbGQpOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisg
ICAgaWYgKERPTVRyYW5zYWN0aW9uOjppc0NhcHR1cmluZ0RPTUNoYW5nZXModGhpcykpCisgICAg
ICAgIERPTVRyYW5zYWN0aW9uOjphZGRET01DaGFuZ2UoTm9kZUluc2VydGluZ0RPTUNoYW5nZTo6
Y3JlYXRlKHRoaXMsIG5leHRDaGlsZCwgbmV3Q2hpbGQpKTsKKyNlbmRpZgogICAgIGFsbG93RXZl
bnREaXNwYXRjaCgpOwogfQogCkBAIC00MTMsNiArNDE4LDExIEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6cmVtb3ZlQmV0d2VlbihOb2RlKiAKICAgICBBU1NFUlQob2xkQ2hpbGQtPnBhcmVudE5vZGUo
KSA9PSB0aGlzKTsKIAogICAgIGZvcmJpZEV2ZW50RGlzcGF0Y2goKTsKKyAgICAKKyNpZiBFTkFC
TEUoVU5ET19NQU5BR0VSKQorICAgIGlmIChET01UcmFuc2FjdGlvbjo6aXNDYXB0dXJpbmdET01D
aGFuZ2VzKHRoaXMpKQorICAgICAgICBET01UcmFuc2FjdGlvbjo6YWRkRE9NQ2hhbmdlKE5vZGVS
ZW1vdmluZ0RPTUNoYW5nZTo6Y3JlYXRlKHRoaXMsIG5leHRDaGlsZCwgb2xkQ2hpbGQpKTsKKyNl
bmRpZgogCiAgICAgLy8gUmVtb3ZlIGZyb20gcmVuZGVyaW5nIHRyZWUKICAgICBpZiAob2xkQ2hp
bGQtPmF0dGFjaGVkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFs
Z29yaXRobXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZUFsZ29yaXRobXMuaAkocmV2aXNpb24gMTIzMDY3KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAK
ICNpZm5kZWYgQ29udGFpbmVyTm9kZUFsZ29yaXRobXNfaAogI2RlZmluZSBDb250YWluZXJOb2Rl
QWxnb3JpdGhtc19oCiAKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCkBAIC0xMTYsNiArMTE3LDExIEBAIGlubGluZSB2
b2lkIGFwcGVuZENoaWxkVG9Db250YWluZXIoR2VuZXIKICAgICAgICAgY29udGFpbmVyLT5zZXRG
aXJzdENoaWxkKGNoaWxkKTsKIAogICAgIGNvbnRhaW5lci0+c2V0TGFzdENoaWxkKGNoaWxkKTsK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIC8vIEZJWE1FOiBub3Qgd29ya2luZywgaGFz
IHNvbWUgcHJvYmxlbXMgd2l0aCBTVkcKKyAgICAvLyBpZiAoRE9NVHJhbnNhY3Rpb246OmlzQ2Fw
dHVyaW5nRE9NQ2hhbmdlcyhjb250YWluZXIpKQorICAgIC8vICAgICBET01UcmFuc2FjdGlvbjo6
YWRkRE9NQ2hhbmdlKE5vZGVJbnNlcnRpbmdET01DaGFuZ2U6OmNyZWF0ZShjb250YWluZXIsIDAs
IGNoaWxkKSk7CisjZW5kaWYKIH0KIAogLy8gSGVscGVyIG1ldGhvZHMgZm9yIHJlbW92ZUFsbENo
aWxkcmVuSW5Db250YWluZXIsIGhpZGRlbiBmcm9tIFdlYkNvcmUgbmFtZXNwYWNlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lv
biAxMjMwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVS
UklERTsKICAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX2VkaXRBY3Rpb247IH0KKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wg
aXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYKICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCopOwogICAgIGJvb2wgd2FzQ3Jl
YXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRBY3Rpb24gPT0gRWRpdEFjdGlv
bkNyZWF0ZUxpbms7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01DaGFuZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NQ2hhbmdlLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NQ2hhbmdlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
ICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RE9NQ2hhbmdlLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiQ29u
dGFpbmVyTm9kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgorI2lu
Y2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOb2RlSW5zZXJ0aW5nRE9N
Q2hhbmdlOjpOb2RlSW5zZXJ0aW5nRE9NQ2hhbmdlKE5vZGUqIHBhcmVudCwgTm9kZSogcmVmQ2hp
bGQsIE5vZGUqIGNoaWxkKQorICAgIDogbV9wYXJlbnQocGFyZW50KQorICAgICwgbV9yZWZDaGls
ZChyZWZDaGlsZCkKKyAgICAsIG1fY2hpbGQoY2hpbGQpCit7Cit9CisKK1Bhc3NSZWZQdHI8Tm9k
ZUluc2VydGluZ0RPTUNoYW5nZT4gTm9kZUluc2VydGluZ0RPTUNoYW5nZTo6Y3JlYXRlKE5vZGUq
IHBhcmVudCwgTm9kZSogcmVmQ2hpbGQsIE5vZGUqIGNoaWxkKQoreworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgTm9kZUluc2VydGluZ0RPTUNoYW5nZShwYXJlbnQsIHJlZkNoaWxkLCBjaGlsZCkp
OworfQorCit2b2lkIE5vZGVJbnNlcnRpbmdET01DaGFuZ2U6OnVuYXBwbHkoKQoreworICAgIGlm
IChtX2NoaWxkLmdldCgpICYmIG1fY2hpbGQtPnBhcmVudE5vZGUoKSAhPSBtX3BhcmVudC5nZXQo
KSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChtX3JlZkNoaWxkLmdldCgpICYmIG1fcmVmQ2hp
bGQtPnBhcmVudE5vZGUoKSAhPSBtX3BhcmVudC5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmIChtX3JlZkNoaWxkLmdldCgpICYmIG1fcmVmQ2hpbGQtPnByZXZpb3VzU2libGluZygpICE9
IG1fY2hpbGQuZ2V0KCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX3BhcmVudC0+cmVt
b3ZlQ2hpbGQobV9jaGlsZC5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQg
Tm9kZUluc2VydGluZ0RPTUNoYW5nZTo6cmVhcHBseSgpCit7CisgICAgaWYgKG1fY2hpbGQuZ2V0
KCkgJiYgbV9jaGlsZC0+cGFyZW50Tm9kZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1f
cmVmQ2hpbGQuZ2V0KCkgJiYgbV9yZWZDaGlsZC0+cGFyZW50Tm9kZSgpICE9IG1fcGFyZW50Lmdl
dCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9wYXJlbnQtPmluc2VydEJlZm9yZSht
X2NoaWxkLCBtX3JlZkNoaWxkLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKK30KKworTm9k
ZVJlbW92aW5nRE9NQ2hhbmdlOjpOb2RlUmVtb3ZpbmdET01DaGFuZ2UoTm9kZSogcGFyZW50LCBO
b2RlKiByZWZDaGlsZCwgTm9kZSogY2hpbGQpCisgICAgOiBtX3BhcmVudChwYXJlbnQpCisgICAg
LCBtX3JlZkNoaWxkKHJlZkNoaWxkKQorICAgICwgbV9jaGlsZChjaGlsZCkKK3sKK30KKworUGFz
c1JlZlB0cjxOb2RlUmVtb3ZpbmdET01DaGFuZ2U+IE5vZGVSZW1vdmluZ0RPTUNoYW5nZTo6Y3Jl
YXRlKE5vZGUqIHBhcmVudCwgTm9kZSogcmVmQ2hpbGQsIE5vZGUqIGNoaWxkKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgTm9kZVJlbW92aW5nRE9NQ2hhbmdlKHBhcmVudCwgcmVmQ2hpbGQs
IGNoaWxkKSk7Cit9CisKK3ZvaWQgTm9kZVJlbW92aW5nRE9NQ2hhbmdlOjp1bmFwcGx5KCkKK3sK
KyAgICAvLyBUT0RPOiBjaGVjayBjb25kaXRpb25zCisKKyAgICBtX3BhcmVudC0+aW5zZXJ0QmVm
b3JlKG1fY2hpbGQsIG1fcmVmQ2hpbGQuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOworfQor
Cit2b2lkIE5vZGVSZW1vdmluZ0RPTUNoYW5nZTo6cmVhcHBseSgpCit7CisgICAgLy8gVE9ETzog
Y2hlY2sgY29uZGl0aW9ucworICAgIAorICAgIG1fcGFyZW50LT5yZW1vdmVDaGlsZChtX2NoaWxk
LmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NQ2hhbmdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9ET01DaGFuZ2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NQ2hhbmdlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IERPTUNoYW5nZV9oCisjZGVmaW5lIERPTUNoYW5nZV9oCisKKyNpZiBFTkFCTEUoVU5ET19NQU5B
R0VSKQorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBOb2RlOworCitjbGFzcyBET01DaGFuZ2UgOiBwdWJsaWMgUmVmQ291bnRlZDxET01D
aGFuZ2U+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5ET01DaGFuZ2UoKSB7IH0KKworICAgIHZp
cnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAw
OworfTsKKworY2xhc3MgTm9kZUluc2VydGluZ0RPTUNoYW5nZSA6IHB1YmxpYyBET01DaGFuZ2Ug
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPE5vZGVJbnNlcnRpbmdET01DaGFuZ2U+
IGNyZWF0ZShOb2RlKiBwYXJlbnQsIE5vZGUqIHJlZkNoaWxkLCBOb2RlKiBjaGlsZCk7CisgICAg
dm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgTm9kZUluc2VydGluZ0RPTUNoYW5nZShOb2RlKiBwYXJlbnQsIE5vZGUq
IHJlZkNoaWxkLCBOb2RlKiBjaGlsZCk7CisgICAgCisgICAgUmVmUHRyPE5vZGU+IG1fcGFyZW50
OworICAgIFJlZlB0cjxOb2RlPiBtX3JlZkNoaWxkOworICAgIFJlZlB0cjxOb2RlPiBtX2NoaWxk
OworfTsKKworY2xhc3MgTm9kZVJlbW92aW5nRE9NQ2hhbmdlIDogcHVibGljIERPTUNoYW5nZSB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Tm9kZVJlbW92aW5nRE9NQ2hhbmdlPiBj
cmVhdGUoTm9kZSogcGFyZW50LCBOb2RlKiByZWZDaGlsZCwgTm9kZSogY2hpbGQpOworICAgIHZv
aWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAg
IAorcHJpdmF0ZToKKyAgICBOb2RlUmVtb3ZpbmdET01DaGFuZ2UoTm9kZSogcGFyZW50LCBOb2Rl
KiByZWZDaGlsZCwgTm9kZSogY2hpbGQpOworICAgIAorICAgIFJlZlB0cjxOb2RlPiBtX3BhcmVu
dDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9yZWZDaGlsZDsKKyAgICBSZWZQdHI8Tm9kZT4gbV9jaGls
ZDsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ET01UcmFuc2FjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKworI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiVW5kb01h
bmFnZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitET01UcmFuc2FjdGlvbiogRE9NVHJh
bnNhY3Rpb246OnNfY2FwdHVyaW5nRE9NVHJhbnNhY3Rpb24gPSAwOworICAgIAorRE9NVHJhbnNh
Y3Rpb246OkRPTVRyYW5zYWN0aW9uKCkKKyAgICA6IG1fdW5kb01hbmFnZXIoMCkKK3sKK30KKyAg
ICAKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OmFwcGx5KCkKK3sKKyAgICBpZiAoaXNBdXRvbWF0aWMo
KSkgeworICAgICAgICBzX2NhcHR1cmluZ0RPTVRyYW5zYWN0aW9uID0gdGhpczsKKyAgICAgICAg
bV9jaGFuZ2VzID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8RE9NQ2hhbmdlPiA+KTsKKyAg
ICAgICAgZXhlY3V0ZUF1dG9tYXRpYygpOworICAgICAgICBzX2NhcHR1cmluZ0RPTVRyYW5zYWN0
aW9uID0gMDsKKyAgICB9IGVsc2UKKyAgICAgICAgZXhlY3V0ZSgpOworfQorCit2b2lkIERPTVRy
YW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAgICBpZiAoaXNBdXRvbWF0aWMoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBpID0gbV9jaGFuZ2VzLT5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAg
ICAgICBtX2NoYW5nZXMtPmF0KGkgLSAxKS0+dW5hcHBseSgpOworICAgIH0gZWxzZQorICAgICAg
ICB1bmRvKCk7CisgICAgCisgICAgaWYgKG1fdW5kb01hbmFnZXIpCisgICAgICAgIG1fdW5kb01h
bmFnZXItPnJlZ2lzdGVyUmVkb1N0ZXAodGhpcyk7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246
OnJlYXBwbHkoKQoreworICAgIGlmIChpc0F1dG9tYXRpYygpKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9jaGFuZ2VzLT5zaXplKCk7ICsraSkKKyAgICAgICAgICAgIG1fY2hh
bmdlcy0+YXQoaSktPnJlYXBwbHkoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmVkbygpOworICAg
IAorICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3Rl
clVuZG9TdGVwKHRoaXMpOworfQorCitib29sIERPTVRyYW5zYWN0aW9uOjppc0NhcHR1cmluZ0RP
TUNoYW5nZXMoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIXNfY2FwdHVyaW5nRE9NVHJhbnNhY3Rp
b24pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBOb2RlKiBob3N0ID0gc19jYXB0dXJpbmdE
T01UcmFuc2FjdGlvbi0+bV91bmRvTWFuYWdlci0+dW5kb1Njb3BlSG9zdCgpOworICAgIGlmICgh
aG9zdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBob3N0LT5jb250YWlucyhu
b2RlKTsKK30KKwordm9pZCBET01UcmFuc2FjdGlvbjo6YWRkRE9NQ2hhbmdlKFBhc3NSZWZQdHI8
RE9NQ2hhbmdlPiBjaGFuZ2UpCit7CisgICAgQVNTRVJUKHNfY2FwdHVyaW5nRE9NVHJhbnNhY3Rp
b24pOworICAgIHNfY2FwdHVyaW5nRE9NVHJhbnNhY3Rpb24tPm1fY2hhbmdlcy0+YXBwZW5kKGNo
YW5nZSk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01U
cmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01U
cmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBET01UcmFu
c2FjdGlvbl9oCisjZGVmaW5lIERPTVRyYW5zYWN0aW9uX2gKKworI2lmIEVOQUJMRShVTkRPX01B
TkFHRVIpCisKKyNpbmNsdWRlICJET01DaGFuZ2UuaCIKKyNpbmNsdWRlICJVbmRvU3RlcC5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOb2Rl
OworY2xhc3MgVW5kb01hbmFnZXI7CisKK2NsYXNzIERPTVRyYW5zYWN0aW9uIDogcHVibGljIFVu
ZG9TdGVwIHsKK3B1YmxpYzoKKyAgICBET01UcmFuc2FjdGlvbigpOworICAgIHZpcnR1YWwgfkRP
TVRyYW5zYWN0aW9uKCkgeyB9CisgICAgCisgICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgdW5h
cHBseSgpIE9WRVJSSURFOworICAgIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQXV0
b21hdGljKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1bmRvKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCByZWRvKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpYygpIGNvbnN0ID0g
MDsKKyAgICAKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZpZWQ7IH0KKyAgICBib29sIGlzRE9NVHJhbnNhY3Rp
b24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgVW5kb01hbmFn
ZXIqIHVuZG9NYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQorICAgIHZv
aWQgc2V0VW5kb01hbmFnZXIoVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKSB7IG1fdW5kb01hbmFn
ZXIgPSB1bmRvTWFuYWdlcjsgfQorICAgIAorICAgIHN0YXRpYyBib29sIGlzQ2FwdHVyaW5nRE9N
Q2hhbmdlcyhOb2RlKik7CisgICAgc3RhdGljIHZvaWQgYWRkRE9NQ2hhbmdlKFBhc3NSZWZQdHI8
RE9NQ2hhbmdlPik7CisKK3ByaXZhdGU6CisgICAgVW5kb01hbmFnZXIqIG1fdW5kb01hbmFnZXI7
CisgICAgT3duUHRyPFZlY3RvcjxSZWZQdHI8RE9NQ2hhbmdlPiA+ID4gbV9jaGFuZ2VzOworICAg
IAorICAgIHN0YXRpYyBET01UcmFuc2FjdGlvbiogc19jYXB0dXJpbmdET01UcmFuc2FjdGlvbjsK
K307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAkocmV2aXNpb24gMTIzMDY3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5o
IgorI2luY2x1ZGUgIlVuZG9NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJ
bmRpY2F0b3IuaCIKICNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5o
IgpAQCAtODAyLDggKzgwMywxMiBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1Jl
ZlB0cjxDCiAgICAgICAgIC8vIE9ubHkgcmVnaXN0ZXIgYSBuZXcgdW5kbyBjb21tYW5kIGlmIHRo
ZSBjb21tYW5kIHBhc3NlZCBpbiBpcwogICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFz
dCBjb21tYW5kCiAgICAgICAgIG1fbGFzdEVkaXRDb21tYW5kID0gY21kOworI2lmICFFTkFCTEUo
VU5ET19NQU5BR0VSKQogICAgICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQo
KS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24o
KSk7CisjZWxzZQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5y
ZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsK
KyNlbmRpZgogICAgIH0KIAogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rp
b24pOwpAQCAtODIwLDggKzgyNSwxMiBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQ
YXNzUmVmUHRyCiAgICAgbV9hbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZXNwb25kVG9VbmFw
cGxpZWRFZGl0aW5nKGNtZC5nZXQoKSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAw
OworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
Y2xpZW50KCktPnJlZ2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2VuZGlmICAK
ICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAtODM1
LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAg
ICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rp
b246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwogICAg
IAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKGNt
ZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lz
dGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhu
ZXdTZWxlY3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsxMjU1LDQwIEBAIHZvaWQgRWRpdG9yOjpj
bGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCkt
PmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9N
YW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6dW5kbygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBj
bGllbnQoKS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFu
YWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3I6OmNhblJlZG8oKQogewor
I2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQo
KS0+Y2FuUmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5k
b01hbmFnZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpyZWRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAg
IGNsaWVudCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9N
YW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6ZGlkQmVnaW5FZGl0
aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZpc2lv
biAxMjMwNjcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
IAotI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDYgKzQ0LDcgQEAgUGFzc1JlZlB0cjxVbmRvTWFuYWdl
cj4gVW5kb01hbmFnZXI6OmNyZQogCiBVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoTm9kZSogaG9z
dCkKICAgICA6IG1fdW5kb1Njb3BlSG9zdChob3N0KQorICAgICwgbV9pc0luUHJvZ3Jlc3MoZmFs
c2UpCiB7CiB9CiAKQEAgLTUyLDIwICs1MywxMTIgQEAgdm9pZCBVbmRvTWFuYWdlcjo6dW5kb1Nj
b3BlSG9zdERlc3Ryb3llZAogICAgIG1fdW5kb1Njb3BlSG9zdCA9IDA7CiB9CiAKK3ZvaWQgVW5k
b01hbmFnZXI6OnRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9u
LCBib29sIG1lcmdlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jl
c3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQ
VElPTik7CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2VyKHRoaXMpOworICAgIAorICAg
IG1faXNJblByb2dyZXNzID0gdHJ1ZTsKKyAgICB0cmFuc2FjdGlvbi0+YXBwbHkoKTsKKyAgICBt
X2lzSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIGlmICghbWVyZ2UgfHwgbV91bmRvU3Rh
Y2suaXNFbXB0eSgpKQorICAgICAgICBtX3VuZG9TdGFjay5hcHBlbmQoYWRvcHRQdHIobmV3IFVu
ZG9NYW5hZ2VyRW50cnkpKTsKKyAgICBtX3VuZG9TdGFjay5sYXN0KCktPmFwcGVuZCh0cmFuc2Fj
dGlvbik7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCit7
CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVz
c0VudHJ5ID0gYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgIAorICAgIG1faXNJ
blByb2dyZXNzID0gdHJ1ZTsKKyAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICoo
bV91bmRvU3RhY2subGFzdCgpLmdldCgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gZW50cnkuc2l6
ZSgpOyBpID4gMDsgLS1pKQorICAgICAgICBlbnRyeVtpIC0gMV0tPnVuYXBwbHkoKTsKKyAgICBt
X2lzSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIAorICAgIG1fcmVkb1N0YWNrLmFwcGVuZChtX2lu
UHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsK
K30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVkbyhFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBp
ZiAobV9pc0luUHJvZ3Jlc3MgfHwgIW1fdW5kb1Njb3BlSG9zdCkgeworICAgICAgICBlYyA9IElO
VkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9yZWRv
U3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkg
PSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jl
c3MgPSB0cnVlOworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3JlZG9T
dGFjay5sYXN0KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkg
PiAwOyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+cmVhcHBseSgpOworICAgIG1faXNJblBy
b2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgbV91bmRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVz
c0VudHJ5LnJlbGVhc2UoKSk7CisgICAgbV9yZWRvU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCiB2
b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKCkKIHsKKyAgICB1bmRvKEFTU0VSVF9OT19FWENFUFRJT04p
OwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKCkKIHsKKyAgICByZWRvKEFTU0VSVF9OT19F
WENFUFRJT04pOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9TdGVwKFBhc3NS
ZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykgeworICAg
ICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01h
bmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAgIG1fdW5k
b1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgICAgICAKKyAgICAgICAgY2xlYXJS
ZWRvKEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jl
c3NFbnRyeS0+YXBwZW5kKHN0ZXApOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJl
ZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9n
cmVzcykgeworICAgICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0
cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7Cisg
ICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQor
ICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOwogfQogCi12b2lkIFVuZG9N
YW5hZ2VyOjpjbGVhclVuZG8oKQordm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKEV4Y2VwdGlv
bkNvZGUmIGVjKQogeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhbV91bmRvU2NvcGVIb3N0
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OmNs
ZWFyUmVkbygpCit2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFtX3VuZG9TY29wZUhvc3QpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bV9yZWRvU3RhY2suY2xlYXIoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9VbmRvTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5k
b01hbmFnZXIuaAkocmV2aXNpb24gMTIzMDY3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9V
bmRvTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywzMiArMzMsNjQgQEAKIAogI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCitjbGFzcyBET01UcmFuc2FjdGlvbjsKIGNsYXNzIE5vZGU7CiAKK3R5cGVk
ZWYgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBVbmRvTWFuYWdlckVudHJ5OwordHlwZWRlZiBW
ZWN0b3I8T3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+ID4gVW5kb01hbmFnZXJTdGFjazsKKwogY2xh
c3MgVW5kb01hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmRvTWFuYWdlcj4gewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBjcmVhdGUoTm9kZSogaG9zdCk7
CisgICAgTm9kZSogdW5kb1Njb3BlSG9zdCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1Njb3BlSG9z
dDsgfQogICAgIHZvaWQgdW5kb1Njb3BlSG9zdERlc3Ryb3llZCgpOworICAgIAorICAgIHZvaWQg
dHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4sIGJvb2wsIEV4Y2VwdGlvbkNvZGUm
KTsKIAorICAgIHZvaWQgdW5kbyhFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCByZWRvKEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHVuZG8oKTsKICAgICB2b2lkIHJlZG8oKTsKKyAgICAKKyAg
ICBpbmxpbmUgdW5zaWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX3VuZG9TdGFj
ay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7IH0gCisgICAgaW5saW5lIHVuc2lnbmVkIGxv
bmcgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFjay5zaXplKCk7IH0KIAotICAg
IHZvaWQgY2xlYXJVbmRvKCk7Ci0gICAgdm9pZCBjbGVhclJlZG8oKTsKKyAgICB2b2lkIGNsZWFy
VW5kbyhFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYp
OworICAgIAorICAgIGlubGluZSBib29sIGNhblVuZG8oKSBjb25zdCB7IHJldHVybiAhbV91bmRv
U3RhY2suaXNFbXB0eSgpOyB9CisgICAgaW5saW5lIGJvb2wgY2FuUmVkbygpIGNvbnN0IHsgcmV0
dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7IH0KKyAgICAKKyAgICB2b2lkIHJlZ2lzdGVyVW5k
b1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIHZvaWQgcmVnaXN0ZXJSZWRvU3RlcChQ
YXNzUmVmUHRyPFVuZG9TdGVwPik7CisgICAgCisgICAgaW5saW5lIGNvbnN0IFVuZG9NYW5hZ2Vy
U3RhY2smIHVuZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1N0YWNrOyB9CisgICAgaW5s
aW5lIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHJlZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
cmVkb1N0YWNrOyB9CiAKIHByaXZhdGU6CiAgICAgVW5kb01hbmFnZXIoTm9kZSogaG9zdCk7CiAg
ICAgTm9kZSogbV91bmRvU2NvcGVIb3N0OwotfTsKICAgICAKKyAgICBVbmRvTWFuYWdlclN0YWNr
IG1fdW5kb1N0YWNrOworICAgIFVuZG9NYW5hZ2VyU3RhY2sgbV9yZWRvU3RhY2s7CisgICAgYm9v
bCBtX2lzSW5Qcm9ncmVzczsKKyAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gbV9pblByb2dy
ZXNzRW50cnk7Cit9OworCiB9Ci0gICAgCisKICNlbmRpZgogCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCShyZXZpc2lvbiAxMjMwNjcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzEs
MTMgKzMxLDI0IEBACiBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwotICAgICAgICBD
b25kaXRpb25hbD1VTkRPX01BTkFHRVIKKyAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VS
LAorICAgICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKKyAgICAgICAgVjhDdXN0b21Jc1JlYWNo
YWJsZQogICAgIF0gVW5kb01hbmFnZXIgewotICAgICAgICB2b2lkIHVuZG8oKTsKLSAgICAgICAg
dm9pZCByZWRvKCk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFy
eSB0cmFuc2FjdGlvbiwgaW4gYm9vbGVhbiBtZXJnZSk7CiAKLSAgICAgICAgdm9pZCBjbGVhclVu
ZG8oKTsKLSAgICAgICAgdm9pZCBjbGVhclJlZG8oKTsKKyAgICAgICAgdm9pZCB1bmRvKCkKKyAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHJlZG8oKQorICAg
ICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIAorICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIHBvc2l0aW9uOworCisgICAgICAgIHZvaWQgY2xlYXJVbmRvKCkK
KyAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICB2b2lkIGNsZWFyUmVk
bygpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCShyZXZpc2lvbiAxMjMwNjcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCByZWFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9u
KCkgY29uc3QgPSAwOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAgdmlydHVhbCBib29s
IGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0Jl
cnJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMzA2NykKKysrIFNv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0Jl
cnJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHZvaWQgRWRpdG9yQ2xp
ZW50QmxhY2tCZXJyeTo6ZGlkU2V0U2VsZWMKIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5
OjpyZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVO
QUJMRShVTkRPX01BTkFHRVIpCiAgICAgLy8gUmVtb3ZlIHRoZSBvbGRlc3QgaXRlbSBpZiB3ZSd2
ZSByZWFjaGVkIHRoZSBtYXhpbXVtIGNhcGFjaXR5IGZvciB0aGUgc3RhY2suCiAgICAgaWYgKG1f
dW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5k
b1N0YWNrLnJlbW92ZUZpcnN0KCk7CkBAIC0yNjgsMjcgKzI2OSw0NCBAQCB2b2lkIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyVW5kCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7
CiAKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lz
dGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5VbmRvKCkgY29uc3QK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlz
RW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OmNhbkNvcHlDdXQoRnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMwMyw2ICsz
MjEsNyBAQCBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhblBhc3RlKEZyCiAKIHZvaWQg
RWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVy
YXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVw
PiBjb21tYW5kKCpiYWNrKTsKQEAgLTMxMSwxMCArMzMwLDEyIEBAIHZvaWQgRWRpdG9yQ2xpZW50
QmxhY2tCZXJyeTo6dW5kbygpCiAgICAgICAgIC8vIFVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sg
dG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFjay4KICAgICAgICAgY29tbWFu
ZC0+dW5hcHBseSgpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNr
QmVycnk6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5S
ZWRvKCkpIHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9y
ZWRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7
CkBAIC0zMjcsNiArMzQ4LDcgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkK
ICAgICAgICAgY29tbWFuZC0+cmVhcHBseSgpOwogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwog
ICAgIH0KKyNlbmRpZgogfQogCiBzdGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwg
MDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudElt
cGwuY3BwCShyZXZpc2lvbiAxMjMwNjcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDIyICsyOTUsMzIgQEAg
dm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRTZXRTZWxlY3Rpb25UeQogCiB2b2lkIEVkaXRvckNs
aWVudEltcGw6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAobV91bmRvU3RhY2suc2l6ZSgpID09
IG1heGltdW1VbmRvU3RhY2tEZXB0aCkKICAgICAgICAgbV91bmRvU3RhY2sucmVtb3ZlRmlyc3Qo
KTsgLy8gZHJvcCBvbGRlc3QgaXRlbSBvZmYgdGhlIGZhciBlbmQKICAgICBpZiAoIW1faW5SZWRv
KQogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogICAgIG1fdW5kb1N0YWNrLmFwcGVuZChz
dGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJSZWRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBz
dGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fcmVkb1N0YWNrLmFwcGVu
ZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFF
TkFCTEUoVU5ET19NQU5BR0VSKQogICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgbV9yZWRv
U3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhbkNv
cHlDdXQoRnJhbWUqIGZyYW1lLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMyOSwxNiAr
MzM5LDI1IEBAIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUGFzdGUoRnJhbWUqIGYKIAogYm9v
bCBFZGl0b3JDbGllbnRJbXBsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuUmVk
bygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFtX3Jl
ZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQog
CiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRl
cmF0b3IgYmFjayA9IC0tbV91bmRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3Rl
cD4gc3RlcCgqYmFjayk7CkBAIC0zNDYsMTAgKzM2NSwxMiBAQCB2b2lkIEVkaXRvckNsaWVudElt
cGw6OnVuZG8oKQogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgICAgIC8vIHVuYXBwbHkg
d2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgcmVkbyBzdGFj
ay4KICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWRvKCkKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAg
IFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwog
ICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzYxLDYgKzM4Miw3IEBA
IHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiAgICAgICAgIC8vIHJlYXBwbHkgd2lsbCBj
YWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQgb250byB0aGUgdW5kbyBzdGFjay4KICAg
ICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogLy8KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50RWZs
LmNwcAkocmV2aXNpb24gMTIzMDY3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRWRpdG9yQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDIwICsxNzgsMzAg
QEAgdm9pZCBFZGl0b3JDbGllbnRFZmw6OmRpZFNldFNlbGVjdGlvblR5cAogCiB2b2lkIEVkaXRv
ckNsaWVudEVmbDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0
ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKCFtX2lzSW5SZWRvKQog
ICAgICAgICByZWRvU3RhY2suY2xlYXIoKTsKICAgICB1bmRvU3RhY2sucHJlcGVuZChzdGVwKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50RWZsOjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxVbmRvU3RlcD4gc3Rl
cCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZWRvU3RhY2sucHJlcGVuZChz
dGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50RWZsOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJM
RShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNs
ZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRFZmw6OmNhbkNvcHlDdXQoRnJh
bWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTIwNiwyNCArMjE2LDM1IEBAIGJvb2wg
RWRpdG9yQ2xpZW50RWZsOjpjYW5QYXN0ZShGcmFtZSosIGIKIAogYm9vbCBFZGl0b3JDbGllbnRF
Zmw6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJl
dHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7Cisj
ZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVm
bDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8o
KSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAgPSB1bmRvU3RhY2su
dGFrZUZpcnN0KCk7CiAgICAgICAgIHN0ZXAtPnVuYXBwbHkoKTsKICAgICB9CisjZW5kaWYKIH0K
IAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9T
dGVwPiBzdGVwID0gcmVkb1N0YWNrLnRha2VGaXJzdCgpOwogCkBAIC0yMzIsNiArMjUzLDcgQEAg
dm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZG8oKQogICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAg
ICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3JDbGllbnRFZmw6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBF
ZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAxMjMwNjcp
CisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yODgsMjIgKzI4OCwzMiBAQCB2b2lkIEVkaXRvckNsaWVudDo6
ZGlkU2V0U2VsZWN0aW9uVHlwZXNGCiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclVuZG9T
dGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAodW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5k
b1N0YWNrRGVwdGgpCiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwogICAgIGlmICgh
bV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNrLmFw
cGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50OjpyZWdpc3RlclJlZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJD
b3JlOjpVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBy
ZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICB1bmRvU3RhY2suY2xlYXIoKTsKICAg
ICByZWRvU3RhY2suY2xlYXIoKTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudDo6Y2Fu
Q29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBjb25zdApAQCAtMzE4
LDI2ICszMjgsMzcgQEAgYm9vbCBFZGl0b3JDbGllbnQ6OmNhblBhc3RlKFdlYkNvcmU6OkZyYQog
CiBib29sIEVkaXRvckNsaWVudDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgcmV0dXJuICF1bmRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblJlZG8oKSBj
b25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhcmVkb1N0YWNr
LmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBp
ZiAoY2FuVW5kbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgq
KC0tdW5kb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHVuZG9TdGFjay5yZW1vdmUoLS11bmRvU3Rh
Y2suZW5kKCkpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2gg
dGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIHN0ZXAtPnVuYXBwbHko
KTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgUmVm
UHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKCooLS1yZWRvU3RhY2suZW5kKCkpKTsKICAgICAg
ICAgcmVkb1N0YWNrLnJlbW92ZSgtLXJlZG9TdGFjay5lbmQoKSk7CkBAIC0zNDgsNiArMzY5LDcg
QEAgdm9pZCBFZGl0b3JDbGllbnQ6OnJlZG8oKQogICAgICAgICBzdGVwLT5yZWFwcGx5KCk7CiAg
ICAgICAgIG1faXNJblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3JDbGllbnQ6OnNob3VsZEluc2VydE5vZGUoTm9kZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0
b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9X
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHJldmlzaW9uIDEyMzA2NykKKysrIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMzksMTIgKzIzOSwxNiBAQCBib29sIEVkaXRvckNsaWVudFF0OjpzZWxlY3RX
b3JkQmVmb3JlTWVuCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBGcmFtZSogZnJhbWUgPSBt
X3BhZ2UtPmQtPnBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
ICAgICBpZiAobV9pblVuZG9SZWRvIHx8IChmcmFtZSAmJiAhZnJhbWUtPmVkaXRvcigpLT5sYXN0
RWRpdENvbW1hbmQoKSAvKiBIQUNLISEgRG9uJ3QgcmVjcmVhdGUgdW5kb3MgKi8pKQogICAgICAg
ICByZXR1cm47CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+cHVzaChuZXcgVW5kb1N0ZXBRdChz
dGVwKSk7CiAjZW5kaWYgLy8gUVRfTk9fVU5ET1NUQUNLCisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWdpc3RlclJlZG9T
dGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4pCkBAIC0yNTMsOSArMjU3LDEx
IEBAIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVkb1N0ZXAoV1QKIAogdm9pZCBFZGl0
b3JDbGllbnRRdDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gbV9wYWdlLT51
bmRvU3RhY2soKS0+Y2xlYXIoKTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xp
ZW50UXQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkgY29u
c3QKQEAgLTI3MCwzOCArMjc2LDUwIEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OmNhblBhc3RlKFdl
YkNvcmU6OkYKIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYg
IUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgcmV0dXJu
IGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3RhY2soKS0+Y2FuVW5kbygp
OwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVk
aXRvckNsaWVudFF0OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICNpZmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1cm4gZmFsc2U7CiAjZWxzZQogICAg
IHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jYW5SZWRvKCk7CiAjZW5kaWYKKyNlbHNlCisg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnVuZG8o
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lmbmRlZiBRVF9OT19VTkRPU1RBQ0sK
ICAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFnZS0+dW5kb1N0YWNrKCktPnVuZG8o
KTsKICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRpZgorI2VuZGlmCiB9CiAKIHZvaWQg
RWRpdG9yQ2xpZW50UXQ6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogI2lm
bmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwogICAgIG1fcGFn
ZS0+dW5kb1N0YWNrKCktPnJlZG8oKTsKICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKICNlbmRp
ZgorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNob3VsZEluc2VydE5vZGUoTm9k
ZSogbm9kZSwgUmFuZ2UqIHJhbmdlLCBFZGl0b3JJbnNlcnRBY3Rpb24gYWN0aW9uKQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMTIzMDY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDctMTAgIFN1a29sc2FrIFNha3NodXdvbmcgIDxz
dWtvbHNha0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRvTWFuYWdlcidzIHVu
ZG8sIHJlZG8sIGxlbmd0aCwgcG9zaXRpb24sIGNsZWFyVW5kbywgYW5kIGNsZWFyUmVkbworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRpbmcvdW5k
b21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFu
YWdlci11bmRvLXJlZG8uaHRtbDogQWRkZWQuCisKIDIwMTItMDctMTggIEhpcm9ub3JpIEJvbm8g
IDxoYm9ub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBjb250ZW50cyByaWdodCB3aGVu
IGEgdmVydGljYWwgc2Nyb2xsYmFyIGlzIHNob3duIGF0IHRoZSBsZWZ0IHNpZGUgb2YgYW4gUlRM
IGVsZW1lbnQuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5h
Z2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJh
bnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUaGlzIHRl
c3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKK1BBU1MgZG9jdW1lbnQgaGFz
IHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnR5IHRy
YW5zYWN0LiAKK1BBU1MgQWZ0ZXIgYSB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVz
IHRoZSB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgdHJhbnNhY3QgY2FsbCwgdW5k
b01hbmFnZXIgYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW4g
dW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4g
CitQQVNTIEFmdGVyIGFub3RoZXIgdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhl
IGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2Vy
IHJlYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90aGVyIHJl
ZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAor
UEFTUyBBZnRlciB0aHJlZSB0cmFuc2FjdCBjYWxscyB0aGF0IGFyZSBtZXJnZWQgaW50byBvbmUg
ZW50cnksIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucy4gCitQQVNT
IEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSB0aHJlZSB0cmFu
c2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIAorUEFTUyBBZnRlciBhIHJlZG8gY2FsbCwg
dW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJl
Y3Qgb3JkZXIuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9t
YW5hZ2VyLXRyYW5zYWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzMCBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlVuZG9NYW5hZ2VyLnRyYW5zYWN0KCk8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHRyYW5zYWN0KCkgbWV0aG9kLgorCis8
ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPGRpdiBpZD0ibG9n
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0X293bl9w
cm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAiZG9jdW1lbnQgaGFzIHByb3Bl
cnR5IHVuZG9NYW5hZ2VyLiIpOworCit2YXIgdW5kb01hbmFnZXIgPSBkb2N1bWVudC51bmRvTWFu
YWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZSh1bmRv
TWFuYWdlciwgInRyYW5zYWN0Iik7Cit9LCAidW5kb01hbmFnZXIgaGFzIHByb3BlcnR5IHRyYW5z
YWN0LiIpOworCit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0Iik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAi
ZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFl
ICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxciAiOworICAgICAg
ICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIx
ZSAiKTsKK30sICJBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhl
IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRy
YW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVk
aXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9LAorICAgICAgICAidW5kbyI6IGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJ1ICI7CisgICAgICAgIH0s
CisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRN
TCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciB0cmFuc2FjdCBj
YWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGws
IHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShl
ZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciB1bmRv
IGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIik7CisK
K3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVkbygpOworICAgIGFzc2VydF90
cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAxciAiKTsKK30sICJBZnRlciBhIHJl
ZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0
X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1IDFyIDJyICIpOworfSwgIkFmdGVy
IGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHNlY29uZCB0cmFu
c2FjdGlvbi4iKTsKKworZWRpdC5pbm5lckhUTUwgPSAiIjsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAgICAgfSwKKyAg
ICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9
ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7
CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJlICI7CisgICAgICAgIH0sCisg
ICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCAr
PSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAgICAgICB9CisgICAgfSwgdHJ1ZSk7
CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjNlICI7CisgICAgICAgIH0sCisg
ICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCAr
PSAiM3UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzciAiOworICAgICAgICB9CisgICAgfSwgdHJ1ZSk7
CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDNlICIpOworfSwgIkFm
dGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdlZCBpbnRvIG9uZSBlbnRyeSwg
dW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zLiIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0
LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgIik7Cit9LCAiQWZ0ZXIgYW4gdW5kbyBj
YWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUg
Y29ycmVjdCBvcmRlci4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5y
ZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDNlIDN1IDJ1
IDF1IDFyIDJyIDNyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFw
cGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4iKTsKKwor
ZWRpdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5k
by1yZWRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVk
by1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMg
VW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisKK1BB
U1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5kb01hbmFnZXIg
aGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBhbmQgcG9zaXRpb24uIAorUEFTUyB1
bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQg
cG9zaXRpb24gKDApLiAKK1BBU1MgQWZ0ZXIgaW5zZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElW
LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3NpdGlvbiBpcyAwLiAKK1BBU1MgQWZ0
ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRp
b24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHVu
ZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0
aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5kb01h
bmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5kIHRoZSByZXN1bHQgaXMg
ZW1wdHkuIAorUEFTUyBBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFu
ZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4gCitQQVNT
IEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlz
IDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIAorCkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1y
ZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBA
Cis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+VW5kb01hbmFnZXIgaGFz
IHVuZG8oKSBhbmQgcmVkbygpIHRoYXQgd29yazwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
CitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdW5kbygpLCByZWRvKCksIGxlbmd0aCwgYW5kIHBv
c2l0aW9uLgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2Pgor
PGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAiZG9jdW1l
bnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGFzc2VydF9pZGxfYXR0cmlidXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAidW5kbyIpOworICAg
IGFzc2VydF9pZGxfYXR0cmlidXRlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicmVkbyIpOworICAg
IGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJsZW5ndGgiKTsKKyAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAicG9zaXRpb24iKTsK
K30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydGllcyB1bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBw
b3NpdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5sZW5ndGggPT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAidW5kb01hbmFnZXIgaGFzIGNvcnJlY3QgaW5p
dGlhbCB2YWx1ZXMgZm9yIGxlbmd0aCAoMCkgYW5kIHBvc2l0aW9uICgwKS4iKTsKKwordGVzdChm
dW5jdGlvbigpIHsKKyAgICB2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0
Iik7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGVkaXQsIDApOworICAg
IGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgZmFsc2UsICJ0ZXN0Iik7CisgICAg
CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDEpOworICAg
IGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworfSwgIkFm
dGVyIGluc2VydGluZyB0ZXh0ICd0ZXN0JyBpbiBhIERJViwgdW5kb01hbmFnZXIncyBsZW5ndGgg
aXMgMSBhbmQgcG9zaXRpb24gaXMgMC4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB2YXIg
cmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250
ZW50cyhlZGl0KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuYWRkUmFuZ2UocmFuZ2UpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJCb2xkIiwgZmFsc2UsIG51bGwpOworICAgIAorICAg
IGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3Nl
cnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKKyAgICBhc3NlcnRf
dHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJBZnRlciBib2xkaW5n
IHRoZSB0ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBh
bmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigp
IHsKKyAgICBkb2N1bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQu
aW5uZXJIVE1MID09ICJ0ZXN0Iik7Cit9LCAiQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBs
ZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAn
dGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5h
Z2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5s
ZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRp
b24gPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIiIpOworfSwgIkFm
dGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDIs
IGFuZCB0aGUgcmVzdWx0IGlzIGVtcHR5LiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBkb2N1bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50
LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDEpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICJ0ZXN0Iik7Cit9LCAiQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGgg
aXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAndGVzdCcu
Iik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJl
ZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGgg
PT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0g
MCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7Cit9
LCAiQWZ0ZXIgcmVkb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24g
aXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4iKTsKKworZWRpdC5zdHlsZS5k
aXNwbGF5ID0gJ25vbmUnOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155025</attachid>
            <date>2012-07-27 12:43:25 -0700</date>
            <delta_ts>2012-08-03 22:13:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120727124313.patch</filename>
            <type>text/plain</type>
            <size>95183</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAxMi0wNy0yNyAgU3Vrb2xz
YWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHVuZG9NYW5hZ2VyJ3MgdW5kbywgcmVkbywgbGVuZ3RoLCBwb3NpdGlvbiwgY2xlYXJVbmRvLCBh
bmQgY2xlYXJSZWRvCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04OTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3RzOiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdj
Lmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJh
bnNhY3QuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdl
ci11bmRvLXJlZG8uaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
R05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVz
ZUpTQy5jbWFrZToKKyAgICAgICAgKiBVc2VWOC5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmV4
cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjp2aXNpdERpY3Rpb25hcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbjo6ZXhlY1N0YXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NVHJhbnNhY3Rpb246OmdldFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTRE9NVHJhbnNhY3Rpb246OmNhbGxQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TVRyYW5zYWN0aW9uOjpleGVjdXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NVHJhbnNhY3Rp
b246OmV4ZWN1dGVBdXRvbWF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlv
bjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uOjpyZWRvKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChKU0RPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OnZpc2l0VHJhbnNhY3Rpb25zSW5TdGFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVRy
YW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OndlYWtEaWN0aW9uYXJ5Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFu
c2FjdGlvbjo6VjhET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5z
YWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6flY4
RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6ZGlz
cG9zZURpY3Rpb25hcnlPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlv
bjo6ZXhlY3V0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVRyYW5zYWN0aW9uOjpleGVjdXRl
QXV0b21hdGljKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NVHJhbnNhY3Rpb246OnVuZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlvbjo6cmVkbyk6CisgICAgICAgIChXZWJD
b3JlOjpWOERPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFY4RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01UcmFuc2FjdGlv
bjo6ZGljdGlvbmFyeUpTT2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhV
bmRvTWFuYWdlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjp2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VjhVbmRvTWFuYWdlcjo6dmlzaXRET01XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VW5k
b01hbmFnZXI6OnRyYW5zYWN0Q2FsbGJhY2spOgorICAgICAgICAqIGVkaXRpbmcvQ29tcG9zaXRl
RWRpdENvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9u
OjpET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YXBw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcv
RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERP
TVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjp+RE9NVHJh
bnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpzZXRVbmRvTWFuYWdlcik6Cisg
ICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjph
cHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnVuYXBwbGllZEVkaXRp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5SZWRvKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6cmVkbyk6CisgICAgICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9N
YW5hZ2VyOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVy
VW5kb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0
ZXApOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kbyk6CisgICAgICAg
IChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAgKiBlZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9N
YW5hZ2VyOjp1bmRvU2NvcGVIb3N0KToKKyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2FuUmVk
byk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kb1N0YWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvU3RhY2spOgorICAgICAgICAqIGVkaXRpbmcvVW5k
b01hbmFnZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcvVW5kb1N0ZXAuaDoKKyAgICAgICAgKFVu
ZG9TdGVwKToKKwogMjAxMi0wNy0yNyAgTWluIFFpbiAgPHFpbm1pbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIGFuIG92ZXJsYXkgcGxheSBidXR0b24gdG8gbWVkaWEgY29udHJvbHMgb24g
YW5kcm9pZApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMTkxLDYgKzEx
OTEsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZWRpdGluZy9EZWxldGVTZWxlY3Rpb25D
b21tYW5kLmNwcAogICAgIGVkaXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwCiAgICAgZWRp
dGluZy9EaWN0YXRpb25Db21tYW5kLmNwcAorICAgIGVkaXRpbmcvRE9NVHJhbnNhY3Rpb24uY3Bw
CiAgICAgZWRpdGluZy9FZGl0Q29tbWFuZC5jcHAKICAgICBlZGl0aW5nL0VkaXRpbmdTdHlsZS5j
cHAKICAgICBlZGl0aW5nL0VkaXRvci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkocmV2aXNpb24gMTIzOTA4KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQkod29ya2luZyBjb3B5KQpAQCAtMTQxNiw2ICsxNDE2LDggQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAgXAorCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCkBAIC0xNTM3LDYgKzE1MzksNyBAQCB3ZWJjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlD
dXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0
b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5
Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9u
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRp
b25MaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRD
U1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKQEAgLTIxMzMsNiArMjEzNiw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25BbHRlcm5hdGl2
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuaCBcCisJU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAx
MjM5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTAsNiArMTEwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TGlzdEN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAorICAgICBi
aW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93QmFzZS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcCBcCkBAIC0xOTMsNiArMTk0
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgIGJpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20u
Y3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCBcCiAgICAgIGJp
bmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3Mv
anMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFu
aW1hdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlvbkxp
c3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVD
dXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNv
dXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSwx
MyBAQCBJRiAoRU5BQkxFX1dFQl9JTlRFTlRTKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFC
TEVfVU5ET19NQU5BR0VSKQorICAgIExJU1QgKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAg
ICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5jcHAKKyAgICAgICAgYmluZGluZ3MvanMv
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHAKKyAgICApCitFTkRJRiAoKQorCiBMSVNUKEFQUEVORCBT
Q1JJUFRTX0JJTkRJTkdTCiAgICAgJHtXRUJDT1JFX0RJUn0vYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yLnBtCiApCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQkocmV2aXNpb24gMTIzOTA4KQorKysg
U291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKICAgICBiaW5kaW5ncy92OC9W
OERPTU1hcC5jcHAKKyAgICBiaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0aW9uLmNwcAogICAgIGJp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTE1MSw2ICsx
NTIsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9jdXN0
b20vVjhVaW50MTZBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50
MzJBcnJheUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhVaW50OEFycmF5Q3Vz
dG9tLmNwcAorICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFVuZG9NYW5hZ2VyQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAK
ICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwCiAgICAg
YmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViS2l0UG9pbnRDb25zdHJ1Y3Rvci5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjM5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU2MSwzICsyNTYxLDkgQEAgX19aTjdXZWJD
b3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0QWx0ZXJu
YXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9fWk43V2Vi
Q29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1dGVkU3Ry
aW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBFRUUKICNl
bmRpZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1bWVudDEx
dW5kb01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19fWk43V2Vi
Q29yZTExVW5kb01hbmFnZXI0dW5kb0V2CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJl
dmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBj
b3B5KQpAQCAtMTk3NCw2ICsxOTc0LDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Rp
cmVjdG9yeUVudHJ5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNEaXJl
Y3RvcnlFbnRyeVN5bmNDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0Rv
Y3VtZW50Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2Fj
dGlvbi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvSlNFbnRyeUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL2pzL0pTRW50cnlTeW5jQ3VzdG9tLmNwcCcsCkBAIC0yMDc5LDYgKzIwODEsNyBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDE2QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvSlNVaW50OEFycmF5Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0pTV2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1dlYktpdEFuaW1hdGlvbkxpc3RDdXN0b20uY3BwJywKQEAgLTIyMzMsNiArMjIzNiw4
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhET01NYXAuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5j
cHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rpb24uaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcCcsCkBAIC0yMzgyLDYgKzIzODcsNyBAQAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQzMkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VWludDhBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFVpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCcsCisg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRD
dXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJLaXRBbmlt
YXRpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJL
aXRQb2ludENvbnN0cnVjdG9yLmNwcCcsCkBAIC0yNjM0LDYgKzI2NDAsOCBAQAogICAgICAgICAg
ICAgJ2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAnLAogICAgICAgICAgICAgJ2Vk
aXRpbmcvRGljdGF0aW9uQWx0ZXJuYXRpdmUuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0Rp
Y3RhdGlvbkNvbW1hbmQuY3BwJywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9u
LmNwcCcsCisgICAgICAgICAgICAnZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oJywKICAgICAgICAg
ICAgICdlZGl0aW5nL0VkaXRDb21tYW5kLmNwcCcsCiAgICAgICAgICAgICAnZWRpdGluZy9FZGl0
aW5nQWxsSW5PbmUuY3BwJywKICAgICAgICAgICAgICdlZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAn
LApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYxNSw2ICsyMjYxNSw2MiBAQAogCQkJCT4K
IAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTVW5kb01hbmFnZXIu
Y3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIi
CisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0i
UHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4K
KwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTVW5kb01hbmFnZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1ZhbGlkaXR5U3RhdGUuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KQEAgLTU1ODM1LDYgKzU1ODkxLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRE9NVHJhbnNhY3Rpb24uaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cZWRpdGlu
Z1xFZGl0QWN0aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjYxNjIsNiArNjYyMjIsNjIg
QEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVRyYW5zYWN0aW9uLmNwcCIKKwkJ
CQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdf
Q2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRp
bmdzXGpzXEpTRE9NVHJhbnNhY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93QmFzZS5jcHAi
CiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC03MDAxMCw2ICs3MDEyNiw1OCBA
QAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTVW5kb01hbmFnZXJDdXN0b20uY3BwIgor
CQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1
Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
CS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhj
bHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9
IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgor
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTIzOTA4KQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xOTU5
LDYgKzE5NTksMTEgQEAKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVn
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0IxRUEwQ0UxNTc2
QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IxRUEwQ0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5k
b01hbmFnZXIuY3BwICovOyB9OwogCQk3QjFFQTBDRjE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRv
TWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLzsgfTsKKwkJN0I0
Njk0RjExNUMyRTBEQTAwMzExM0RDIC8qIERPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDY5NEVGMTVDMkUwREEwMDMxMTNE
QyAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi87IH07CisJCTdCNDY5NEYyMTVDMkUwREEwMDMxMTNE
QyAvKiBET01UcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0I0Njk0RjAxNUMyRTBEQTAwMzExM0RDIC8qIERPTVRyYW5zYWN0aW9uLmgg
Ki87IH07CisJCTdCNDY5NEZBMTVDMkUxQTkwMDMxMTNEQyAvKiBKU0RPTVRyYW5zYWN0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDY5NEY4
MTVDMkUxQTkwMDMxMTNEQyAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJN0I0Njk0
RkIxNUMyRTFBOTAwMzExM0RDIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCNDY5NEY5MTVDMkUxQTkwMDMxMTNEQyAv
KiBKU0RPTVRyYW5zYWN0aW9uLmggKi87IH07CisJCTdCNDY5NEZFMTVDMkUxQzQwMDMxMTNEQyAv
KiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdCNDY5NEZEMTVDMkUxQzQwMDMxMTNEQyAvKiBKU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
OTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCOTE4
NEQzMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVu
ZG9NYW5hZ2VyLmggKi87IH07CiAJCTdFMzNDRDAxMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVBy
aW9yaXR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05MTE4LDYgKzkxMjMsMTEgQEAK
IAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBDQzE1NzZDNUI1MDA2MDE3N0QgLyogSlNV
bmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Vu
ZG9NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxRUEwQ0QxNTc2
QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QjQ2OTRFRjE1QzJFMERBMDAzMTEzREMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QjQ2OTRGMDE1QzJFMERBMDAzMTEzREMgLyogRE9NVHJhbnNh
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NVHJhbnNhY3Rpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0I0Njk0RjgxNUMyRTFBOTAwMzExM0RD
IC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01UcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdCNDY5NEY5MTVDMkUxQTkwMDMxMTNEQyAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0I0Njk0RkQxNUMyRTFDNDAwMzExM0RDIC8qIEpTVW5kb01hbmFn
ZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NENG
MTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBVbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmRvTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QjkxODREMTE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3MDU1LDYgKzE3MDY1LDggQEAKIAkJCQlDRUNBREZDMzE1Mzc3OEZG
MDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLywKIAkJCQlDRUNBREZDNDE1Mzc3
OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3
NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCAqLywKKwkJCQk3QjQ2OTRFRjE1QzJF
MERBMDAzMTEzREMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTdCNDY5NEYwMTVDMkUw
REEwMDMxMTNEQyAvKiBET01UcmFuc2FjdGlvbi5oICovLAogCQkJCTkzMzA5RDkzMDk5RTY0OTEw
MDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggKi8sCiAJCQkJOTMzMDlEOTQwOTlFNjQ5MTAwNTZFNTgx
IC8qIEVkaXRDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5NTA5OUU2NDkxMDA1NkU1ODEgLyog
RWRpdENvbW1hbmQuaCAqLywKQEAgLTIwMDQxLDYgKzIwMDUzLDggQEAKIAkJCQk5M0I3MEQ0ODA5
RUIwQzdDMDA5RDg0NjggLyogSlNET01CaW5kaW5nLmggKi8sCiAJCQkJRTFDMzZDQkMwRUIwODA2
MjAwNzQxMEJDIC8qIEpTRE9NR2xvYmFsT2JqZWN0LmNwcCAqLywKIAkJCQlFMUMzNkMwMjBFQjA3
NkQ2MDA3NDEwQkMgLyogSlNET01HbG9iYWxPYmplY3QuaCAqLywKKwkJCQk3QjQ2OTRGODE1QzJF
MUE5MDAzMTEzREMgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi8sCisJCQkJN0I0Njk0RjkxNUMy
RTFBOTAwMzExM0RDIC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLywKIAkJCQlCQzY5MzI3MTBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmNwcCAqLywKIAkJCQlCQzY5MzI3MjBEN0Uy
OTM5MDBBRTQ0RDEgLyogSlNET01XaW5kb3dCYXNlLmggKi8sCiAJCQkJQkNCRkI1M0EwRENEMjlD
RjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuY3BwICovLApAQCAtMjAyODQsNiArMjAyOTgs
NyBAQAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9t
LmNwcCAqLywKIAkJCQk0OUVFQ0Y3NTEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3Vz
dG9tLmNwcCAqLywKIAkJCQk5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1w
ZWRBcnJheUN1c3RvbS5jcHAgKi8sCisJCQkJN0I0Njk0RkQxNUMyRTFDNDAwMzExM0RDIC8qIEpT
VW5kb01hbmFnZXJDdXN0b20uY3BwICovLAogCQkJCUZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAv
KiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QzEwNTE5NzFBMDAw
OTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJCTMxOUU2
ODg2MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgKi8sCkBA
IC0yMzA1Niw2ICsyMzA3MSw3IEBACiAJCQkJMTg4NjA0QjQwRjJFNjU0QTAwMEI2NDQzIC8qIERP
TVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNUZENjlFMDEyODQ1RDQzMDBCMkJFQjMgLyog
RE9NVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZDMkIwQzEyMzcwREEwMDA2QTk5
MUEgLyogRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QjQ2OTRGMjE1QzJFMERB
MDAzMTEzREMgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUEzN0JF
MDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1
NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtlckludGVybmFsLmgg
aW4gSGVhZGVycyAqLywKQEAgLTIzNzEwLDYgKzIzNzI2LDcgQEAKIAkJCQlDNTEzN0NGMzExQTU4
Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0
NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAog
CQkJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJN0I0Njk0RkIxNUMyRTFBOTAwMzExM0RDIC8qIEpTRE9NVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVS
TC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9N
V2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2
IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI2MzA1LDYgKzI2MzIy
LDcgQEAKIAkJCQk5MzNBMTRBQTBCN0QxRDA5MDBBNTNGRkQgLyogRE9NVGV4dEV2ZW50Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tl
bkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0I0Njk0RjExNUMyRTBEQTAwMzExM0RDIC8q
IERPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NTI2Q0QzMEFCMEI3REEw
MDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y0OTIw
QUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTM3
REZEQTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY5
MDIsNiArMjY5MjAsNyBAQAogCQkJCUJDNjQ2NDlDMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0
cmluZ01hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Njk0NTYzQzEyMTREOTdDMDAw
N0NCQUUgLyogSlNET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFMEJDNTYx
MzYxNDhBODAwMkFEMTJFIC8qIEpTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdCNDY5NEZBMTVDMkUxQTkwMDMxMTNEQyAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJFMzdFMDA1MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01X
aW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0NEQxIC8q
IEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MzcwLDYgKzI3Mzg5LDcg
QEAKIAkJCQk5MTA4OUQzMzE0QzMzNjA1MDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MUEzOTA1QjE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50
OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QjFFQTBDRTE1NzZD
NUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjQ2
OTRGRTE1QzJFMUM0MDAzMTEzREMgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNUM3NzA5NDEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUZEODJEN0Y3MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVT
aGFwZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3
MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShy
ZXZpc2lvbiAxMjM5MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdz
QWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBACiAjaW5jbHVkZSAi
SlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcEN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpT
RE9NVHJhbnNhY3Rpb24uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwu
Y3BwIgpAQCAtMTU2LDYgKzE1Nyw3IEBACiAjaW5jbHVkZSAiSlNVaW50MzJBcnJheUN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNVaW50OEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1VpbnQ4
Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZy
YW1lUnVsZUN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CisjaW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0
YXRlLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKKwordXNpbmcgbmFtZXNwYWNl
IEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0RPTVRyYW5zYWN0aW9uOjpKU0RPTVRy
YW5zYWN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGRpY3Rpb25hcnksIEpTT2JqZWN0
KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlzb2xhdGVkV29ybGQpCisgICAgOiBtX3dyYXBw
ZXIod3JhcHBlcikKKyAgICAsIG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdvcmxkKQoreworICAg
IGlmICh3cmFwcGVyKQorICAgICAgICBtX2RpY3Rpb25hcnkuc2V0TWF5QmVOdWxsKCptX2lzb2xh
dGVkV29ybGQtPmdsb2JhbERhdGEoKSwgd3JhcHBlciwgZGljdGlvbmFyeSk7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlQoIWRpY3Rpb25hcnkpOworICAgIAorICAgIFNjcmlwdFZhbHVlIHZhbHVl
OworICAgIG1faXNBdXRvbWF0aWMgPSBnZXRQcm9wZXJ0eShleGVjLCAiZXhlY3V0ZUF1dG9tYXRp
YyIsIHZhbHVlKSAmJiB2YWx1ZS5pc0Z1bmN0aW9uKCk7Cit9CisKK1Bhc3NSZWZQdHI8SlNET01U
cmFuc2FjdGlvbj4gSlNET01UcmFuc2FjdGlvbjo6Y3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIGRpY3Rpb25hcnksIEpTT2JqZWN0KiB3cmFwcGVyLCBET01XcmFwcGVyV29ybGQqIGlz
b2xhdGVkV29ybGQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0RPTVRyYW5zYWN0aW9u
KGV4ZWMsIGRpY3Rpb25hcnksIHdyYXBwZXIsIGlzb2xhdGVkV29ybGQpKTsKK30KKwordm9pZCBK
U0RPTVRyYW5zYWN0aW9uOjp2aXNpdERpY3Rpb25hcnkoSlNDOjpTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICBpZiAobV9kaWN0aW9uYXJ5KQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9k
aWN0aW9uYXJ5KTsKK30KKworRXhlY1N0YXRlKiBKU0RPTVRyYW5zYWN0aW9uOjpleGVjU3RhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBBU1NFUlQoY29udGV4dCk7
CisgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgp
KTsKKyAgICBpZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgCisgICAg
cmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworfQorCitib29sIEpTRE9NVHJhbnNh
Y3Rpb246OmdldFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogcHJvcGVydHlO
YW1lLCBTY3JpcHRWYWx1ZSYgdmFsdWUpCit7CisgICAgSlNEaWN0aW9uYXJ5IGpzRGljdGlvbmFy
eShleGVjLCBtX2RpY3Rpb25hcnkuZ2V0KCkpOworICAgIGlmICghanNEaWN0aW9uYXJ5LmlzVmFs
aWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiBqc0RpY3Rpb25h
cnkuZ2V0KHByb3BlcnR5TmFtZSwgdmFsdWUpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246
OmNhbGxQcm9wZXJ0eShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY1N0YXRlKGNvbnRl
eHQpOworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFNjcmlwdFZh
bHVlIHZhbHVlOworICAgIGlmICghZ2V0UHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSkgfHwgIXZhbHVlLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSB2YWx1ZS5qc1ZhbHVlKCk7CisgICAgCisgICAgQ2FsbERhdGEgY2Fs
bERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2Fs
bERhdGEpOworICAgIAorICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZU5vbmUpIHsKKyAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUg
PSBmdW5jdGlvbjsKKyAgICAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBK
U0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6ZXhlY3V0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGNhbGxQcm9wZXJ0eShjb250ZXh0LCAi
ZXhlY3V0ZSIpOworfQorCit2b2lkIEpTRE9NVHJhbnNhY3Rpb246OmV4ZWN1dGVBdXRvbWF0aWMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBjYWxsUHJvcGVydHkoY29u
dGV4dCwgImV4ZWN1dGVBdXRvbWF0aWMiKTsKK30KKwordm9pZCBKU0RPTVRyYW5zYWN0aW9uOjp1
bmRvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgY2FsbFByb3BlcnR5
KGNvbnRleHQsICJ1bmRvIik7Cit9CisKK3ZvaWQgSlNET01UcmFuc2FjdGlvbjo6cmVkbyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGNhbGxQcm9wZXJ0eShjb250ZXh0
LCAicmVkbyIpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNET01UcmFuc2FjdGlvbl9oCisjZGVmaW5lIEpTRE9NVHJhbnNhY3Rp
b25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0
aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU09iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIERPTVdyYXBwZXJXb3JsZDsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CitjbGFzcyBTY3JpcHRWYWx1ZTsKKworY2xhc3MgSlNET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBE
T01UcmFuc2FjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNET01UcmFu
c2FjdGlvbj4gY3JlYXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCogZGljdGlvbmFy
eSwgSlNDOjpKU09iamVjdCogd3JhcHBlciwgRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxk
KTsKKyAgICB2b2lkIHZpc2l0RGljdGlvbmFyeShKU0M6OlNsb3RWaXNpdG9yJik7CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQXV0b21hdGljKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5kbyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJlZG8oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBpc0F1dG9tYXRpYygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1faXNBdXRvbWF0aWM7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgSlNE
T01UcmFuc2FjdGlvbihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqIGRpY3Rpb25hcnks
IEpTQzo6SlNPYmplY3QqIHdyYXBwZXIsIERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7
CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgYm9vbCBnZXRQcm9wZXJ0eShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSwgU2NyaXB0VmFsdWUmKTsKKyAgICB2b2lkIGNhbGxQcm9wZXJ0eShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKTsKKyAgICAKKyAgICBKU0M6
OldyaXRlQmFycmllcjxKU0M6OkpTT2JqZWN0PiBtX2RpY3Rpb25hcnk7CisgICAgSlNDOjpXZWFr
PEpTQzo6SlNPYmplY3Q+IG1fd3JhcHBlcjsKKyAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBt
X2lzb2xhdGVkV29ybGQ7CisgICAgYm9vbCBtX2lzQXV0b21hdGljOworfTsKKworfQorCisjZW5k
aWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5h
Z2VyQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisK
KyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9u
LmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5zYWN0aW9u
c0luU3RhY2soY29uc3QgVW5kb01hbmFnZXJTdGFjayYgc3RhY2ssIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2suc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAqKHN0YWNrW2ldLmdldCgp
KTsKKyAgICAgICAgaWYgKGVudHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZiAoZW50cnlbMF0tPmlzRE9NVHJhbnNhY3Rpb24oKSkgeworICAgICAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBlbnRyeS5zaXplKCk7ICsraikgeworICAgICAgICAgICAg
ICAgIFVuZG9TdGVwKiBzdGVwID0gZW50cnlbal0uZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKHN0ZXAtPmlzRE9NVHJhbnNhY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nh
c3Q8SlNET01UcmFuc2FjdGlvbio+KHN0ZXApLT52aXNpdERpY3Rpb25hcnkodmlzaXRvcik7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSlNVbmRvTWFuYWdlcjo6
dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTVW5kb01hbmFnZXIqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNVbmRvTWFuYWdlcio+KGNlbGwp
OworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNfaW5mbyk7Cisg
ICAgQ09NUElMRV9BU1NFUlQoU3RydWN0dXJlRmxhZ3MgJiBPdmVycmlkZXNWaXNpdENoaWxkcmVu
LCBPdmVycmlkZXNWaXNpdENoaWxkcmVuV2l0aG91dFNldHRpbmdGbGFnKTsKKyAgICBBU1NFUlQo
dGhpc09iamVjdC0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkub3ZlcnJpZGVzVmlzaXRDaGlsZHJl
bigpKTsKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOworICAg
IAorICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlciA9IHRoaXNPYmplY3QtPmltcGwoKTsKKyAg
ICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2sodW5kb01hbmFnZXItPnVuZG9TdGFjaygpLCB2aXNp
dG9yKTsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2sodW5kb01hbmFnZXItPnJlZG9TdGFj
aygpLCB2aXNpdG9yKTsKK30KKworSlNWYWx1ZSBKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVW5kb01hbmFnZXI6OnNfaW5m
bykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICBKU1VuZG9NYW5h
Z2VyKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVW5kb01hbmFnZXIqPihhc09iamVjdCh0aGlzVmFs
dWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1VuZG9N
YW5hZ2VyOjpzX2luZm8pOworICAgIFVuZG9NYW5hZ2VyKiBpbXBsID0gc3RhdGljX2Nhc3Q8VW5k
b01hbmFnZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIAorICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisgICAgCisgICAgSlNWYWx1ZSBkaWN0aW9u
YXJ5ID0gTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVk
KTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIGlmICghZGljdGlvbmFyeS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlRoZSBmaXJzdCBhcmd1bWVu
dCBpcyBub3Qgb2YgdHlwZSBET01UcmFuc2FjdGlvbi4iKSk7CisgICAgCisgICAgYm9vbCBtZXJn
ZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRv
Qm9vbGVhbigpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIAorICAgIFJlZlB0cjxKU0RPTVRyYW5zYWN0aW9uPiB0cmFu
c2FjdGlvbiA9IEpTRE9NVHJhbnNhY3Rpb246OmNyZWF0ZShleGVjLCBkaWN0aW9uYXJ5LmdldE9i
amVjdCgpLCB0aGlzVmFsdWUuZ2V0T2JqZWN0KCksIGN1cnJlbnRXb3JsZChleGVjKSk7CisgICAg
CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbC0+dHJhbnNhY3QodHJhbnNhY3Rp
b24sIG1lcmdlLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCit9CisKKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVRyYW5zYWN0
aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKworI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhET01XaW5k
b3cuaCIKKyNpbmNsdWRlICJWOFN0b3JhZ2UuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyB2b2lkIHdlYWtEaWN0aW9uYXJ5Q2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiwgdm9pZCogcGFyYW1ldGVyKQoreworICAgIHN0
YXRpY19jYXN0PFY4RE9NVHJhbnNhY3Rpb24qPihwYXJhbWV0ZXIpLT5kaXNwb3NlRGljdGlvbmFy
eU9iamVjdCgpOworfQorCitWOERPTVRyYW5zYWN0aW9uOjpWOERPTVRyYW5zYWN0aW9uKHY4OjpM
b2NhbDx2ODo6T2JqZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRleHRIYW5kbGUmIHdv
cmxkQ29udGV4dCkKKyAgICA6IG1fd29ybGRDb250ZXh0KHdvcmxkQ29udGV4dCkKK3sKKyAgICBt
X2RpY3Rpb25hcnkgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KGRpY3Rpb25hcnkp
OworICAgIG1fZGljdGlvbmFyeS5NYWtlV2Vhayh0aGlzLCAmd2Vha0RpY3Rpb25hcnlDYWxsYmFj
ayk7CisgICAgCisgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvcGVydHkgPSBkaWN0aW9uYXJ5
LT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGVjdXRlQXV0b21hdGljIikpOworICAgIG1f
aXNBdXRvbWF0aWMgPSAhcHJvcGVydHkuSXNFbXB0eSgpICYmIHByb3BlcnR5LT5Jc0Z1bmN0aW9u
KCk7Cit9CisKK1Bhc3NSZWZQdHI8VjhET01UcmFuc2FjdGlvbj4gVjhET01UcmFuc2FjdGlvbjo6
Y3JlYXRlKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBkaWN0aW9uYXJ5LCBjb25zdCBXb3JsZENvbnRl
eHRIYW5kbGUmIHdvcmxkQ29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4RE9N
VHJhbnNhY3Rpb24oZGljdGlvbmFyeSwgd29ybGRDb250ZXh0KSk7Cit9CisKK1Y4RE9NVHJhbnNh
Y3Rpb246On5WOERPTVRyYW5zYWN0aW9uKCkKK3sKKyAgICBkaXNwb3NlRGljdGlvbmFyeU9iamVj
dCgpOworfQorCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246OmRpc3Bvc2VEaWN0aW9uYXJ5T2JqZWN0
KCkKK3sKKyAgICBpZiAoIW1fZGljdGlvbmFyeS5Jc0VtcHR5KCkpIHsKKyAgICAgICAgbV9kaWN0
aW9uYXJ5LkRpc3Bvc2UoKTsKKyAgICAgICAgbV9kaWN0aW9uYXJ5LkNsZWFyKCk7CisgICAgfQor
fQorCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCkKK3sKKyAgICBjYWxsUHJvcGVydHkoY29udGV4dCwgImV4ZWN1dGUiKTsKK30K
Kwordm9pZCBWOERPTVRyYW5zYWN0aW9uOjpleGVjdXRlQXV0b21hdGljKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQpCit7CisgICAgY2FsbFByb3BlcnR5KGNvbnRleHQsICJleGVjdXRl
QXV0b21hdGljIik7Cit9CisKK3ZvaWQgVjhET01UcmFuc2FjdGlvbjo6dW5kbyhTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0KQoreworICAgIGNhbGxQcm9wZXJ0eShjb250ZXh0LCAidW5k
byIpOworfQorCit2b2lkIFY4RE9NVHJhbnNhY3Rpb246OnJlZG8oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCkKK3sKKyAgICBjYWxsUHJvcGVydHkoY29udGV4dCwgInJlZG8iKTsKK30K
Kwordm9pZCBWOERPTVRyYW5zYWN0aW9uOjpjYWxsUHJvcGVydHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQoreworICAgIGlmICghY29u
dGV4dCB8fCBjb250ZXh0LT5pc0pTRXhlY3V0aW9uRm9yYmlkZGVuKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgCisgICAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChjb250ZXh0LCBtX3dv
cmxkQ29udGV4dCk7CisgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKyAgICAK
KyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gZGljdGlvbmFyeSA9IHY4OjpMb2NhbDx2ODo6T2Jq
ZWN0Pjo6TmV3KG1fZGljdGlvbmFyeSk7CisgICAgaWYgKGRpY3Rpb25hcnkuSXNFbXB0eSgpIHx8
ICFkaWN0aW9uYXJ5LT5Jc09iamVjdCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gcHJvcGVydHkgPSBkaWN0aW9uYXJ5LT5HZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKHByb3BlcnR5TmFtZSkpOworICAgIGlmIChwcm9wZXJ0eS5Jc0VtcHR5KCkgfHwg
IXByb3BlcnR5LT5Jc0Z1bmN0aW9uKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICB2ODo6
TG9jYWw8djg6OkZ1bmN0aW9uPiBoYW5kbGVyRnVuY3Rpb24gPSAgdjg6OkxvY2FsPHY4OjpGdW5j
dGlvbj46OkNhc3QocHJvcGVydHkpOworICAgIAorICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBy
ZWNlaXZlciA9IHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6Q2FzdChoYW5kbGVyRnVuY3Rpb24pOwor
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzBdID0geyB9OworICAgIAorICAg
IGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGNvbnRleHQpKSB7CisgICAg
ICAgIEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1l
KCk7CisgICAgICAgIGlmIChmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKEFib3V0
VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgICAgIHByb3h5LT5jYWxsRnVuY3Rpb24oaGFuZGxl
ckZ1bmN0aW9uLCByZWNlaXZlciwgMCwgcGFyYW1ldGVycyk7CisgICAgfQorfQorCit9CisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01UcmFuc2FjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NVHJhbnNhY3Rp
b24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NVHJh
bnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhET01UcmFu
c2FjdGlvbl9oCisjZGVmaW5lIFY4RE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9f
TUFOQUdFUikKKworI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiV29ybGRD
b250ZXh0SGFuZGxlLmgiCisjaW5jbHVkZSA8djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworCitjbGFzcyBWOERPTVRyYW5zYWN0aW9u
IDogcHVibGljIERPTVRyYW5zYWN0aW9uIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxWOERPTVRyYW5zYWN0aW9uPiBjcmVhdGUodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGRpY3Rpb25h
cnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYpOworICAgIH5WOERPTVRyYW5zYWN0aW9uKCk7
CisgICAgCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gZGljdGlvbmFyeUpTT2JqZWN0
KCkgeyByZXR1cm4gbV9kaWN0aW9uYXJ5OyB9CisgICAgdm9pZCBkaXNwb3NlRGljdGlvbmFyeU9i
amVjdCgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUF1dG9tYXRpYyhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHVuZG8oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZWRvKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNBdXRv
bWF0aWMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2lzQXV0b21hdGljOyB9CisgICAgCitw
cml2YXRlOgorICAgIFY4RE9NVHJhbnNhY3Rpb24odjg6OkxvY2FsPHY4OjpPYmplY3Q+IGRpY3Rp
b25hcnksIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYpOworICAgIHZvaWQgY2FsbFByb3BlcnR5
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpOworICAg
IAorICAgIFdvcmxkQ29udGV4dEhhbmRsZSBtX3dvcmxkQ29udGV4dDsKKyAgICB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiBtX2RpY3Rpb25hcnk7CisgICAgYm9vbCBtX2lzQXV0b21hdGljOwor
fTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhVbmRvTWFuYWdlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VW5kb01hbmFn
ZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2luY2x1ZGUgIlY4VW5kb01hbmFn
ZXIuaCIKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAiVjhET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUg
IlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitzdGF0aWMgdm9pZCB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soVmVjdG9yPHY4OjpQ
ZXJzaXN0ZW50PHY4OjpWYWx1ZT4gPiYgZGljdGlvbmFyaWVzLCBjb25zdCBVbmRvTWFuYWdlclN0
YWNrJiBzdGFjaykKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YWNrLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihzdGFja1tp
XS5nZXQoKSk7CisgICAgICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChzdGVwLT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAgICAgICAgIFY4
RE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gc3RhdGljX2Nhc3Q8VjhET01UcmFuc2FjdGlv
bio+KHN0ZXApOworICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGRp
Y3Rpb25hcnkgPSB0cmFuc2FjdGlvbi0+ZGljdGlvbmFyeUpTT2JqZWN0KCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFkaWN0aW9uYXJ5LklzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICAgICAgZGlj
dGlvbmFyaWVzLmFwcGVuZChkaWN0aW9uYXJ5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KK30KKwordm9pZCBWOFVuZG9NYW5hZ2VyOjp2aXNpdERPTVdyYXBwZXIoRE9NRGF0YVN0
b3JlKiBzdG9yZSwgdm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFw
cGVyKQoreworICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlciA9IHN0YXRpY19jYXN0PFVuZG9N
YW5hZ2VyKj4ob2JqZWN0KTsKKyAgICBWZWN0b3I8djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiA+
IGRpY3Rpb25hcmllczsKKyAgICB2aXNpdFRyYW5zYWN0aW9uc0luU3RhY2soZGljdGlvbmFyaWVz
LCB1bmRvTWFuYWdlci0+dW5kb1N0YWNrKCkpOworICAgIHZpc2l0VHJhbnNhY3Rpb25zSW5TdGFj
ayhkaWN0aW9uYXJpZXMsIHVuZG9NYW5hZ2VyLT5yZWRvU3RhY2soKSk7CisgICAgaWYgKCFkaWN0
aW9uYXJpZXMuaXNFbXB0eSgpKQorICAgICAgICB2ODo6Vjg6OkFkZEltcGxpY2l0UmVmZXJlbmNl
cyh3cmFwcGVyLCBkaWN0aW9uYXJpZXMuZGF0YSgpLCBkaWN0aW9uYXJpZXMuc2l6ZSgpKTsKK30K
Kwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VW5kb01hbmFnZXI6OnRyYW5zYWN0Q2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5VbmRvTWFu
YWdlci50cmFuc2FjdCIpOworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0
dXJuIFY4UHJveHk6OnRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOworICAgIFVuZG9NYW5hZ2VyKiBpbXAgPSBWOFVuZG9NYW5hZ2VyOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKyAgICAKKyAgICBFWENFUFRJT05fQkxPQ0sodjg6OkxvY2FsPHY4OjpWYWx1
ZT4sIGRpY3Rpb25hcnksIE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGFyZ3MsIDAsIERlZmF1bHRJ
c1VuZGVmaW5lZCkpOworICAgIGlmIChkaWN0aW9uYXJ5LklzRW1wdHkoKSB8fCAhZGljdGlvbmFy
eS0+SXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnRocm93VHlwZUVycm9yKCJU
aGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IG9mIHR5cGUgRE9NVHJhbnNhY3Rpb24uIiwgYXJncy5H
ZXRJc29sYXRlKCkpOworICAgIAorICAgIEVYQ0VQVElPTl9CTE9DSyhib29sLCBtZXJnZSwgTUFZ
QkVfTUlTU0lOR19QQVJBTUVURVIoYXJncywgMSwgRGVmYXVsdElzVW5kZWZpbmVkKS0+Qm9vbGVh
blZhbHVlKCkpOworICAgIAorICAgIFJlZlB0cjxWOERPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
biA9IFY4RE9NVHJhbnNhY3Rpb246OmNyZWF0ZSh2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3Qo
ZGljdGlvbmFyeSksIFdvcmxkQ29udGV4dEhhbmRsZShVc2VDdXJyZW50V29ybGQpKTsKKyAgICAK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBpbXAtPnRyYW5zYWN0KHRyYW5zYWN0aW9u
LCBtZXJnZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgcmV0dXJuIFY4UHJveHk6OnNldERP
TUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOworICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4oKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFVORE9fTUFOQUdFUikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9z
aXRlRWRpdENvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Nv
bXBvc2l0ZUVkaXRDb21tYW5kLmgJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOwogICAgIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZWRpdEFjdGlvbjsgfQorI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisgICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgogICAgIHZvaWQgYXBwZW5kKFNpbXBsZUVk
aXRDb21tYW5kKik7CiAgICAgYm9vbCB3YXNDcmVhdGVMaW5rQ29tbWFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZWRpdEFjdGlvbiA9PSBFZGl0QWN0aW9uQ3JlYXRlTGluazsgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorRE9NVHJhbnNhY3Rpb246OkRPTVRyYW5zYWN0aW9uKCkKKyAgICA6
IG1fdW5kb01hbmFnZXIoMCkKK3sKK30KKyAgICAKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OmFwcGx5
KCkKK3sKKyAgICAvLyBUT0RPOiBpbXBsZW1lbnQgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbgor
ICAgIGlmICghaXNBdXRvbWF0aWMoKSkKKyAgICAgICAgZXhlY3V0ZShtX3VuZG9NYW5hZ2VyLT51
bmRvU2NvcGVIb3N0KCktPmRvY3VtZW50KCkpOworfQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjp1
bmFwcGx5KCkKK3sKKyAgICAvLyBUT0RPOiBpbXBsZW1lbnQgYXV0b21hdGljIERPTSB0cmFuc2Fj
dGlvbgorICAgIGlmICghaXNBdXRvbWF0aWMoKSkKKyAgICAgICAgdW5kbyhtX3VuZG9NYW5hZ2Vy
LT51bmRvU2NvcGVIb3N0KCktPmRvY3VtZW50KCkpOworICAgIAorICAgIGlmIChtX3VuZG9NYW5h
Z2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOworfQor
Cit2b2lkIERPTVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICAvLyBUT0RPOiBpbXBsZW1l
bnQgYXV0b21hdGljIERPTSB0cmFuc2FjdGlvbgorICAgIGlmICghaXNBdXRvbWF0aWMoKSkKKyAg
ICAgICAgcmVkbyhtX3VuZG9NYW5hZ2VyLT51bmRvU2NvcGVIb3N0KCktPmRvY3VtZW50KCkpOwor
ICAgIAorICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdp
c3RlclVuZG9TdGVwKHRoaXMpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgRE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBET01UcmFuc2FjdGlvbl9oCisKKyNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3Mg
VW5kb01hbmFnZXI7CisKK2NsYXNzIERPTVRyYW5zYWN0aW9uIDogcHVibGljIFVuZG9TdGVwIHsK
K3B1YmxpYzoKKyAgICBET01UcmFuc2FjdGlvbigpOworICAgIHZpcnR1YWwgfkRPTVRyYW5zYWN0
aW9uKCkgeyB9CisgICAgCisgICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgdW5hcHBseSgpIE9W
RVJSSURFOworICAgIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAgIHZpcnR1YWwg
dm9pZCBleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIGV4ZWN1dGVBdXRvbWF0aWMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgdW5kbyhTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWRvKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzQXV0b21hdGljKCkgY29uc3QgPSAwOworICAgIAorICAgIEVkaXRBY3Rpb24gZWRpdGlu
Z0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEVkaXRBY3Rpb25VbnNwZWNpZmllZDsg
fQorICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRy
dWU7IH0KKyAgICAKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIoKSBjb25zdCB7IHJldHVy
biBtX3VuZG9NYW5hZ2VyOyB9CisgICAgdm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciog
dW5kb01hbmFnZXIpIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2VyOyB9CisgICAgCitwcml2
YXRlOgorICAgIFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworfTsKKworfQorCisjZW5kaWYK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMjM5
MDgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDcgQEAKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5kb01h
bmFnZXIuaCIKICNpbmNsdWRlICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAzLDEy
IEBAIHZvaWQgRWRpdG9yOjphcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAgLy8g
T25seSByZWdpc3RlciBhIG5ldyB1bmRvIGNvbW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2VkIGlu
IGlzCiAgICAgICAgIC8vIGRpZmZlcmVudCBmcm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAgICAg
bV9sYXN0RWRpdENvbW1hbmQgPSBjbWQ7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
ICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVw
KG1fbGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9s
YXN0RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCArODI1
LDEyIEBAIHZvaWQgRWRpdG9yOjp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBtX2Fs
dGVybmF0aXZlVGV4dENvbnRyb2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdl
dCgpKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJS
ZWRvU3RlcChjbWQpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdl
cigpLT5yZWdpc3RlclJlZG9TdGVwKGNtZCk7CisjZW5kaWYgIAogICAgIHJlc3BvbmRUb0NoYW5n
ZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZvaWQg
RWRpdG9yOjpyZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rpb25B
ZnRlckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBG
cmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENv
bW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkK
ICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOwor
I2VuZGlmCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAK
QEAgLTEyNDIsMjQgKzEyNTUsNDAgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRp
b25zKCkKIAogYm9vbCBFZGl0b3I6OmNhblVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vsc2UK
KyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygp
OworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7Cisj
ZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNl
bmRpZgogfQogCiBib29sIEVkaXRvcjo6Y2FuUmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CisjZWxz
ZQorICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5SZWRv
KCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZG8oKTsK
KyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygpOwor
I2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpkaWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4
ICszMyw5IEBACiAKICNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiRE9NVHJh
bnNhY3Rpb24uaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6
OmNyZQogCiBVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoTm9kZSogaG9zdCkKICAgICA6IG1fdW5k
b1Njb3BlSG9zdChob3N0KQorICAgICwgbV9pc0luUHJvZ3Jlc3MoZmFsc2UpCiB7CiB9CiAKQEAg
LTUzLDM1ICs1NSw5OSBAQCB2b2lkIFVuZG9NYW5hZ2VyOjpkaXNjb25uZWN0KCkKICAgICBtX3Vu
ZG9TY29wZUhvc3QgPSAwOwogfQogCi12b2lkIFVuZG9NYW5hZ2VyOjp0cmFuc2FjdChjb25zdCBE
aWN0aW9uYXJ5JiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit2b2lkIFVuZG9NYW5hZ2VyOjp0
cmFuc2FjdChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiwgYm9vbCBtZXJn
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7CisgICAg
aWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIGVjID0gSU5W
QUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJlZlB0cjxVbmRv
U3RlcD4gc3RlcDsKLSAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisgICAgY2xlYXJSZWRv
KEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHRyYW5zYWN0aW9uLT5zZXRVbmRvTWFuYWdlcih0
aGlzKTsKKyAgICAKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgdHJhbnNhY3Rpb24t
PmFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoIW1l
cmdlIHx8IG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5k
KGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KSk7CisgICAgbV91bmRvU3RhY2subGFzdCgp
LT5hcHBlbmQodHJhbnNhY3Rpb24pOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaXNDb25uZWN0ZWQoKSkgeworICAgIGlmIChtX2lz
SW5Qcm9ncmVzcyB8fCAhaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUND
RVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0
cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVl
OworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3VuZG9TdGFjay5sYXN0
KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkp
CisgICAgICAgIGVudHJ5W2kgLSAxXS0+dW5hcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0g
ZmFsc2U7CisgICAgCisgICAgbV9yZWRvU3RhY2suYXBwZW5kKG1faW5Qcm9ncmVzc0VudHJ5LnJl
bGVhc2UoKSk7CisgICAgbV91bmRvU3RhY2sucmVtb3ZlTGFzdCgpOwogfQogCiB2b2lkIFVuZG9N
YW5hZ2VyOjpyZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaXNDb25uZWN0ZWQo
KSkgeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhaXNDb25uZWN0ZWQoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBp
ZiAobV9yZWRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dy
ZXNzRW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgCisgICAgbV9p
c0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0g
KihtX3JlZG9TdGFjay5sYXN0KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5z
aXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+cmVhcHBseSgpOworICAg
IG1faXNJblByb2dyZXNzID0gZmFsc2U7CisgICAgCisgICAgbV91bmRvU3RhY2suYXBwZW5kKG1f
aW5Qcm9ncmVzc0VudHJ5LnJlbGVhc2UoKSk7CisgICAgbV9yZWRvU3RhY2sucmVtb3ZlTGFzdCgp
OworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKCkKK3sKKyAgICB1bmRvKEFTU0VSVF9OT19F
WENFUFRJT04pOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWRvKCkKK3sKKyAgICByZWRvKEFT
U0VSVF9OT19FWENFUFRJT04pOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9T
dGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVz
cykgeworICAgICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihu
ZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAg
ICAgIG1fdW5kb1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgICAgICAKKyAgICAg
ICAgY2xlYXJSZWRvKEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0gZWxzZQorICAgICAgICBt
X2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpy
ZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFt
X2lzSW5Qcm9ncmVzcykgeworICAgICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkg
PSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQo
c3RlcCk7CisgICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAg
IH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOwogfQogCiB2
b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYg
KCFpc0Nvbm5lY3RlZCgpKSB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3Rl
ZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtOTAsNyArMTU2LDcgQEAgdm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKEV4
Y2VwdGlvbkNvZAogCiB2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7CisgICAgaWYgKG1faXNJblByb2dyZXNz
IHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRv
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaAkocmV2aXNpb24gMTIzOTA4KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBACiAKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgpAQCAtNDIsMzIgKzQ0LDUwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGlj
dGlvbmFyeTsKK2NsYXNzIERPTVRyYW5zYWN0aW9uOwogY2xhc3MgTm9kZTsKIAordHlwZWRlZiBW
ZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IFVuZG9NYW5hZ2VyRW50cnk7Cit0eXBlZGVmIFZlY3Rv
cjxPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gPiBVbmRvTWFuYWdlclN0YWNrOworCiBjbGFzcyBV
bmRvTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVuZG9NYW5hZ2VyPiB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IGNyZWF0ZShOb2RlKiBob3N0KTsKKyAg
ICBOb2RlKiB1bmRvU2NvcGVIb3N0KCkgY29uc3QgeyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9
CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKLSAgICB2b2lkIHRyYW5zYWN0KGNvbnN0IERpY3Rp
b25hcnkmIHRyYW5zYWN0aW9uLCBib29sIG1lcmdlLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCB0cmFuc2FjdChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiwgYm9vbCwgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgdm9pZCB1bmRvKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlZG8oRXhj
ZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdW5kbygpOworICAgIHZvaWQgcmVkbygpOwogCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgpICsgbV9y
ZWRvU3RhY2suc2l6ZSgpOyB9CisgICAgdW5zaWduZWQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3JlZG9TdGFjay5zaXplKCk7IH0KIAogICAgIHZvaWQgY2xlYXJVbmRvKEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIGNsZWFyUmVkbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVh
clVuZG9SZWRvKCk7CiAKKyAgICBib29sIGNhblVuZG8oKSBjb25zdCB7IHJldHVybiAhbV91bmRv
U3RhY2suaXNFbXB0eSgpOyB9CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3QgeyByZXR1cm4gIW1f
cmVkb1N0YWNrLmlzRW1wdHkoKTsgfQorCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NS
ZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxV
bmRvU3RlcD4pOworCisgICAgY29uc3QgVW5kb01hbmFnZXJTdGFjayYgdW5kb1N0YWNrKCkgY29u
c3QgeyByZXR1cm4gbV91bmRvU3RhY2s7IH0KKyAgICBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiBy
ZWRvU3RhY2soKSBjb25zdCB7IHJldHVybiBtX3JlZG9TdGFjazsgfQorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IFVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQo
KTsKICAgICAKICAgICBOb2RlKiBtX3VuZG9TY29wZUhvc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxV
bmRvU3RlcD4gPiBtX3VuZG9TdGFjazsKLSAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IG1f
cmVkb1N0YWNrOworICAgIFVuZG9NYW5hZ2VyU3RhY2sgbV91bmRvU3RhY2s7CisgICAgVW5kb01h
bmFnZXJTdGFjayBtX3JlZG9TdGFjazsKKyAgICBib29sIG1faXNJblByb2dyZXNzOworICAgIE93
blB0cjxVbmRvTWFuYWdlckVudHJ5PiBtX2luUHJvZ3Jlc3NFbnRyeTsKIH07CiAgICAgCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24gMTIzOTA4
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDEwICszMSwxMSBAQAogbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsK
LSAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VSCisgICAgICAgIENvbmRpdGlvbmFsPVVO
RE9fTUFOQUdFUiwKKyAgICAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCisgICAgICAgIFY4Q3Vz
dG9tSXNSZWFjaGFibGUKICAgICBdIFVuZG9NYW5hZ2VyIHsKLSAgICAgICAgdm9pZCB0cmFuc2Fj
dChpbiBEaWN0aW9uYXJ5IHRyYW5zYWN0aW9uLCBpbiBib29sZWFuIG1lcmdlKQotICAgICAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3Qo
aW4gRGljdGlvbmFyeSB0cmFuc2FjdGlvbiwgaW4gYm9vbGVhbiBtZXJnZSk7CiAKICAgICAgICAg
dm9pZCB1bmRvKCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpAQCAtNDIsNiAr
NDMsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
IAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHBvc2l0aW9uOwogCiAgICAgICAg
IHZvaWQgY2xlYXJVbmRvKCkKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkocmV2aXNpb24gMTIzOTA4KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgcmVhcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlv
bigpIGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9v
bCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0wNy0yMiAgU3Vrb2xzYWsgU2Frc2h1d29uZyAgPHN1a29sc2FrQGdvb2dsZS5jb20+
CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG9NYW5hZ2VyJ3MgdW5kbywgcmVkbywgbGVuZ3RoLCBw
b3NpdGlvbiwgY2xlYXJVbmRvLCBhbmQgY2xlYXJSZWRvCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTcyMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRCbGFja0JlcnJ5Ojpy
ZWdpc3RlclVuZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEJsYWNrQmVy
cnk6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeTo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yQ2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JD
bGllbnRCbGFja0JlcnJ5OjpjYW5SZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVu
dEJsYWNrQmVycnk6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50QmxhY2tC
ZXJyeTo6cmVkbyk6CisKIDIwMTItMDctMjcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CiAKICAg
ICAgICAgW0JsYWNrQmVycnldIFNob3VsZCBzdXBwb3J0IG9uYmVmb3JldW5sb2FkIGV2ZW50IGFu
ZCBzaG93IGNvbmZpcm1hdGlvbiBkaWFsb2cKSW5kZXg6IFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50Qmxh
Y2tCZXJyeS5jcHAJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRCbGFja0JlcnJ5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjYwLDYgKzI2MCw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6ZGlkU2V0
U2VsZWMKIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclVuZG9TdGVwKFBh
c3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgLy8gUmVtb3ZlIHRoZSBvbGRlc3QgaXRlbSBpZiB3ZSd2ZSByZWFjaGVkIHRoZSBtYXhpbXVt
IGNhcGFjaXR5IGZvciB0aGUgc3RhY2suCiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBt
YXhpbXVtVW5kb1N0YWNrRGVwdGgpCiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7
CkBAIC0yNjgsMjcgKzI2OSw0NCBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lz
dGVyVW5kCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CiAKICAgICBtX3VuZG9TdGFjay5h
cHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQog
CiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0
cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3Jl
ZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNsZWFyVW5kb1JlZG9PcGVy
YXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBtX3VuZG9TdGFjay5j
bGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICByZXR1cm4gIW1fdW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6
Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJu
ICFtX3JlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNhbkNvcHlDdXQoRnJhbWUqLCBi
b29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMwMyw2ICszMjEsNyBAQCBib29sIEVkaXRvckNs
aWVudEJsYWNrQmVycnk6OmNhblBhc3RlKEZyCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJy
eTo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8o
KSkgewogICAgICAgICBFZGl0Q29tbWFuZFN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9T
dGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBjb21tYW5kKCpiYWNrKTsKQEAg
LTMxMSwxMCArMzMwLDEyIEBAIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6dW5kbygpCiAg
ICAgICAgIC8vIFVuYXBwbHkgd2lsbCBjYWxsIHVzIGJhY2sgdG8gcHVzaCB0aGlzIGNvbW1hbmQg
b250byB0aGUgcmVkbyBzdGFjay4KICAgICAgICAgY29tbWFuZC0+dW5hcHBseSgpOwogICAgIH0K
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnJlZG8oKQogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgRWRp
dENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV9yZWRvU3RhY2suZW5kKCk7CiAgICAg
ICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0zMjcsNiArMzQ4LDcgQEAg
dm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKICAgICAgICAgY29tbWFuZC0+cmVh
cHBseSgpOwogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwogICAgIH0KKyNlbmRpZgogfQogCiBz
dGF0aWMgY29uc3QgdW5zaWduZWQgQ3RybEtleSA9IDEgPDwgMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMjM5MDgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTIyICBT
dWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBs
ZW1lbnQgdW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVu
ZG8sIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVk
aXRvckNsaWVudEltcGw6OnJlZ2lzdGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnRJbXBsOjpyZWdpc3RlclJlZG9TdGVwKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50SW1wbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnRJbXBsOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50
SW1wbDo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnVuZG8p
OgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpyZWRvKToKKwogMjAxMi0wNy0y
NyAgS2V2aW4gRWxsaXMgIDxrZXZlcnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1
bV0gQ2FsZW5kYXIgZm9yIGlucHV0IHR5cGU9ZGF0ZSBzaG91bGQgYmUgbGFyZ2VyIG9uIGRldmlj
ZXMgdGhhdCBzdXBwb3J0IHRvdWNoIGlucHV0LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOTUsMjIgKzI5NSwzMiBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OmRpZFNldFNl
bGVjdGlvblR5CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVnaXN0ZXJVbmRvU3RlcChQYXNz
UmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChtX3VuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAg
ICBtX3VuZG9TdGFjay5yZW1vdmVGaXJzdCgpOyAvLyBkcm9wIG9sZGVzdCBpdGVtIG9mZiB0aGUg
ZmFyIGVuZAogICAgIGlmICghbV9pblJlZG8pCiAgICAgICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7
CiAgICAgbV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
c3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclJlZG9T
dGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgbV9yZWRvU3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oc3RlcCk7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjbGVhclVuZG9S
ZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRv
U3RhY2suY2xlYXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJv
b2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2FuQ29weUN1dChGcmFtZSogZnJhbWUsIGJvb2wgZGVmYXVs
dFZhbHVlKSBjb25zdApAQCAtMzI5LDE2ICszMzksMjUgQEAgYm9vbCBFZGl0b3JDbGllbnRJbXBs
OjpjYW5QYXN0ZShGcmFtZSogZgogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblVuZG8oKSBj
b25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV91bmRvU3Rh
Y2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9v
bCBFZGl0b3JDbGllbnRJbXBsOjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAg
cmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dW5kbygp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAg
ICAgICBVbmRvTWFuYWdlclN0YWNrOjppdGVyYXRvciBiYWNrID0gLS1tX3VuZG9TdGFjay5lbmQo
KTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwKCpiYWNrKTsKQEAgLTM0NiwxMCArMzY1
LDEyIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6dW5kbygpCiAgICAgICAgIHN0ZXAtPnVuYXBw
bHkoKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMg
Y29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IGlmIChjYW5SZWRvKCkpIHsKICAgICAgICAgVW5kb01hbmFnZXJTdGFjazo6aXRlcmF0b3IgYmFj
ayA9IC0tbV9yZWRvU3RhY2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gc3RlcCgq
YmFjayk7CkBAIC0zNjEsNiArMzgyLDcgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWRvKCkK
ICAgICAgICAgLy8gcmVhcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFu
ZCBvbnRvIHRoZSB1bmRvIHN0YWNrLgogICAgICAgICBtX2luUmVkbyA9IGZhbHNlOwogICAgIH0K
KyNlbmRpZgogfQogCiAvLwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzOTA4KQor
KysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTItMDctMjIgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0Bnb29nbGUu
Y29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRvTWFuYWdlcidzIHVuZG8sIHJlZG8sIGxlbmd0
aCwgcG9zaXRpb24sIGNsZWFyVW5kbywgYW5kIGNsZWFyUmVkbworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVu
dEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5k
b1N0ZXApOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpyZWdpc3RlclJlZG9T
dGVwKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbyk6CisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3JDbGllbnRFZmw6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Q2xpZW50RWZsOjpyZWRvKToKKwogMjAxMi0wNy0yNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdIFJlZ3Jlc3Npb24ocjEyMzg1
OCk6IERlZmF1bHQgbmF2aWdhdGlvbiBwb2xpY3kgZGVjaXNpb24gd2FzIHN3aXRjaGVkIHRvICJy
ZWplY3QiCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGll
bnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE3OCwyMCArMTc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpkaWRTZXRTZWxlY3Rpb25U
eXAKIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5kb1N0ZXAoV1RGOjpQYXNzUmVm
UHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlm
ICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CiAgICAgdW5kb1N0YWNr
LnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgog
fQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQ
dHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVk
b1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsKKyNl
bmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMo
KQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVuZG9TdGFjay5jbGVhcigpOwog
ICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZs
OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yMDYsMjQg
KzIxNiwzNSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUGFzdGUoRnJhbWUqLCBiCiAKIGJv
b2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUmVkbygp
IGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFyZWRvU3Rh
Y2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPiBz
dGVwID0gdW5kb1N0YWNrLnRha2VGaXJzdCgpOwogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAg
ICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0
cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJlZG9TdGFjay50YWtlRmlyc3QoKTsKIApAQCAt
MjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpyZWRvKCkKICAgICAgICAgc3Rl
cC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlm
CiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUs
IFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEyMzkwOCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA3LTIyICBTdWtvbHNhayBTYWtz
aHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5kb01h
bmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVh
clJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5
NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0
b3JDbGllbnQ6OnJlZ2lzdGVyVW5kb1N0ZXApOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnQ6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnQ6OmNs
ZWFyVW5kb1JlZG9PcGVyYXRpb25zKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50Ojpj
YW5VbmRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50OjpjYW5SZWRvKToKKyAgICAg
ICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50Ojp1bmRvKToKKyAgICAgICAgKFdlYktpdDo6RWRpdG9y
Q2xpZW50OjpyZWRvKToKKwogMjAxMi0wNy0yNiAgS2F1c3R1YmggQXRyYXdhbGthciAgPGthdXN0
dWJoQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBbRFJUXSBMVEM6OiBwYWdlTnVtYmVyRm9yRWxl
bWVudEJ5SWQoKSBjb3VsZCBiZSBtb3ZlZCB0byBJbnRlcm5hbHMKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0ay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkocmV2
aXNpb24gMTIzOTA4KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRpdG9y
Q2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4LDIyICsyODgsMzIgQEAgdm9pZCBF
ZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRgogCiB2b2lkIEVkaXRvckNsaWVudDo6
cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAp
CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKHVuZG9TdGFjay5zaXplKCkg
PT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICB1bmRvU3RhY2sucmVtb3ZlRmlyc3Qo
KTsKICAgICBpZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJlZG9TdGFjay5jbGVhcigpOwogICAg
IHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShzdGVwKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50OjpjbGVhclVuZG9SZWRv
T3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgdW5kb1N0YWNr
LmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3JDbGllbnQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUqLCBib29sIGRlZmF1bHRWYWx1ZSkg
Y29uc3QKQEAgLTMxOCwyNiArMzI4LDM3IEBAIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5QYXN0ZShX
ZWJDb3JlOjpGcmEKIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhblVuZG8oKSBjb25zdAogeworI2lm
ICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhdW5kb1N0YWNrLmlzRW1wdHkoKTsK
KyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50
OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1
cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VW5k
b1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5lbmQoKSkpOwogICAgICAgICB1bmRvU3RhY2sucmVt
b3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAgICAgICAgLy8gdW5hcHBseSB3aWxsIGNhbGwgdXMg
YmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSByZWRvIHN0YWNrLgogICAgICAgICBz
dGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50Ojpy
ZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7
CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCgqKC0tcmVkb1N0YWNrLmVu
ZCgpKSk7CiAgICAgICAgIHJlZG9TdGFjay5yZW1vdmUoLS1yZWRvU3RhY2suZW5kKCkpOwpAQCAt
MzQ4LDYgKzM2OSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKICAgICAgICAgc3RlcC0+
cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFsc2U7CiAgICAgfQorI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdl
KiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMjM5MDgpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA3LTIyICBTdWtvbHNhayBTYWtzaHV3b25nICA8
c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5kb01hbmFnZXIncyB1
bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVhclJlZG8KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9FZGl0b3JDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRR
dDo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3JDbGllbnRRdDo6
Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50
UXQ6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8p
OgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yQ2xpZW50UXQ6OnVuZG8pOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yQ2xpZW50UXQ6OnJlZG8pOgorCiAyMDEyLTA3LTI3ICBDc2FiYSBPc3p0cm9n
b27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFJFR1JFU1NJT04o
cjExOTEyNyk6IHJlc2V0dGluZyB3aW5kb3cuaW50ZXJuYWxzIHNldHRpbmdzIGJldHdlZW4gdGVz
dHMgZG9lc24ndCB3b3JrIHByb3Blcmx5CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkocmV2aXNpb24gMTIzOTA4KQorKysg
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9FZGl0b3JDbGllbnRRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzOSwxMiArMjM5LDE2IEBAIGJvb2wgRWRpdG9yQ2xpZW50UXQ6OnNlbGVj
dFdvcmRCZWZvcmVNZW4KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJVbmRvU3RlcChX
VEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIEZyYW1lKiBmcmFtZSA9
IG1fcGFnZS0+ZC0+cGFnZS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgp
OwogICAgIGlmIChtX2luVW5kb1JlZG8gfHwgKGZyYW1lICYmICFmcmFtZS0+ZWRpdG9yKCktPmxh
c3RFZGl0Q29tbWFuZCgpIC8qIEhBQ0shISBEb24ndCByZWNyZWF0ZSB1bmRvcyAqLykpCiAgICAg
ICAgIHJldHVybjsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5wdXNoKG5ldyBVbmRvU3RlcFF0
KHN0ZXApKTsKICNlbmRpZiAvLyBRVF9OT19VTkRPU1RBQ0sKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OnJlZ2lzdGVyUmVk
b1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OlVuZG9TdGVwPikKQEAgLTI1Myw5ICsyNTcs
MTEgQEAgdm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVAogCiB2b2lkIEVk
aXRvckNsaWVudFF0OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShV
TkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBtX3BhZ2Ut
PnVuZG9TdGFjaygpLT5jbGVhcigpOwogI2VuZGlmCisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JD
bGllbnRRdDo6Y2FuQ29weUN1dChXZWJDb3JlOjpGcmFtZSosIGJvb2wgZGVmYXVsdFZhbHVlKSBj
b25zdApAQCAtMjcwLDM4ICsyNzYsNTAgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuUGFzdGUo
V2ViQ29yZTo6RgogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5VbmRvKCkgY29uc3QKIHsKKyNp
ZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZmRlZiBRVF9OT19VTkRPU1RBQ0sKICAgICByZXR1
cm4gZmFsc2U7CiAjZWxzZQogICAgIHJldHVybiBtX3BhZ2UtPnVuZG9TdGFjaygpLT5jYW5VbmRv
KCk7CiAjZW5kaWYKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9CiAKIGJvb2wg
RWRpdG9yQ2xpZW50UXQ6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5B
R0VSKQogI2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAg
ICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblJlZG8oKTsKICNlbmRpZgorI2Vsc2UK
KyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRRdDo6dW5k
bygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZuZGVmIFFUX05PX1VORE9TVEFD
SwogICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CiAgICAgbV9wYWdlLT51bmRvU3RhY2soKS0+dW5k
bygpOwogICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOwogI2VuZGlmCisjZW5kaWYKIH0KIAogdm9p
ZCBFZGl0b3JDbGllbnRRdDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAj
aWZuZGVmIFFUX05PX1VORE9TVEFDSwogICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CiAgICAgbV9w
YWdlLT51bmRvU3RhY2soKS0+cmVkbygpOwogICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOwogI2Vu
ZGlmCisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6c2hvdWxkSW5zZXJ0Tm9kZShO
b2RlKiBub2RlLCBSYW5nZSogcmFuZ2UsIEVkaXRvckluc2VydEFjdGlvbiBhY3Rpb24pCkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMjM5MDgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNy0yNyAgU3Vrb2xzYWsgU2Frc2h1d29uZyAg
PHN1a29sc2FrQGdvb2dsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHVuZG9NYW5hZ2VyJ3Mg
dW5kbywgcmVkbywgbGVuZ3RoLCBwb3NpdGlvbiwgY2xlYXJVbmRvLCBhbmQgY2xlYXJSZWRvCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTcyMgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZWRpdGluZy91
bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMt
Z2MuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdl
ci10cmFuc2FjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1s
OiBBZGRlZC4KKwogMjAxMi0wNy0yNyAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgog
CiAgICAgICAgIEhpdCB0ZXN0aW5nIG5lYXIgYSBjb2x1bW4gYnJlYWsgY2FuIHJldHVybiBhIHJl
c3VsdCBmcm9tIGFuIGFkamFjZW50IGNvbHVtbiB3aGVuIHRoZXJlIGlzIGxlYWRpbmcKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMt
Z2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2
aXZlcy1nYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0
ZXN0cyB0aGF0IHVuZG9NYW5hZ2VyIGtlZXBzIERPTVRyYW5zYWN0aW9uIG9iamVjdHMgYWxpdmUg
ZHVyaW5nIGl0cyBsaWZldGltZSBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGNyYXNoIGFmdGVyIHRo
ZSBHQyBydW5zLgorCitQQVNTIEFmdGVyIHRoZSBHQyBydW5zLCB1bmRvTWFuYWdlci51bmRvKCkg
c3RpbGwgd29ya3MuIAorUEFTUyBBZnRlciB0aGUgR0MgcnVucyBhZ2FpbiwgdW5kb01hbmFnZXIu
cmVkbygpIHN0aWxsIHdvcmtzLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJh
bnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAor
PCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkRPTVRyYW5zYWN0aW9uIHN1
cnZpdmVzIEdDPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCB1
bmRvTWFuYWdlciBrZWVwcyBET01UcmFuc2FjdGlvbiBvYmplY3RzIGFsaXZlIGR1cmluZyBpdHMg
bGlmZXRpbWUKK2FuZCB0aGVyZWZvcmUgZG9lcyBub3QgY3Jhc2ggYWZ0ZXIgdGhlIEdDIHJ1bnMu
CisKKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgbG9nID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCit2YXIgdSA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwor
dS50cmFuc2FjdCh7CisJImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCAr
PSAoImV4ZWN1dGVcbiIpOworCX0sCisJInVuZG8iOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVy
VGV4dCArPSAoInVuZG9cbiIpOworCX0sCisJInJlZG8iOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlu
bmVyVGV4dCArPSAoInJlZG9cbiIpOworCX0sCit9LCB0cnVlKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKwlpZiAod2luZG93LkdDQ29udHJvbGxlcikKKwkJR0NDb250cm9sbGVyLmNvbGxlY3QoKTsK
Kwl1LnVuZG8oKTsKKwkKKwlhc3NlcnRfdHJ1ZShsb2cuaW5uZXJUZXh0ID09ICJleGVjdXRlXG51
bmRvXG4iKTsKK30sICJBZnRlciB0aGUgR0MgcnVucywgdW5kb01hbmFnZXIudW5kbygpIHN0aWxs
IHdvcmtzLiIpOworCQordGVzdChmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LkdDQ29udHJvbGxl
cikKKwkJR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKwl1LnJlZG8oKTsKKwkKKwlhc3NlcnRfdHJ1
ZShsb2cuaW5uZXJUZXh0ID09ICJleGVjdXRlXG51bmRvXG5yZWRvXG4iKTsKK30sICJBZnRlciB0
aGUgR0MgcnVucyBhZ2FpbiwgdW5kb01hbmFnZXIucmVkbygpIHN0aWxsIHdvcmtzLiIpOworCits
b2cuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2Fj
dC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0ZXN0cyBVbmRvTWFu
YWdlcidzIHRyYW5zYWN0KCkgbWV0aG9kLgorCitQQVNTIGRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1
bmRvTWFuYWdlci4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0eSB0cmFuc2FjdC4gCitQ
QVNTIEFmdGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNh
Y3Rpb24uIAorUEFTUyBBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFw
cGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFuIHVuZG8gY2FsbCwg
dW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRl
ciBhbm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFu
c2FjdGlvbi4gCitQQVNTIEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMg
dGhlIGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVu
ZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIg
dGhyZWUgdHJhbnNhY3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRv
TWFuYWdlciBhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIAorUEFTUyBBZnRlciBhbiB1
bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGlu
IHRoZSBjb3JyZWN0IG9yZGVyLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2Vy
IHJlYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiAK
KwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFu
c2FjdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMjkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5VbmRvTWFuYWdlci50cmFuc2FjdCgpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
aXMgdGVzdHMgVW5kb01hbmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworPGRpdiBpZD0iZWRp
dCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7
Cit9LCAiZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiIpOworCit2YXIgdW5kb01h
bmFnZXIgPSBkb2N1bWVudC51bmRvTWFuYWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBh
c3NlcnRfaWRsX2F0dHJpYnV0ZSh1bmRvTWFuYWdlciwgInRyYW5zYWN0Iik7Cit9LCAidW5kb01h
bmFnZXIgaGFzIHByb3BlcnR5IHRyYW5zYWN0LiIpOworCit2YXIgZWRpdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJlZGl0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFn
ZXIudHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZWRpdC5pbm5lckhUTUwgKz0gIjFlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjog
ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsKKyAgICAg
ICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5u
ZXJIVE1MICs9ICIxciAiOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90
cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAiKTsKK30sICJBZnRlciBhIHRyYW5zYWN0IGNhbGws
IHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9
LAorICAgICAgICAidW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhU
TUwgKz0gIjJ1ICI7CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIGZh
bHNlKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgIik7Cit9LCAi
QWZ0ZXIgYW5vdGhlciB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSBzZWNv
bmQgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIu
dW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAiKTsK
K30sICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25k
IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVu
ZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgIik7
Cit9LCAiQWZ0ZXIgYW5vdGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUg
Zmlyc3QgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFn
ZXIucmVkbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAx
dSAxciAiKTsKK30sICJBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRo
ZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFu
YWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1
IDF1IDFyIDJyICIpOworfSwgIkFmdGVyIGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciBy
ZWFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKworZWRpdC5pbm5lckhUTUwgPSAi
IjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAg
ICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCAr
PSAiMWUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVk
byI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7Cisg
ICAgICAgIH0KKyAgICB9LCBmYWxzZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAg
ICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwg
Kz0gIjJlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJl
ZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOwor
ICAgICAgICB9CisgICAgfSwgdHJ1ZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAg
ICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwg
Kz0gIjNlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiM3UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJl
ZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzciAiOwor
ICAgICAgICB9CisgICAgfSwgdHJ1ZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gIjFlIDJlIDNlICIpOworfSwgIkFmdGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJl
IG1lcmdlZCBpbnRvIG9uZSBlbnRyeSwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJh
bnNhY3Rpb25zLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8o
KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUg
Iik7Cit9LCAiQWZ0ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRo
cmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4iKTsKKwordGVzdChmdW5jdGlv
bigpIHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gIjFlIDJlIDNlIDN1IDJ1IDF1IDFyIDJyIDNyICIpOworfSwgIkFmdGVyIGEgcmVk
byBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0
aGUgY29ycmVjdCBvcmRlci4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5k
b21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5h
Z2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTIgQEAKK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVu
Z3RoLCBhbmQgcG9zaXRpb24uCisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5h
Z2VyLiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3Ro
LCBhbmQgcG9zaXRpb24uIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZh
bHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiAKK1BBU1MgQWZ0ZXIgaW5zZXJ0
aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBw
b3NpdGlvbiBpcyAwLiAKK1BBU1MgQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIn
cyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xk
ICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIg
YW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BB
U1MgQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24g
aXMgMiwgYW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIAorUEFTUyBBZnRlciByZWRvaW5nLCB1bmRv
TWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBp
cyBhIHBsYWluICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVu
Z3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVz
dCcuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2Vy
LXVuZG8tcmVkby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+VW5kb01hbmFnZXIgaGFzIHVuZG8oKSBhbmQgcmVkbygpIHRoYXQgd29yazwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdW5kbygp
LCByZWRvKCksIGxlbmd0aCwgYW5kIHBvc2l0aW9uLgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50
RWRpdGFibGU9InRydWUiPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1
bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7Cisg
ICAgYXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7Cisg
ICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOwor
ICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIp
OworfSwgInVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5k
IHBvc2l0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51
bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBp
bml0aWFsIHZhbHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVk
aXQiKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAg
ICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7Cisg
ICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAi
QWZ0ZXIgaW5zZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0
aCBpcyAxIGFuZCBwb3NpdGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNv
bnRlbnRzKGVkaXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisg
ICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFz
c2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2Vy
dF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRp
bmcgdGhlIHRleHQsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAs
IGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRf
dHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUo
ZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRp
dC5pbm5lckhUTUwgPT0gInRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidz
IGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWlu
ICd0ZXN0Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01h
bmFnZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
Lmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3Np
dGlvbiA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAi
QWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMg
MiwgYW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShk
b2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1l
bnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gInRlc3QiKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0
aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0
Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIu
cmVkbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0
aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9
PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsK
K30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlv
biBpcyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxl
LmRpc3BsYXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156514</attachid>
            <date>2012-08-03 22:13:53 -0700</date>
            <delta_ts>2012-08-06 16:47:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120803221542.patch</filename>
            <type>text/plain</type>
            <size>79502</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDY4OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDEyLTA4LTAzICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2Mu
aHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFu
c2FjdC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2Vy
LXVuZG8tcmVkby5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5z
YWN0aW9uOjpET01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlv
bjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpnbG9iYWxPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVHJhbnNhY3Rpb246OmdldEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5z
YWN0aW9uOjpoYXNGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6
Y2FsbEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5hcHBseSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6cmVhcHBseSk6CisgICAgICAgICogYmluZGluZ3MvanMv
RE9NVHJhbnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERP
TVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjp1bmRvTWFu
YWdlcik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6c2V0VW5kb01hbmFnZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9N
YW5hZ2VyQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKiBlZGl0aW5nL0NvbXBv
c2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGw6
IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1bmFw
cGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBsaWVkRWRpdGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblVuZG8pOgorICAgICAgICAoV2ViQ29y
ZTo6RWRpdG9yOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuUmVkbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZG8pOgorICAgICAgICAqIGVkaXRpbmcvVW5kb01h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp0cmFuc2FjdCk6CisgICAgICAgIChXZWJD
b3JlOjpVbmRvTWFuYWdlcjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6
cmVkbyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2Vy
OjpyZWdpc3RlclVuZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWdp
c3RlclJlZG9TdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OmNsZWFyU3RhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRv
TWFuYWdlcjo6Y2xlYXJSZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVh
clVuZG9SZWRvKToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVIb3N0KToK
KyAgICAgICAgKFVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjps
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVu
ZG9NYW5hZ2VyOjpjYW5SZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRv
U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAg
ICAgICogZWRpdGluZy9VbmRvTWFuYWdlci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3Rl
cC5oOgorICAgICAgICAoVW5kb1N0ZXApOgorCiAyMDEyLTA4LTAzICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRGlzYWJsaW5nIGV2YWwgY2hhbmdlcyB0aGUgdGlt
aW5nIG9mIERpZENyZWF0ZVNjcmlwdENvbnRleHQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShy
ZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMzc1LDYgKzM3NSw3IEBAIFNFVChXZWJDb3JlX0lETF9GSUxFUwogICAgIGRv
bS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCiAgICAgZG9tL1doZWVsRXZlbnQuaWRsCiAKKyAg
ICBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbAogICAgIGVkaXRpbmcvVW5kb01hbmFnZXIuaWRs
CiAKICAgICBmaWxlYXBpL0Jsb2IuaWRsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3Bw
CShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOSBAQAogI2luY2x1ZGUgIkpTRE9NU3RyaW5n
TGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXAuY3BwIgogI2luY2x1ZGUgIkpTRE9N
VG9rZW5MaXN0LmNwcCIKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorI2luY2x1ZGUgIkpTRE9N
VHJhbnNhY3Rpb24uY3BwIgorI2VuZGlmCiAjaW5jbHVkZSAiSlNET01VUkwuY3BwIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmNwcCIKICNpbmNsdWRlICJKU0VsZW1lbnQuY3BwIgpJbmRleDogU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQsNiArMjY0LDcg
QEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1dlYktpdE5hbWVkRmxvdy5p
ZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgXAogICAg
ICQoV2ViQ29yZSkvZG9tL1doZWVsRXZlbnQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2VkaXRpbmcvVW5kb01hbmFnZXIu
aWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvQmxvYi5pZGwgXAogICAgICQoV2ViQ29yZSkv
ZmlsZWFwaS9GaWxlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCShyZXZp
c2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHdvcmtp
bmcgY29weSkKQEAgLTI2OSw2ICsyNjksNyBAQCBJRExfQklORElOR1MgKz0gXAogICAgICQkUFdE
L2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsIFwKICAgICAkJFBXRC9kb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmlkbCBcCiAgICAgJCRQV0QvZG9tL1doZWVsRXZlbnQuaWRsIFwKKyAgICAkJFBXRC9l
ZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbCBcCiAgICAgJCRQV0QvZWRpdGluZy9VbmRvTWFuYWdl
ci5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvQmxvYi5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkv
RmlsZS5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAx
MjQ2ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNv
cHkpCkBAIC0xNTIsNiArMTUyLDggQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRE9NU3RyaW5nTWFwLmggXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNET01Ub2tlbkxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9N
VG9rZW5MaXN0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01UcmFuc2FjdGlvbi5j
cHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01UcmFuc2FjdGlvbi5oIFwKIAlEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRE9NVVJMLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0RPTVVSTC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NV2luZG93LmNwcCBc
CkBAIC04MTksNiArODIxLDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBcCiAJJChXZWJDb3JlKS9k
b20vV2ViS2l0TmFtZWRGbG93LmlkbCBcCiAJJChXZWJDb3JlKS9kb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9kb20vV2hlZWxFdmVudC5pZGwgXAorCSQoV2ViQ29y
ZSkvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwgXAogCSQoV2ViQ29yZSkvZWRpdGluZy9VbmRv
TWFuYWdlci5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9CbG9iLmlkbCBcCiAJJChXZWJDb3Jl
KS9maWxlYXBpL0ZpbGUuaWRsIFwKQEAgLTEzNzQsNiArMTM3Nyw4IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBcCisJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uY3BwIFwKKwlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01XcmFwcGVyV29ybGQuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0ND
b250cm9sbGVyLmNwcCBcCkBAIC0xNDIxLDYgKzE0MjYsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uaCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAJU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCkBAIC0xNTQyLDYgKzE1NDgsNyBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWlu
dDMyQXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4
QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VpbnQ4Q2xh
bXBlZEFycmF5Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0
QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJL
aXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2
aXNpb24gMTI0Njg5KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5
KQpAQCAtNzYsNiArNzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGluZ3MvanMvQXJyYXlW
YWx1ZS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBcCiAgICAg
IGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgXAorICAgICBiaW5kaW5ncy9q
cy9ET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQu
Y3BwIFwKICAgICAgYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICBiaW5kaW5ncy9q
cy9HQ0NvbnRyb2xsZXIuY3BwIFwKQEAgLTExMSw2ICsxMTIsNyBAQCBTT1VSQ0VTICs9IFwKICAg
ICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVG9r
ZW5MaXN0Q3VzdG9tLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0
b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAgICAgIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuY3BwIFwKQEAgLTE5NCw2ICsxOTYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAg
YmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9K
U1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNVaW50OENsYW1wZWRB
cnJheUN1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAgICAg
IGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAgICBiaW5k
aW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApAQCAtMTI5Niw2ICsx
Mjk5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmggXAog
ICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggXAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NU3RyaW5nTWFwQ3VzdG9tLmggXAorICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb24u
aCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogICAgIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwu
aCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5Niw2ICsyOTYsMTQgQEAgSUYg
KEVOQUJMRV9XRUJfSU5URU5UUykKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxFX1VORE9f
TUFOQUdFUikKKyAgICBMSVNUIChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAgIGJpbmRp
bmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0RPTVRyYW5z
YWN0aW9uQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9t
LmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElOR1MKICAg
ICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KICkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjU2MywzICsyNTYzLDkgQEAgX19a
TjdXZWJDb3JlMjdBbHRlcm5hdGl2ZVRleHRVSUNvbnRyb2xsZQogX19aTjdXZWJDb3JlMjRUZXh0
QWx0ZXJuYXRpdmVXaXRoUmFuZ2VDMUVQMThOU1RleHRBbHRlcm5hdGl2ZXM4X05TUmFuZ2UKIF9f
Wk43V2ViQ29yZTMyY29sbGVjdERpY3RhdGlvblRleHRBbHRlcm5hdGl2ZXNFUDE4TlNBdHRyaWJ1
dGVkU3RyaW5nUk4zV1RGNlZlY3RvcklOU18yNFRleHRBbHRlcm5hdGl2ZVdpdGhSYW5nZUVMbTBF
RUUKICNlbmRpZgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKK19fWk43V2ViQ29yZThEb2N1
bWVudDExdW5kb01hbmFnZXJFdgorX19aTjdXZWJDb3JlMTFVbmRvTWFuYWdlcjRyZWRvRXYKK19f
Wk43V2ViQ29yZTExVW5kb01hbmFnZXI0dW5kb0V2CisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDEyNDY4OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29y
a2luZyBjb3B5KQpAQCAtMTAxMiw2ICsxMDEyLDcgQEAKICAgICAgICAgICAgICdkb20vV2ViS2l0
TmFtZWRGbG93LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1dlYktpdFRyYW5zaXRpb25FdmVudC5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50LmlkbCcsCisgICAgICAgICAgICAnZWRp
dGluZy9ET01UcmFuc2FjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ2VkaXRpbmcvVW5kb01hbmFn
ZXIuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0Jsb2IuaWRsJywKICAgICAgICAgICAgICdm
aWxlYXBpL0ZpbGUuaWRsJywKQEAgLTE5MjMsNiArMTkyNCw4IEBACiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0NhbGxiYWNrRnVuY3Rpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvRE9NT2JqZWN0
SGFzaFRhYmxlTWFwLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rp
b24uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCcsCkBAIC0xOTcwLDYgKzE5NzMsNyBAQAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uaCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNET01XaW5kb3dCYXNlLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5oJywKQEAgLTIwOTAsNiArMjA5NCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNVaW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWlu
dDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQ4QXJy
YXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRl
eHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1hdGlv
bkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9u
TGlzdEN1c3RvbS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ov
V2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEyNDY4OSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYxNSw2ICsyMjYx
NSw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTVW5kb01hbmFnZXIuY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+
CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9
IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTVW5kb01hbmFnZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+
CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1ZhbGlkaXR5U3RhdGUuY3BwIgogCQkJ
CT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTU1ODM5LDYgKzU1ODk1LDEwIEBACiAJCQkJ
PgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGVkaXRpbmdcRE9N
VHJhbnNhY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cZWRpdGluZ1xFZGl0QWN0aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtNjYy
MTAsNiArNjYyNzAsNjIgQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQk8L0ZpbGU+
CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVRyYW5z
YWN0aW9uLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9
IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4z
MiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wK
KwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQcm9kdWN0
aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJ
CQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NVHJhbnNhY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwv
RmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9N
V2luZG93QmFzZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC03MDA1
OCw2ICs3MDE3NCw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4K
IAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTVW5kb01hbmFn
ZXJDdXN0b20uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJ
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJ
CQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdp
bjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9v
bAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1
Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIgogCQkJ
CQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI0Njg5KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTYzLDEwICsxOTYzLDE2IEBACiAJCTdBRjExQTVBMTJFNzI3NDkwMDYxRjIz
QyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRGRjQxMTMy
NzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJN0IwOTkyRjUxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICovOyB9
OwogCQk3QjFFQTBDRTE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDQzE1NzZDNUI1
MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCMUVBMENGMTU3NkM1QjUw
MDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdl
ci5oICovOyB9OworCQk3QjM1MzdDNTE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlv
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM1
MzdDMzE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi87IH07CisJCTdC
MzUzN0M2MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM1MzdDNDE1Q0IyQ0I1MDA4M0FC
NjkgLyogSlNET01UcmFuc2FjdGlvbi5oICovOyB9OworCQk3QjM1MzkzQzE1Q0NBMEFDMDA4M0FC
NjkgLyogSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM1MzkzQjE1Q0NBMEFDMDA4M0FCNjkgLyogSlNET01U
cmFuc2FjdGlvbkN1c3RvbS5jcHAgKi87IH07CiAJCTdCOTE4NEQyMTU3NThFNDIwMDkyQUE5MyAv
KiBVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwICovOyB9
OwogCQk3QjkxODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3NThFNDIwMDky
QUE5MyAvKiBVbmRvTWFuYWdlci5oICovOyB9OworCQk3QkIzNUFFQjE1Q0NEREY0MDBGMkE2NDMg
LyogRE9NVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNw
cCAqLzsgfTsKKwkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNUFFQTE1
Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKIAkJN0UzM0NEMDExMjdG
MzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVBy
aW9yaXR5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJN0UzN0VGMkUxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5
MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwogCQk3RTk5QUY1
MTBCMTM4NDY0NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0
NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwpAQCAt
OTEyOSwxMSArOTEzNSwxOCBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVj
dG9yUnVudGltZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEE4
QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIw
IC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNVbmRvTWFuYWdlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNV
bmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMzUzN0MzMTVDQjJDQjUwMDgz
QUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QjM1MzdDNDE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMzUzOTNCMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRy
YW5zYWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QjhDMUZFNjE1Q0NFM0MyMDA0QjM1REMgLyogRE9NVHJhbnNhY3Rpb24uaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9N
YW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQxMTU3NThFNDIwMDkyQUE5MyAv
KiBVbmRvTWFuYWdlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVW5kb01hbmFnZXIuaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkIzNUFFOTE1Q0NEREY0MDBGMkE2NDMg
LyogRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkIz
NUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcg
LyogUHVyZ2VQcmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJn
ZVByaW9yaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIw
ODgwMEIyOTI1MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3Vi
cmVzb3VyY2VMb2FkZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTgz
MCw2ICsxNTg0Myw4IEBACiAJCTdCN0Y2ODZEMTU3NkJGQTEwMDNGQUJGMiAvKiBFZGl0aW5nICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QjM1MzdDMzE1
Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi8sCisJCQkJN0IzNTM3QzQx
NUNCMkNCNTAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLywKIAkJCQk3QjFFQTBDQzE1
NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi8sCiAJCQkJN0IxRUEwQ0QxNTc2
QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLywKIAkJCSk7CkBAIC0xNzA3NCw2ICsx
NzA4OSw3IEBACiAJCQkJQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVy
bmF0aXZlLmggKi8sCiAJCQkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNv
bW1hbmQuY3BwICovLAogCQkJCUNFQ0FERkM1MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25D
b21tYW5kLmggKi8sCisJCQkJN0I4QzFGRTYxNUNDRTNDMjAwNEIzNURDIC8qIERPTVRyYW5zYWN0
aW9uLmlkbCAqLywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5o
ICovLAogCQkJCTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8s
CiAJCQkJOTMzMDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0y
MDA0NSw2ICsyMDA2MSw4IEBACiAJCQkJMzE2MDIzRUYxNTMyQzQwQzAwRDUwRkY0IC8qIERpY3Rp
b25hcnkuaCAqLywKIAkJCQlCQzUzREE2MTExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFz
aFRhYmxlTWFwLmNwcCAqLywKIAkJCQlCQzUzREE1RjExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2Jq
ZWN0SGFzaFRhYmxlTWFwLmggKi8sCisJCQkJN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQzIC8qIERP
TVRyYW5zYWN0aW9uLmNwcCAqLywKKwkJCQk3QkIzNUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9N
VHJhbnNhY3Rpb24uaCAqLywKIAkJCQlCQzUzREE0NzExNDMxMzREMDAwRDgxN0UgLyogRE9NV3Jh
cHBlcldvcmxkLmNwcCAqLywKIAkJCQlCQzUzREEyRDExNDMxMjFFMDAwRDgxN0UgLyogRE9NV3Jh
cHBlcldvcmxkLmggKi8sCiAJCQkJMTQzMkU4NDgwQzUxNDkzRjAwQjE1MDBGIC8qIEdDQ29udHJv
bGxlci5jcHAgKi8sCkBAIC0yMDIxMSw2ICsyMDIyOSw3IEBACiAJCQkJOUExQjZGOTYxNTg4NjlD
ODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM2NDY0OUIx
MUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCAqLywKIAkJCQkxNEUw
QkM1NTEzNjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwICovLAorCQkJ
CTdCMzUzOTNCMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAq
LywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3Bw
ICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5o
ICovLAogCQkJCUE4MEE5NDIyMTQ5RjIyNUUwMDk4OTI5MSAvKiBKU0RPTVdpbmRvd1dlYkF1ZGlv
Q3VzdG9tLmNwcCAqLywKQEAgLTIwMzAyLDYgKzIwMzIxLDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4
RDlDMDAwOTlGQUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUx
MDUwOEQ5QzAwMDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkw
NUExNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAor
CQkJCTdCMDk5MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAq
LywKIAkJCQlGRDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3Rv
bS5jcHAgKi8sCiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJp
bmdDb250ZXh0Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyog
SlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwICovLApAQCAtMjMwODEsNiArMjMxMDEsNyBAQAog
CQkJCTE4ODYwNEI0MEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDVGRDY5RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9N
VHJhdmVyc2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEg
LyogRE9NVHJlZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAw
QTZFRDRGIC8qIERPTVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzcz
Niw2ICsyMzc1Nyw3IEBACiAJCQkJQzUxMzdDRjMxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3Ry
aW5nTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8q
IEpTRE9NU3RyaW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Njk0NTYzRDEyMTREOTdDMDAw
N0NCQUUgLyogSlNET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMzUzN0M2MTVD
QjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RTM3RTAwNjEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDNjkzMjc0MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTY1MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0yNjMzNCw2ICsyNjM1Niw3IEBACiAJCQkJOTMzQTE0QUEwQjdE
MUQwOTAwQTUzRkZEIC8qIERPTVRleHRFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE4ODYw
NEIzMEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3
NkZDMkIwQjEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTdCQjM1QUVCMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9NVHJlZVdhbGtl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTg1QzdGNDkyMEFBRjc5REMwMDQwMTRERCAvKiBET01V
SUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0RGREExMkRCQUZCODAwQTZCMjMzIC8q
IERPTVVSTC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTM0LDYgKzI2OTU3LDggQEAKIAkJCQlC
QzY0NjQ5QzExRDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0RTBCQzU2MTM2MTQ4QTgwMDJBRDEyRSAvKiBKU0RP
TVRva2VuTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjM1MzdDNTE1Q0IyQ0I1
MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjM1
MzkzQzE1Q0NBMEFDMDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyRTM3RTAwNTEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTQwM0JBMEMwOUVCMThDNzAwNzk3QzdGIC8qIEpTRE9NV2luZG93
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNjkzMjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RP
TVdpbmRvd0Jhc2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQwNiw2ICsyNzQzMSw3IEBACiAJ
CQkJOTEwODlEMzMxNEMzMzYwNTAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJOTFBMzkwNUIxNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFt
cGVkQXJyYXlDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0IxRUEwQ0UxNTc2QzVCNTAw
NjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0IwOTkyRjUx
NUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMTVDNzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVy
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDhFOUJERjEzRDRDRDJCMDA1MERDNzIgLyog
SlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRy
YW5zYWN0aW9uLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorRE9NVHJhbnNhY3Rpb246OkRPTVRyYW5zYWN0aW9uKERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdv
cmxkKQorICAgICwgbV91bmRvTWFuYWdlcigwKQoreworfQorCitQYXNzUmVmUHRyPERPTVRyYW5z
YWN0aW9uPiBET01UcmFuc2FjdGlvbjo6Y3JlYXRlKERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRX
b3JsZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTVRyYW5zYWN0aW9uKGlzb2xhdGVk
V29ybGQpKTsKK30KKworSlNET01HbG9iYWxPYmplY3QqIERPTVRyYW5zYWN0aW9uOjpnbG9iYWxP
YmplY3QoKQoreworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBtX3VuZG9N
YW5hZ2VyLT51bmRvU2NvcGVIb3N0KCktPmRvY3VtZW50KCk7CisgICAgaWYgKCFjb250ZXh0KQor
ICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0
LCBtX2lzb2xhdGVkV29ybGQpOworfQorCitzdGF0aWMgYm9vbCBnZXRQcm9wZXJ0eShKU0M6OkpT
T2JqZWN0KiBvYmplY3QsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlICZ2
YWx1ZSwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNDOjpJZGVudGlmaWVyIGlkZW50
aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lKTsKKyAgICBKU0M6OlByb3BlcnR5U2xvdCBzbG90KG9i
amVjdCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudGlmaWVy
LCBzbG90KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHZhbHVlID0gc2xvdC5nZXRWYWx1ZShl
eGVjLCBpZGVudGlmaWVyKTsKKyAgICByZXR1cm4gIWV4ZWMtPmhhZEV4Y2VwdGlvbigpOworfQor
Citib29sIERPTVRyYW5zYWN0aW9uOjpnZXRGdW5jdGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5h
bWUsIEpTQzo6SlNWYWx1ZSYgZnVuY3Rpb24sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmop
Cit7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmotPmdsb2JhbEV4ZWMoKTsK
KyAgICAKKyAgICBKU0M6OkpTT2JqZWN0KiB3cmFwcGVyID0gdG9KUyhleGVjLCBnbG9iYWxPYmos
IHRoaXMpLmdldE9iamVjdCgpOworICAgIAorICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZTsKKyAgICBp
ZiAoIWdldFByb3BlcnR5KHdyYXBwZXIsICJkYXRhIiwgdmFsdWUsIGV4ZWMpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgSlNDOjpKU09iamVjdCogZGljdGlvbmFyeSA9IHZhbHVlLmdldE9i
amVjdCgpOworICAgIAorICAgIGlmICghZ2V0UHJvcGVydHkoZGljdGlvbmFyeSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgZXhlYykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
ZnVuY3Rpb24uaXNGdW5jdGlvbigpOworfQorCitib29sIERPTVRyYW5zYWN0aW9uOjpoYXNGdW5j
dGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7CisgICAgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iaiA9IGdsb2JhbE9iamVjdCgpOworICAgIGlmICghZ2xvYmFsT2JqKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgSlNDOjpKU1ZhbHVlIGZ1bmN0aW9uOworICAgIHJl
dHVybiBnZXRGdW5jdGlvbihwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBnbG9iYWxPYmopOworfQor
Cit2b2lkIERPTVRyYW5zYWN0aW9uOjpjYWxsRnVuY3Rpb24oY29uc3QgY2hhciogcHJvcGVydHlO
YW1lKQoreworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmogPSBnbG9iYWxPYmplY3Qo
KTsKKyAgICBpZiAoIWdsb2JhbE9iaikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTQzo6
SlNWYWx1ZSBmdW5jdGlvbjsKKyAgICBpZiAoIWdldEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgZnVu
Y3Rpb24sIGdsb2JhbE9iaikpCisgICAgICAgIHJldHVybjsKKworICAgIEpTQzo6Q2FsbERhdGEg
Y2FsbERhdGE7CisgICAgSlNDOjpDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0
aW9uLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlICE9IEpTQzo6Q2FsbFR5cGVOb25lKSB7
CisgICAgICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqLT5nbG9iYWxFeGVjKCk7
CisgICAgICAgIEpTQzo6TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgSlNDOjpK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGZ1bmN0aW9uOworICAgICAgICBKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBh
cmdzKTsKKyAgICB9Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OmFwcGx5KCkKK3sKKyAgICBt
X2lzQXV0b21hdGljID0gaGFzRnVuY3Rpb24oImV4ZWN1dGVBdXRvbWF0aWMiKTsKKyAgICBpZiAo
IW1faXNBdXRvbWF0aWMpCisgICAgICAgIGNhbGxGdW5jdGlvbigiZXhlY3V0ZSIpOworfQorCit2
b2lkIERPTVRyYW5zYWN0aW9uOjp1bmFwcGx5KCkKK3sKKyAgICBpZiAoIW1faXNBdXRvbWF0aWMp
CisgICAgICAgIGNhbGxGdW5jdGlvbigidW5kbyIpOworICAgIAorICAgIGlmIChtX3VuZG9NYW5h
Z2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclJlZG9TdGVwKHRoaXMpOworfQor
Cit2b2lkIERPTVRyYW5zYWN0aW9uOjpyZWFwcGx5KCkKK3sKKyAgICBpZiAoIW1faXNBdXRvbWF0
aWMpCisgICAgICAgIGNhbGxGdW5jdGlvbigicmVkbyIpOworICAgIAorICAgIGlmIChtX3VuZG9N
YW5hZ2VyKQorICAgICAgICBtX3VuZG9NYW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOwor
fQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJh
bnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01U
cmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9N
VHJhbnNhY3Rpb25faAorI2RlZmluZSBET01UcmFuc2FjdGlvbl9oCisKKyNpZiBFTkFCTEUoVU5E
T19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisjaW5jbHVkZSAiVW5k
b1N0ZXAuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTm9kZTsKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CitjbGFzcyBVbmRv
TWFuYWdlcjsKKworY2xhc3MgRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiBjcmVhdGUoRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKyAgICAKKyAgICB2b2lkIGFwcGx5KCk7CisgICAg
dm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CisgICAgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7Cisg
ICAgCisgICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gRWRpdEFjdGlvblVuc3BlY2lmaWVkOyB9CisgICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIFVuZG9NYW5hZ2VyKiB1
bmRvTWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb01hbmFnZXI7IH0KKyAgICB2b2lkIHNl
dFVuZG9NYW5hZ2VyKFVuZG9NYW5hZ2VyKiB1bmRvTWFuYWdlcikgeyBtX3VuZG9NYW5hZ2VyID0g
dW5kb01hbmFnZXI7IH0KKworcHJpdmF0ZToKKyAgICBET01UcmFuc2FjdGlvbihET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQpOworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QoKTsKKyAgICBib29sIGdldEZ1bmN0aW9uKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlJiBmdW5jdGlvbiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBib29sIGhhc0Z1
bmN0aW9uKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSk7CisgICAgdm9pZCBjYWxsRnVuY3Rpb24o
Y29uc3QgY2hhciogcHJvcGVydHlOYW1lKTsKKworICAgIERPTVdyYXBwZXJXb3JsZCogbV9pc29s
YXRlZFdvcmxkOworICAgIFVuZG9NYW5hZ2VyKiBtX3VuZG9NYW5hZ2VyOworICAgIGJvb2wgbV9p
c0F1dG9tYXRpYzsKK307CisKK30KKworI2VuZGlmCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZpc2lv
biAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiSlNET01T
dHJpbmdMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTRE9NVHJh
bnNhY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAjaW5j
bHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hlbGwu
Y3BwIgpAQCAtMTU3LDYgKzE1OCw3IEBACiAjaW5jbHVkZSAiSlNVaW50MzJBcnJheUN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNVaW50OEFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1VpbnQ4
Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNX
ZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdENTU0tleWZy
YW1lUnVsZUN1c3RvbS5jcHAiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVO
RE9fTUFOQUdFUikKKworI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKworI2luY2x1ZGUg
IlVuZG9NYW5hZ2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworYm9vbCBKU0RPTVRyYW5zYWN0aW9uT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1
ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgSlNET01UcmFuc2FjdGlvbiogdHJhbnNhY3Rpb25XcmFwcGVy
ID0ganNDYXN0PEpTRE9NVHJhbnNhY3Rpb24qPihoYW5kbGUuZ2V0KCkuYXNDZWxsKCkpOworICAg
IERPTVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IHN0YXRpY19jYXN0PERPTVRyYW5zYWN0aW9u
Kj4odHJhbnNhY3Rpb25XcmFwcGVyLT5pbXBsKCkpOworICAgIFVuZG9NYW5hZ2VyKiB1bmRvTWFu
YWdlciA9IHRyYW5zYWN0aW9uLT51bmRvTWFuYWdlcigpOworICAgIGlmICghdW5kb01hbmFnZXIp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIXVuZG9NYW5hZ2VyLT51bmRvU2NvcGVI
b3N0KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gdmlzaXRvci5jb250YWlu
c09wYXF1ZVJvb3Qocm9vdCh1bmRvTWFuYWdlci0+dW5kb1Njb3BlSG9zdCgpKSk7Cit9CisKK30K
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Vu
ZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKworI2lu
Y2x1ZGUgIkpTVW5kb01hbmFnZXIuaCIKKworI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIK
KyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdChFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1Zh
bHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVW5kb01hbmFnZXI6OnNfaW5m
bykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICBKU1VuZG9NYW5h
Z2VyKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVW5kb01hbmFnZXIqPihhc09iamVjdCh0aGlzVmFs
dWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1VuZG9N
YW5hZ2VyOjpzX2luZm8pOworICAgIFVuZG9NYW5hZ2VyKiBpbXBsID0gc3RhdGljX2Nhc3Q8VW5k
b01hbmFnZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKworICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9IE1B
WUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAsIERlZmF1bHRJc1VuZGVmaW5lZCk7CisgICAg
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
KyAgICBpZiAoIWRpY3Rpb25hcnkuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90
IG9mIHR5cGUgRE9NVHJhbnNhY3Rpb24uIikpOworCisgICAgYm9vbCBtZXJnZShNQVlCRV9NSVNT
SU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0SXNVbmRlZmluZWQpLnRvQm9vbGVhbigpKTsK
KyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworCisgICAgUmVmUHRyPERPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IERPTVRyYW5z
YWN0aW9uOjpjcmVhdGUoY3VycmVudFdvcmxkKGV4ZWMpKTsKKyAgICBKU1ZhbHVlIHRyYW5zYWN0
aW9uV3JhcHBlciA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRyYW5z
YWN0aW9uLmdldCgpKTsKKworICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgImRhdGEiKTsK
KyAgICB0cmFuc2FjdGlvbldyYXBwZXIuZ2V0T2JqZWN0KCktPnB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGRhdGFOYW1lLCBkaWN0aW9uYXJ5LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwor
ICAgIAorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwtPnRyYW5zYWN0KHRyYW5z
YWN0aW9uLCBtZXJnZSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIGVjKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworfQorCisjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJ
KHJldmlzaW9uIDEyNDY4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsOSBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHVuYXBwbHkoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBs
eSgpIE9WRVJSSURFOwogICAgIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fZWRpdEFjdGlvbjsgfQorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisg
ICAgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7
IH0KKyNlbmRpZgogICAgIHZvaWQgYXBwZW5kKFNpbXBsZUVkaXRDb21tYW5kKik7CiAgICAgYm9v
bCB3YXNDcmVhdGVMaW5rQ29tbWFuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZWRpdEFjdGlvbiA9PSBF
ZGl0QWN0aW9uQ3JlYXRlTGluazsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RP
TVRyYW5zYWN0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNv
cmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VS
LAorICAgICAgICBKU0N1c3RvbUlzUmVhY2hhYmxlCisgICAgXSBET01UcmFuc2FjdGlvbiB7Cisg
ICAgfTsKKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTI0
Njg5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04Niw2ICs4Niw3IEBACiAjaW5jbHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgorI2luY2x1ZGUgIlVuZG9N
YW5hZ2VyLmgiCiAjaW5jbHVkZSAiVXNlclR5cGluZ0dlc3R1cmVJbmRpY2F0b3IuaCIKICNpbmNs
dWRlICJodG1sZWRpdGluZy5oIgogI2luY2x1ZGUgIm1hcmt1cC5oIgpAQCAtODAyLDggKzgwMywx
MiBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cjxDCiAgICAgICAgIC8v
IE9ubHkgcmVnaXN0ZXIgYSBuZXcgdW5kbyBjb21tYW5kIGlmIHRoZSBjb21tYW5kIHBhc3NlZCBp
biBpcwogICAgICAgICAvLyBkaWZmZXJlbnQgZnJvbSB0aGUgbGFzdCBjb21tYW5kCiAgICAgICAg
IG1fbGFzdEVkaXRDb21tYW5kID0gY21kOworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
ICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJVbmRvU3Rl
cChtX2xhc3RFZGl0Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZWxzZQorICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKG1f
bGFzdEVkaXRDb21tYW5kLT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbmRpZgogICAgIH0KIAog
ICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwpAQCAtODIwLDggKzgy
NSwxMiBAQCB2b2lkIEVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgbV9h
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLT5yZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKGNtZC5n
ZXQoKSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAwOworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVy
UmVkb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFn
ZXIoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2VuZGlmICAKICAgICByZXNwb25kVG9DaGFu
Z2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lk
IEVkaXRvcjo6cmVhcHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9u
QWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwg
RnJhbWVTZWxlY3Rpb246OkNsZWFyVHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRD
b21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkp
CiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsK
KyNlbmRpZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQog
CkBAIC0xMjQyLDI0ICsxMjU1LDQwIEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpCiAKIGJvb2wgRWRpdG9yOjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFO
QUdFUikKICAgICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNl
CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8o
KTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOwor
I2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBFZGl0b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19N
QU5BR0VSKQogICAgIHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vs
c2UKKyAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVk
bygpOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7
CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsK
KyNlbmRpZgogfQogCiB2b2lkIEVkaXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMs
OCArMzMsOSBAQAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUgIkRPTVRy
YW5zYWN0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NSw2ICs0Niw3IEBAIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IFVuZG9NYW5hZ2Vy
OjpjcmUKIAogVW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpCiAgICAgOiBtX3Vu
ZG9TY29wZUhvc3QoaG9zdCkKKyAgICAsIG1faXNJblByb2dyZXNzKGZhbHNlKQogewogfQogCkBA
IC01Myw1NCArNTUsMTM2IEBAIHZvaWQgVW5kb01hbmFnZXI6OmRpc2Nvbm5lY3QoKQogICAgIG1f
dW5kb1Njb3BlSG9zdCA9IDA7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OnRyYW5zYWN0KGNvbnN0
IERpY3Rpb25hcnkmLCBib29sLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQgVW5kb01hbmFnZXI6
OnRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uLCBib29sIG1l
cmdlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKKyAg
ICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIWlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgZWMgPSBJ
TlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgUmVmUHRyPFVu
ZG9TdGVwPiBzdGVwOwotICAgIG1fdW5kb1N0YWNrLmFwcGVuZChzdGVwKTsKKyAgICBjbGVhclJl
ZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgdHJhbnNhY3Rpb24tPnNldFVuZG9NYW5hZ2Vy
KHRoaXMpOworCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOworICAgIHRyYW5zYWN0aW9uLT5h
cHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisKKyAgICBpZiAoIW1lcmdlIHx8
IG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGFkb3B0
UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KSk7CisgICAgbV91bmRvU3RhY2subGFzdCgpLT5hcHBl
bmQodHJhbnNhY3Rpb24pOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewotICAgIGlmICghaXNDb25uZWN0ZWQoKSkgeworICAgIGlmIChtX2lzSW5Qcm9n
cmVzcyB8fCAhaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VS
UjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0cihuZXcg
VW5kb01hbmFnZXJFbnRyeSk7CisKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgY29u
c3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAqKG1fdW5kb1N0YWNrLmxhc3QoKS5nZXQoKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAg
ZW50cnlbaSAtIDFdLT51bmFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKwor
ICAgIG1fcmVkb1N0YWNrLmFwcGVuZChtX2luUHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAg
IG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6cmVkbyhF
eGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKKyAgICBpZiAo
bV9pc0luUHJvZ3Jlc3MgfHwgIWlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKG1fcmVkb1N0YWNr
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVzc0VudHJ5ID0gYWRv
cHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVl
OworICAgIGNvbnN0IFVuZG9NYW5hZ2VyRW50cnkmIGVudHJ5ID0gKihtX3JlZG9TdGFjay5sYXN0
KCkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkp
CisgICAgICAgIGVudHJ5W2kgLSAxXS0+cmVhcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0g
ZmFsc2U7CisKKyAgICBtX3VuZG9TdGFjay5hcHBlbmQobV9pblByb2dyZXNzRW50cnkucmVsZWFz
ZSgpKTsKKyAgICBtX3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFn
ZXI6OnVuZG8oKQoreworICAgIHVuZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQg
VW5kb01hbmFnZXI6OnJlZG8oKQoreworICAgIHJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9
CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3Rl
cD4gc3RlcCkKK3sKKyAgICBpZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxV
bmRvTWFuYWdlckVudHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsK
KyAgICAgICAgZW50cnktPmFwcGVuZChzdGVwKTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5k
KGVudHJ5LnJlbGVhc2UoKSk7CisKKyAgICAgICAgY2xlYXJSZWRvKEFTU0VSVF9OT19FWENFUFRJ
T04pOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXAp
OworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5k
b1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykgeworICAgICAgICBPd25Q
dHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRy
eSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAgIG1fcmVkb1N0YWNrLmFw
cGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NF
bnRyeS0+YXBwZW5kKHN0ZXApOworfQorCitzdGF0aWMgdm9pZCBjbGVhclN0YWNrKFVuZG9NYW5h
Z2VyU3RhY2smIHN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2suc2l6
ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAqKHN0
YWNrW2ldLmdldCgpKTsKKyAgICAgICAgaWYgKGVudHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAoZW50cnlbMF0tPmlzRE9NVHJhbnNhY3Rpb24oKSkgewor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBlbnRyeS5zaXplKCk7ICsraikgewor
ICAgICAgICAgICAgICAgIFVuZG9TdGVwKiBzdGVwID0gZW50cnlbal0uZ2V0KCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0ZXAtPmlzRE9NVHJhbnNhY3Rpb24oKSk7CisgICAgICAgICAgICAg
ICAgRE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gc3RhdGljX2Nhc3Q8RE9NVHJhbnNhY3Rp
b24qPihzdGVwKTsKKyAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbi0+c2V0VW5kb01hbmFnZXIo
MCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhY2suY2xlYXIoKTsK
IH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIGlmICghaXNDb25uZWN0ZWQoKSkgeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhaXND
b25uZWN0ZWQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBtX3VuZG9TdGFjay5jbGVhcigpOworICAgIGNsZWFyU3RhY2so
bV91bmRvU3RhY2spOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclJlZG8oRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7CisgICAgaWYgKG1faXNJblBy
b2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1Nf
RVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7Cisg
ICAgY2xlYXJTdGFjayhtX3JlZG9TdGFjayk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFy
VW5kb1JlZG8oKQogewotICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7Ci0gICAgbV9yZWRvU3RhY2su
Y2xlYXIoKTsKKyAgICBjbGVhclN0YWNrKG1fdW5kb1N0YWNrKTsKKyAgICBjbGVhclN0YWNrKG1f
cmVkb1N0YWNrKTsKIH0KIAogYm9vbCBVbmRvTWFuYWdlcjo6aXNDb25uZWN0ZWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaAkocmV2aXNpb24gMTI0Njg5KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSw4IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVW5kb1N0
ZXAuaCIKKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsMzIgKzQ0LDUwIEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRGljdGlvbmFyeTsKK2NsYXNzIERPTVRyYW5zYWN0aW9u
OwogY2xhc3MgTm9kZTsKIAordHlwZWRlZiBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IFVuZG9N
YW5hZ2VyRW50cnk7Cit0eXBlZGVmIFZlY3RvcjxPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gPiBV
bmRvTWFuYWdlclN0YWNrOworCiBjbGFzcyBVbmRvTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVk
PFVuZG9NYW5hZ2VyPiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VW5kb01hbmFn
ZXI+IGNyZWF0ZShOb2RlKiBob3N0KTsKKyAgICBOb2RlKiB1bmRvU2NvcGVIb3N0KCkgY29uc3Qg
eyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KLSAg
ICB2b2lkIHRyYW5zYWN0KGNvbnN0IERpY3Rpb25hcnkmIHRyYW5zYWN0aW9uLCBib29sIG1lcmdl
LCBFeGNlcHRpb25Db2RlJik7CisgICAgCisgICAgdm9pZCB0cmFuc2FjdChQYXNzUmVmUHRyPERP
TVRyYW5zYWN0aW9uPiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCB1bmRvKEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHJlZG8oRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgpICsgbV9yZWRv
U3RhY2suc2l6ZSgpOyB9CisgICAgdm9pZCB1bmRvKCk7CisgICAgdm9pZCByZWRvKCk7CisgICAg
CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV91bmRvU3RhY2suc2l6ZSgp
ICsgbV9yZWRvU3RhY2suc2l6ZSgpOyB9IAorICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOyB9CiAKICAgICB2b2lkIGNsZWFyVW5kbyhFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYpOwogICAgIHZv
aWQgY2xlYXJVbmRvUmVkbygpOworICAgIAorICAgIGJvb2wgY2FuVW5kbygpIGNvbnN0IHsgcmV0
dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7IH0KKyAgICBib29sIGNhblJlZG8oKSBjb25zdCB7
IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAgdm9pZCByZWdpc3Rl
clVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0
ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAorICAgIGNvbnN0IFVuZG9NYW5hZ2VyU3Rh
Y2smIHVuZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1N0YWNrOyB9CisgICAgY29uc3Qg
VW5kb01hbmFnZXJTdGFjayYgcmVkb1N0YWNrKCkgY29uc3QgeyByZXR1cm4gbV9yZWRvU3RhY2s7
IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBVbmRvTWFuYWdlcihOb2RlKiBob3N0KTsKICAg
ICBib29sIGlzQ29ubmVjdGVkKCk7CiAgICAgCiAgICAgTm9kZSogbV91bmRvU2NvcGVIb3N0Owot
ICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gbV91bmRvU3RhY2s7Ci0gICAgVmVjdG9yPFJl
ZlB0cjxVbmRvU3RlcD4gPiBtX3JlZG9TdGFjazsKKyAgICBVbmRvTWFuYWdlclN0YWNrIG1fdW5k
b1N0YWNrOworICAgIFVuZG9NYW5hZ2VyU3RhY2sgbV9yZWRvU3RhY2s7CisgICAgYm9vbCBtX2lz
SW5Qcm9ncmVzczsKKyAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gbV9pblByb2dyZXNzRW50
cnk7CiB9OwogICAgIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdl
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5p
ZGwJKHJldmlzaW9uIDEyNDY4OSkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw3IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1VTkRPX01BTkFHRVIKICAgICBdIFVu
ZG9NYW5hZ2VyIHsKLSAgICAgICAgdm9pZCB0cmFuc2FjdChpbiBEaWN0aW9uYXJ5IHRyYW5zYWN0
aW9uLCBpbiBib29sZWFuIG1lcmdlKQotICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CisgICAgICAgIFtDdXN0b21dIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFuc2FjdGlv
biwgaW4gYm9vbGVhbiBtZXJnZSk7CiAKICAgICAgICAgdm9pZCB1bmRvKCkKICAgICAgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOwpAQCAtNDIsNiArNDEsNyBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIHBvc2l0aW9uOwogCiAgICAgICAgIHZvaWQgY2xlYXJVbmRvKCkKICAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9VbmRvU3RlcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0
ZXAuaAkocmV2aXNpb24gMTI0Njg5KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3Rl
cC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgdW5hcHBseSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVhcHBseSgpID0gMDsKICAg
ICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0ID0gMDsKKyNpZiBFTkFC
TEUoVU5ET19NQU5BR0VSKQorICAgIHZpcnR1YWwgYm9vbCBpc0RPTVRyYW5zYWN0aW9uKCkgY29u
c3QgPSAwOworI2VuZGlmCiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEJsYWNr
QmVycnkuY3BwCShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50QmxhY2tCZXJyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2MCw2ICsyNjAsNyBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmRpZFNldFNl
bGVjCiAKIHZvaWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVnaXN0ZXJVbmRvU3RlcChQYXNz
UmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IC8vIFJlbW92ZSB0aGUgb2xkZXN0IGl0ZW0gaWYgd2UndmUgcmVhY2hlZCB0aGUgbWF4aW11bSBj
YXBhY2l0eSBmb3IgdGhlIHN0YWNrLgogICAgIGlmIChtX3VuZG9TdGFjay5zaXplKCkgPT0gbWF4
aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICBtX3VuZG9TdGFjay5yZW1vdmVGaXJzdCgpOwpA
QCAtMjY4LDI3ICsyNjksNDQgQEAgdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3Rl
clVuZAogICAgICAgICBtX3JlZG9TdGFjay5jbGVhcigpOwogCiAgICAgbV91bmRvU3RhY2suYXBw
ZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8
VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV9yZWRv
U3RhY2suYXBwZW5kKHN0ZXApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5k
aWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjbGVhclVuZG9SZWRvT3BlcmF0
aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgbV91bmRvU3RhY2suY2xl
YXIoKTsKICAgICBtX3JlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9y
Q2xpZW50QmxhY2tCZXJyeTo6Y2FuVW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJl
dHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OmNh
blJlZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAh
bV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
IH0KIAogYm9vbCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9v
bCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMDMsNiArMzIxLDcgQEAgYm9vbCBFZGl0b3JDbGll
bnRCbGFja0JlcnJ5OjpjYW5QYXN0ZShGcgogCiB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6
OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkp
IHsKICAgICAgICAgRWRpdENvbW1hbmRTdGFjazo6aXRlcmF0b3IgYmFjayA9IC0tbV91bmRvU3Rh
Y2suZW5kKCk7CiAgICAgICAgIFJlZlB0cjxVbmRvU3RlcD4gY29tbWFuZCgqYmFjayk7CkBAIC0z
MTEsMTAgKzMzMCwxMiBAQCB2b2lkIEVkaXRvckNsaWVudEJsYWNrQmVycnk6OnVuZG8oKQogICAg
ICAgICAvLyBVbmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhpcyBjb21tYW5kIG9u
dG8gdGhlIHJlZG8gc3RhY2suCiAgICAgICAgIGNvbW1hbmQtPnVuYXBwbHkoKTsKICAgICB9Cisj
ZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRCbGFja0JlcnJ5OjpyZWRvKCkKIHsKKyNpZiAh
RU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIEVkaXRD
b21tYW5kU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fcmVkb1N0YWNrLmVuZCgpOwogICAgICAg
ICBSZWZQdHI8VW5kb1N0ZXA+IGNvbW1hbmQoKmJhY2spOwpAQCAtMzI3LDYgKzM0OCw3IEBAIHZv
aWQgRWRpdG9yQ2xpZW50QmxhY2tCZXJyeTo6cmVkbygpCiAgICAgICAgIGNvbW1hbmQtPnJlYXBw
bHkoKTsKICAgICAgICAgbV9pblJlZG8gPSBmYWxzZTsKICAgICB9CisjZW5kaWYKIH0KIAogc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEN0cmxLZXkgPSAxIDw8IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gMTI0Njg5
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5NSwyMiArMjk1LDMyIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6
ZGlkU2V0U2VsZWN0aW9uVHkKIAogdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZWdpc3RlclVuZG9T
dGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKG1fdW5kb1N0YWNrLnNpemUoKSA9PSBtYXhpbXVtVW5kb1N0YWNrRGVwdGgp
CiAgICAgICAgIG1fdW5kb1N0YWNrLnJlbW92ZUZpcnN0KCk7IC8vIGRyb3Agb2xkZXN0IGl0ZW0g
b2ZmIHRoZSBmYXIgZW5kCiAgICAgaWYgKCFtX2luUmVkbykKICAgICAgICAgbV9yZWRvU3RhY2su
Y2xlYXIoKTsKICAgICBtX3VuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlZ2lz
dGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICBtX3JlZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEltcGw6OmNs
ZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICBtX3VuZG9TdGFjay5jbGVhcigpOwogICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisjZW5kaWYK
IH0KIAogYm9vbCBFZGl0b3JDbGllbnRJbXBsOjpjYW5Db3B5Q3V0KEZyYW1lKiBmcmFtZSwgYm9v
bCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0zMjksMTYgKzMzOSwyNSBAQCBib29sIEVkaXRvckNs
aWVudEltcGw6OmNhblBhc3RlKEZyYW1lKiBmCiAKIGJvb2wgRWRpdG9yQ2xpZW50SW1wbDo6Y2Fu
VW5kbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmV0dXJuICFt
X3VuZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgog
fQogCiBib29sIEVkaXRvckNsaWVudEltcGw6OmNhblJlZG8oKSBjb25zdAogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOworI2Vs
c2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRJbXBs
Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuVW5kbygp
KSB7CiAgICAgICAgIFVuZG9NYW5hZ2VyU3RhY2s6Oml0ZXJhdG9yIGJhY2sgPSAtLW1fdW5kb1N0
YWNrLmVuZCgpOwogICAgICAgICBSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAoKmJhY2spOwpAQCAtMzQ2
LDEwICszNjUsMTIgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjp1bmRvKCkKICAgICAgICAgc3Rl
cC0+dW5hcHBseSgpOwogICAgICAgICAvLyB1bmFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1
c2ggdGhpcyBjb21tYW5kIG9udG8gdGhlIHJlZG8gc3RhY2suCiAgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFH
RVIpCiAgICAgaWYgKGNhblJlZG8oKSkgewogICAgICAgICBVbmRvTWFuYWdlclN0YWNrOjppdGVy
YXRvciBiYWNrID0gLS1tX3JlZG9TdGFjay5lbmQoKTsKICAgICAgICAgUmVmUHRyPFVuZG9TdGVw
PiBzdGVwKCpiYWNrKTsKQEAgLTM2MSw2ICszODIsNyBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6
OnJlZG8oKQogICAgICAgICAvLyByZWFwcGx5IHdpbGwgY2FsbCB1cyBiYWNrIHRvIHB1c2ggdGhp
cyBjb21tYW5kIG9udG8gdGhlIHVuZG8gc3RhY2suCiAgICAgICAgIG1faW5SZWRvID0gZmFsc2U7
CiAgICAgfQorI2VuZGlmCiB9CiAKIC8vCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9FZGl0b3JDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEyNDY4OSkK
KysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEVmbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OCwyMCArMTc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZs
OjpkaWRTZXRTZWxlY3Rpb25UeXAKIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnJlZ2lzdGVyVW5k
b1N0ZXAoV1RGOjpQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQogeworI2lmICFFTkFCTEUoVU5E
T19NQU5BR0VSKQogICAgIGlmICghbV9pc0luUmVkbykKICAgICAgICAgcmVkb1N0YWNrLmNsZWFy
KCk7CiAgICAgdW5kb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6cmVnaXN0ZXJSZWRv
U3RlcChXVEY6OlBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRP
X01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLnByZXBlbmQoc3RlcCk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudEVmbDo6Y2xlYXJV
bmRvUmVkb09wZXJhdGlvbnMoKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHVu
ZG9TdGFjay5jbGVhcigpOwogICAgIHJlZG9TdGFjay5jbGVhcigpOworI2VuZGlmCiB9CiAKIGJv
b2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5Db3B5Q3V0KEZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUp
IGNvbnN0CkBAIC0yMDYsMjQgKzIxNiwzNSBAQCBib29sIEVkaXRvckNsaWVudEVmbDo6Y2FuUGFz
dGUoRnJhbWUqLCBiCiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpjYW5VbmRvKCkgY29uc3QKIHsK
KyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gIXVuZG9TdGFjay5pc0VtcHR5
KCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNs
aWVudEVmbDo6Y2FuUmVkbygpIGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgcmV0dXJuICFyZWRvU3RhY2suaXNFbXB0eSgpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CisjZW5kaWYKIH0KIAogdm9pZCBFZGl0b3JDbGllbnRFZmw6OnVuZG8oKQogeworI2lmICFFTkFC
TEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjYW5VbmRvKCkpIHsKICAgICAgICAgUmVmUHRyPFdl
YkNvcmU6OlVuZG9TdGVwPiBzdGVwID0gdW5kb1N0YWNrLnRha2VGaXJzdCgpOwogICAgICAgICBz
dGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9yQ2xpZW50RWZs
OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2FuUmVkbygp
KSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4gc3RlcCA9IHJlZG9TdGFjay50
YWtlRmlyc3QoKTsKIApAQCAtMjMyLDYgKzI1Myw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50RWZsOjpy
ZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFs
c2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50RWZsOjpzaG91bGRJbnNl
cnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlv
bikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0VkaXRvckNsaWVudEd0
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRWRp
dG9yQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gMTI0Njg5KQorKysgU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg4
LDIyICsyODgsMzIgQEAgdm9pZCBFZGl0b3JDbGllbnQ6OmRpZFNldFNlbGVjdGlvblR5cGVzRgog
CiB2b2lkIEVkaXRvckNsaWVudDo6cmVnaXN0ZXJVbmRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
aWYgKHVuZG9TdGFjay5zaXplKCkgPT0gbWF4aW11bVVuZG9TdGFja0RlcHRoKQogICAgICAgICB1
bmRvU3RhY2sucmVtb3ZlRmlyc3QoKTsKICAgICBpZiAoIW1faXNJblJlZG8pCiAgICAgICAgIHJl
ZG9TdGFjay5jbGVhcigpOwogICAgIHVuZG9TdGFjay5hcHBlbmQoc3RlcCk7CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShzdGVwKTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6cmVn
aXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXApCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgcmVkb1N0YWNrLmFwcGVuZChzdGVwKTsK
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHN0ZXApOworI2VuZGlmCiB9CiAKIHZvaWQgRWRpdG9y
Q2xpZW50OjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01B
TkFHRVIpCiAgICAgdW5kb1N0YWNrLmNsZWFyKCk7CiAgICAgcmVkb1N0YWNrLmNsZWFyKCk7Cisj
ZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNhbkNvcHlDdXQoV2ViQ29yZTo6RnJhbWUq
LCBib29sIGRlZmF1bHRWYWx1ZSkgY29uc3QKQEAgLTMxOCwyNiArMzI4LDM3IEBAIGJvb2wgRWRp
dG9yQ2xpZW50OjpjYW5QYXN0ZShXZWJDb3JlOjpGcmEKIAogYm9vbCBFZGl0b3JDbGllbnQ6OmNh
blVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiAh
dW5kb1N0YWNrLmlzRW1wdHkoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpjYW5SZWRvKCkgY29uc3QKIHsKKyNpZiAhRU5BQkxFKFVO
RE9fTUFOQUdFUikKICAgICByZXR1cm4gIXJlZG9TdGFjay5pc0VtcHR5KCk7CisjZWxzZQorICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudDo6dW5kbygpCiB7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNhblVuZG8oKSkgewogICAgICAg
ICBSZWZQdHI8V2ViQ29yZTo6VW5kb1N0ZXA+IHN0ZXAoKigtLXVuZG9TdGFjay5lbmQoKSkpOwog
ICAgICAgICB1bmRvU3RhY2sucmVtb3ZlKC0tdW5kb1N0YWNrLmVuZCgpKTsKICAgICAgICAgLy8g
dW5hcHBseSB3aWxsIGNhbGwgdXMgYmFjayB0byBwdXNoIHRoaXMgY29tbWFuZCBvbnRvIHRoZSBy
ZWRvIHN0YWNrLgogICAgICAgICBzdGVwLT51bmFwcGx5KCk7CiAgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgRWRpdG9yQ2xpZW50OjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBpZiAoY2FuUmVkbygpKSB7CiAgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpVbmRvU3RlcD4g
c3RlcCgqKC0tcmVkb1N0YWNrLmVuZCgpKSk7CiAgICAgICAgIHJlZG9TdGFjay5yZW1vdmUoLS1y
ZWRvU3RhY2suZW5kKCkpOwpAQCAtMzQ4LDYgKzM2OSw3IEBAIHZvaWQgRWRpdG9yQ2xpZW50Ojpy
ZWRvKCkKICAgICAgICAgc3RlcC0+cmVhcHBseSgpOwogICAgICAgICBtX2lzSW5SZWRvID0gZmFs
c2U7CiAgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgRWRpdG9yQ2xpZW50OjpzaG91bGRJbnNlcnRO
b2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwgRWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xpZW50UXQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRWRpdG9yQ2xp
ZW50UXQuY3BwCShyZXZpc2lvbiAxMjQ2ODkpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0VkaXRvckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM5LDEyICsyMzks
MTYgQEAgYm9vbCBFZGl0b3JDbGllbnRRdDo6c2VsZWN0V29yZEJlZm9yZU1lbgogCiB2b2lkIEVk
aXRvckNsaWVudFF0OjpyZWdpc3RlclVuZG9TdGVwKFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpV
bmRvU3RlcD4gc3RlcCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRf
Tk9fVU5ET1NUQUNLCiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlLT5kLT5wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CiAgICAgaWYgKG1faW5VbmRvUmVkbyB8
fCAoZnJhbWUgJiYgIWZyYW1lLT5lZGl0b3IoKS0+bGFzdEVkaXRDb21tYW5kKCkgLyogSEFDSyEh
IERvbid0IHJlY3JlYXRlIHVuZG9zICovKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcGFnZS0+
dW5kb1N0YWNrKCktPnB1c2gobmV3IFVuZG9TdGVwUXQoc3RlcCkpOwogI2VuZGlmIC8vIFFUX05P
X1VORE9TVEFDSworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oc3RlcCk7CisjZW5kaWYKIH0KIAog
dm9pZCBFZGl0b3JDbGllbnRRdDo6cmVnaXN0ZXJSZWRvU3RlcChXVEY6OlBhc3NSZWZQdHI8V2Vi
Q29yZTo6VW5kb1N0ZXA+KQpAQCAtMjUzLDkgKzI1NywxMSBAQCB2b2lkIEVkaXRvckNsaWVudFF0
OjpyZWdpc3RlclJlZG9TdGVwKFdUCiAKIHZvaWQgRWRpdG9yQ2xpZW50UXQ6OmNsZWFyVW5kb1Jl
ZG9PcGVyYXRpb25zKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRf
Tk9fVU5ET1NUQUNLCiAgICAgcmV0dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNsZWFyKCk7CiAj
ZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVkaXRvckNsaWVudFF0OjpjYW5Db3B5Q3V0KFdlYkNv
cmU6OkZyYW1lKiwgYm9vbCBkZWZhdWx0VmFsdWUpIGNvbnN0CkBAIC0yNzAsMzggKzI3Niw1MCBA
QCBib29sIEVkaXRvckNsaWVudFF0OjpjYW5QYXN0ZShXZWJDb3JlOjpGCiAKIGJvb2wgRWRpdG9y
Q2xpZW50UXQ6OmNhblVuZG8oKSBjb25zdAogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
I2lmZGVmIFFUX05PX1VORE9TVEFDSwogICAgIHJldHVybiBmYWxzZTsKICNlbHNlCiAgICAgcmV0
dXJuIG1fcGFnZS0+dW5kb1N0YWNrKCktPmNhblVuZG8oKTsKICNlbmRpZgorI2Vsc2UKKyAgICBy
ZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0b3JDbGllbnRRdDo6Y2FuUmVkbygp
IGNvbnN0CiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAjaWZkZWYgUVRfTk9fVU5ET1NU
QUNLCiAgICAgcmV0dXJuIGZhbHNlOwogI2Vsc2UKICAgICByZXR1cm4gbV9wYWdlLT51bmRvU3Rh
Y2soKS0+Y2FuUmVkbygpOwogI2VuZGlmCisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0Ojp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9f
TUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAgICAgbV9pblVuZG9SZWRvID0gdHJ1
ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT51bmRvKCk7CiAgICAgbV9pblVuZG9SZWRvID0g
ZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiB2b2lkIEVkaXRvckNsaWVudFF0OjpyZWRvKCkK
IHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICNpZm5kZWYgUVRfTk9fVU5ET1NUQUNLCiAg
ICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKICAgICBtX3BhZ2UtPnVuZG9TdGFjaygpLT5yZWRvKCk7
CiAgICAgbV9pblVuZG9SZWRvID0gZmFsc2U7CiAjZW5kaWYKKyNlbmRpZgogfQogCiBib29sIEVk
aXRvckNsaWVudFF0OjpzaG91bGRJbnNlcnROb2RlKE5vZGUqIG5vZGUsIFJhbmdlKiByYW5nZSwg
RWRpdG9ySW5zZXJ0QWN0aW9uIGFjdGlvbikKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDY4OSkKKysr
IExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTA4LTAzICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBJbXBsZW1lbnQgdW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0
aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5h
Z2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5z
YWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91
bmRvbWFuYWdlci10cmFuc2FjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9t
YW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTA4LTAzICBBbWkgRmlzY2htYW4gIDxmaXNjaG1hbkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgW0Nocm9taXVtXSBMYXlvdXQgVGVzdCBodHRwL3Rlc3RzL21lZGlhL21lZGlhLXNv
dXJjZS93ZWJtL3ZpZGVvLW1lZGlhLXNvdXJjZS0qLmh0bWwgaXMgZmxha3kKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
ZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1n
Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0
aGF0IHVuZG9NYW5hZ2VyIGtlZXBzIERPTVRyYW5zYWN0aW9uIG9iamVjdHMgYWxpdmUgZHVyaW5n
IGl0cyBsaWZldGltZSBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGNyYXNoIGFmdGVyIHRoZSBHQyBy
dW5zLgorCitQQVNTIEFmdGVyIHRoZSBHQyBydW5zLCB1bmRvTWFuYWdlci51bmRvKCkgc3RpbGwg
d29ya3MuIAorUEFTUyBBZnRlciB0aGUgR0MgcnVucyBhZ2FpbiwgdW5kb01hbmFnZXIucmVkbygp
IHN0aWxsIHdvcmtzLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9k
b210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rp
b24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorPCFkb2N0
eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkRPTVRyYW5zYWN0aW9uIHN1cnZpdmVz
IEdDPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCB1bmRvTWFu
YWdlciBrZWVwcyBET01UcmFuc2FjdGlvbiBvYmplY3RzIGFsaXZlIGR1cmluZyBpdHMgbGlmZXRp
bWUKK2FuZCB0aGVyZWZvcmUgZG9lcyBub3QgY3Jhc2ggYWZ0ZXIgdGhlIEdDIHJ1bnMuCisKKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xvZycpOworCit2YXIgdSA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwordS50cmFu
c2FjdCh7CisJImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAoImV4
ZWN1dGVcbiIpOworCX0sCisJInVuZG8iOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCAr
PSAoInVuZG9cbiIpOworCX0sCisJInJlZG8iOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4
dCArPSAoInJlZG9cbiIpOworCX0sCit9LCB0cnVlKTsKKwordGVzdChmdW5jdGlvbigpIHsKKwlp
ZiAod2luZG93LkdDQ29udHJvbGxlcikKKwkJR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKwl1LnVu
ZG8oKTsKKwkKKwlhc3NlcnRfdHJ1ZShsb2cuaW5uZXJUZXh0ID09ICJleGVjdXRlXG51bmRvXG4i
KTsKK30sICJBZnRlciB0aGUgR0MgcnVucywgdW5kb01hbmFnZXIudW5kbygpIHN0aWxsIHdvcmtz
LiIpOworCQordGVzdChmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LkdDQ29udHJvbGxlcikKKwkJ
R0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKwl1LnJlZG8oKTsKKwkKKwlhc3NlcnRfdHJ1ZShsb2cu
aW5uZXJUZXh0ID09ICJleGVjdXRlXG51bmRvXG5yZWRvXG4iKTsKK30sICJBZnRlciB0aGUgR0Mg
cnVucyBhZ2FpbiwgdW5kb01hbmFnZXIucmVkbygpIHN0aWxsIHdvcmtzLiIpOworCitsb2cuc3R5
bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91
bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidz
IHRyYW5zYWN0KCkgbWV0aG9kLgorCitQQVNTIGRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRvTWFu
YWdlci4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0eSB0cmFuc2FjdC4gCitQQVNTIEFm
dGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rpb24u
IAorUEFTUyBBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxpZXMg
dGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01h
bmFnZXIgdW5hcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90
aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlv
bi4gCitQQVNTIEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIGZp
cnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVuZG9NYW5h
Z2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgdGhyZWUg
dHJhbnNhY3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdl
ciBhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIAorUEFTUyBBZnRlciBhbiB1bmRvIGNh
bGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBj
b3JyZWN0IG9yZGVyLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBw
bGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiAKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
dW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMjkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRv
TWFuYWdlci50cmFuc2FjdCgpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90
ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVz
dHMgVW5kb01hbmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworPGRpdiBpZD0iZWRpdCIgY29u
dGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9LCAi
ZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiIpOworCit2YXIgdW5kb01hbmFnZXIg
PSBkb2N1bWVudC51bmRvTWFuYWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRf
aWRsX2F0dHJpYnV0ZSh1bmRvTWFuYWdlciwgInRyYW5zYWN0Iik7Cit9LCAidW5kb01hbmFnZXIg
aGFzIHByb3BlcnR5IHRyYW5zYWN0LiIpOworCit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJlZGl0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJh
bnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRp
dC5pbm5lckhUTUwgKz0gIjFlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsKKyAgICAgICAgfSwK
KyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1M
ICs9ICIxciAiOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVk
aXQuaW5uZXJIVE1MID09ICIxZSAiKTsKK30sICJBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVuZG9N
YW5hZ2VyIGFwcGxpZXMgdGhlIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9LAorICAg
ICAgICAidW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0g
IjJ1ICI7CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBlZGl0LmlubmVySFRNTCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgIik7Cit9LCAiQWZ0ZXIg
YW5vdGhlciB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSBzZWNvbmQgdHJh
bnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5kbygp
OworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAiKTsKK30sICJB
ZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5z
YWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgIik7Cit9LCAi
QWZ0ZXIgYW5vdGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmlyc3Qg
dHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIucmVk
bygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAxciAi
KTsKK30sICJBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBmaXJz
dCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci5y
ZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1IDFy
IDJyICIpOworfSwgIkFmdGVyIGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxp
ZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKworZWRpdC5pbm5lckhUTUwgPSAiIjsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJl
eGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUg
IjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGVkaXQuaW5uZXJIVE1MICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAg
IH0KKyAgICB9LCBmYWxzZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAi
ZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJl
ICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAgICAg
ICB9CisgICAgfSwgdHJ1ZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAi
ZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjNl
ICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiM3UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzciAiOworICAgICAg
ICB9CisgICAgfSwgdHJ1ZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFl
IDJlIDNlICIpOworfSwgIkFmdGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1lcmdl
ZCBpbnRvIG9uZSBlbnRyeSwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rp
b25zLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAg
ICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgIik7Cit9
LCAiQWZ0ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVlIHRy
YW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4iKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gIjFlIDJlIDNlIDN1IDJ1IDF1IDFyIDJyIDNyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxs
LCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUgY29y
cmVjdCBvcmRlci4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3Vu
ZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTIgQEAKK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBh
bmQgcG9zaXRpb24uCisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAK
K1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBhbmQg
cG9zaXRpb24uIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVlcyBm
b3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiAKK1BBU1MgQWZ0ZXIgaW5zZXJ0aW5nIHRl
eHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3NpdGlv
biBpcyAwLiAKK1BBU1MgQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5n
dGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0
Jy4gCitQQVNTIEFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBv
c2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0
ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwg
YW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIAorUEFTUyBBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdl
cidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBs
YWluICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlz
IDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIAor
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8t
cmVkby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+VW5kb01hbmFnZXIgaGFzIHVuZG8oKSBhbmQgcmVkbygpIHRoYXQgd29yazwvdGl0bGU+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdW5kbygpLCByZWRv
KCksIGxlbmd0aCwgYW5kIHBvc2l0aW9uLgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFi
bGU9InRydWUiPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBo
YXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNz
ZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAgYXNz
ZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAgYXNz
ZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAgIGFz
c2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOworfSwg
InVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBvc2l0
aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVu
ZG9NYW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFu
YWdlci5wb3NpdGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFs
IHZhbHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsK
KyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7CisgICAgZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAgICAKKyAg
ICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7CisgICAgYXNz
ZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAiQWZ0ZXIg
aW5zZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAx
IGFuZCBwb3NpdGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRz
KGVkaXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAgYXNz
ZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90
cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRpbmcgdGhl
IHRleHQsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0
aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShk
b2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1l
bnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5l
ckhUTUwgPT0gInRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0
aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0
Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIu
dW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0
aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9
PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiQWZ0ZXIg
dW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwgYW5k
IHRoZSByZXN1bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGRv
Y3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5k
b01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gInRlc3QiKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAy
IGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4iKTsK
KyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygp
OworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAy
KTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAwKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30sICJB
ZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAw
LCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156794</attachid>
            <date>2012-08-06 16:47:34 -0700</date>
            <delta_ts>2012-08-07 20:44:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120806164910.patch</filename>
            <type>text/plain</type>
            <size>72665</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA4LTA2ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2Mu
aHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFu
c2FjdC5odG1sCisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2Vy
LXVuZG8tcmVkby5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5jcHA6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5wcmk6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAg
KiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpET01UcmFuc2FjdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRyYW5zYWN0aW9uOjphcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2Fj
dGlvbjo6dW5hcHBseSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6cmVhcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6ZXhlY1N0YXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjpnZXRGdW5jdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpET01UcmFuc2FjdGlvbjo6aGFzRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VHJhbnNhY3Rpb246OmNhbGxGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NVHJh
bnNhY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERPTVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRyYW5zYWN0aW9uOjp1bmRvTWFuYWdlcik6
CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6c2V0VW5kb01hbmFnZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVRyYW5zYWN0aW9uT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6dW5kb01hbmFnZXIpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBlZGl0aW5n
L0NvbXBvc2l0ZUVkaXRDb21tYW5kLmg6CisgICAgICAgICogZWRpdGluZy9ET01UcmFuc2FjdGlv
bi5pZGw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVhcHBsaWVk
RWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmNhblVuZG8pOgorICAgICAgICAo
V2ViQ29yZTo6RWRpdG9yOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuUmVk
byk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlZG8pOgorICAgICAgICAqIGVkaXRpbmcv
VW5kb01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dHJhbnNhY3QpOgorICAgICAgICAoV2ViQ29yZTo6VW5k
b01hbmFnZXI6OnVuZG8pOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG8pOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXApOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXApOgorICAgICAgICAoV2Vi
Q29yZTo6Y2xlYXJTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJV
bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAg
ICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kb1JlZG8pOgorICAgICAgICAqIGVkaXRp
bmcvVW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVW5kb01hbmFn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnVuZG9TY29wZUhvc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlVuZG9NYW5hZ2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpj
YW5SZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU3RhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnJlZG9TdGFjayk6CisgICAgICAgICogZWRpdGlu
Zy9VbmRvTWFuYWdlci5pZGw6CisgICAgICAgICogZWRpdGluZy9VbmRvU3RlcC5oOgorICAgICAg
ICAoVW5kb1N0ZXApOgorCiAyMDEyLTA4LTA2ICBObydhbSBSb3NlbnRoYWwgIDxub2FtLnJvc2Vu
dGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlvbiBzaG91bGRu
J3QgdXNlIEhhc2hNYXA8U3RyaW5nPgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEyNDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0zODMsNiArMzgzLDcgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgZG9tL1dlYktp
dFRyYW5zaXRpb25FdmVudC5pZGwKICAgICBkb20vV2hlZWxFdmVudC5pZGwKIAorICAgIGVkaXRp
bmcvRE9NVHJhbnNhY3Rpb24uaWRsCiAgICAgZWRpdGluZy9VbmRvTWFuYWdlci5pZGwKIAogICAg
IGZpbGVhcGkvQmxvYi5pZGwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5jcHAJKHJldmlz
aW9uIDEyNDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAwLDYgKzEwMCw5IEBACiAjaW5jbHVkZSAiSlNET01TdHJpbmdMaXN0LmNw
cCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcC5jcHAiCiAjaW5jbHVkZSAiSlNET01Ub2tlbkxp
c3QuY3BwIgorI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisjaW5jbHVkZSAiSlNET01UcmFuc2Fj
dGlvbi5jcHAiCisjZW5kaWYKICNpbmNsdWRlICJKU0RPTVVSTC5jcHAiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3cuY3BwIgogI2luY2x1ZGUgIkpTRWxlbWVudC5jcHAiCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEyNDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2ICsyNjUsNyBAQCBCSU5E
SU5HX0lETFMgPSBcCiAgICAgJChXZWJDb3JlKS9kb20vV2ViS2l0TmFtZWRGbG93LmlkbCBcCiAg
ICAgJChXZWJDb3JlKS9kb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS9kb20vV2hlZWxFdmVudC5pZGwgXAorICAgICQoV2ViQ29yZSkvZWRpdGluZy9ET01UcmFu
c2FjdGlvbi5pZGwgXAogICAgICQoV2ViQ29yZSkvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwgXAog
ICAgICQoV2ViQ29yZSkvZmlsZWFwaS9CbG9iLmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBp
L0ZpbGUuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5wcmkJKHJldmlzaW9uIDEy
NDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMjY5LDYgKzI2OSw3IEBAIElETF9CSU5ESU5HUyArPSBcCiAgICAgJCRQV0QvZG9tL1dl
YktpdE5hbWVkRmxvdy5pZGwgXAogICAgICQkUFdEL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aWRsIFwKICAgICAkJFBXRC9kb20vV2hlZWxFdmVudC5pZGwgXAorICAgICQkUFdEL2VkaXRpbmcv
RE9NVHJhbnNhY3Rpb24uaWRsIFwKICAgICAkJFBXRC9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbCBc
CiAgICAgJCRQV0QvZmlsZWFwaS9CbG9iLmlkbCBcCiAgICAgJCRQV0QvZmlsZWFwaS9GaWxlLmlk
bCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyNDgxNikK
KysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTE1Miw2ICsxNTIsOCBAQCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNET01TdHJpbmdNYXAuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RPTVRva2VuTGlzdC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01Ub2tlbkxp
c3QuaCBcCisJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVRyYW5zYWN0aW9uLmNwcCBcCisJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVRyYW5zYWN0aW9uLmggXAogCURlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNET01VUkwuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9N
VVJMLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01XaW5kb3cuY3BwIFwKQEAgLTgy
Miw2ICs4MjQsNyBAQCBkb21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL2RvbS9XZWJL
aXROYW1lZEZsb3cuaWRsIFwKIAkkKFdlYkNvcmUpL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQu
aWRsIFwKIAkkKFdlYkNvcmUpL2RvbS9XaGVlbEV2ZW50LmlkbCBcCisJJChXZWJDb3JlKS9lZGl0
aW5nL0RPTVRyYW5zYWN0aW9uLmlkbCBcCiAJJChXZWJDb3JlKS9lZGl0aW5nL1VuZG9NYW5hZ2Vy
LmlkbCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0Jsb2IuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVh
cGkvRmlsZS5pZGwgXApAQCAtMTM4MSw2ICsxMzg0LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwIFwKQEAgLTE0MjgsNiArMTQzMyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKQEAgLTE1NDksNiArMTU1NSw3IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50MzJBcnJh
eUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVWludDhDbGFtcGVkQXJy
YXlDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRp
b25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdEFuaW1h
dGlvbkxpc3RDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktp
dENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0
LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAx
MjQ4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03
Niw2ICs3Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9BcnJheVZhbHVlLmNw
cCBcCiAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwIFwKICAgICAgYmluZGlu
Z3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0RPTVRy
YW5zYWN0aW9uLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAgXAog
ICAgICBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0dDQ29u
dHJvbGxlci5jcHAgXApAQCAtMTExLDYgKzExMiw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5k
aW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNE
T01TdHJpbmdNYXBDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RD
dXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKICAgICAgYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dT
aGVsbC5jcHAgXApAQCAtMTk0LDYgKzE5Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5n
cy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTVWludDhB
cnJheUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3Vz
dG9tLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwIFwKICAg
ICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIFwKICAgICAgYmluZGlu
Z3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCkBAIC0xMjk2LDYgKzEyOTksNyBA
QCBIRUFERVJTICs9IFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaCBcCiAgICAgYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01TdHJp
bmdNYXBDdXN0b20uaCBcCisgICAgYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbi5oIFwKICAg
ICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIFwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDEyNDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL1Vz
ZUpTQy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjk2LDYgKzI5NiwxNCBAQCBJRiAoRU5BQkxF
X1dFQl9JTlRFTlRTKQogICAgICkKIEVORElGICgpCiAKK0lGIChFTkFCTEVfVU5ET19NQU5BR0VS
KQorICAgIExJU1QgKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKKyAgICAgICAgYmluZGluZ3MvanMv
RE9NVHJhbnNhY3Rpb24uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25D
dXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCisg
ICAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQgU0NSSVBUU19CSU5ESU5HUwogICAgICR7V0VC
Q09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQogKQpJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQkocmV2aXNpb24gMTI0ODE2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEzLDYgKzEwMTMsNyBAQAogICAgICAgICAgICAgJ2Rv
bS9XZWJLaXROYW1lZEZsb3cuaWRsJywKICAgICAgICAgICAgICdkb20vV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1doZWVsRXZlbnQuaWRsJywKKyAgICAgICAg
ICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZWRpdGluZy9V
bmRvTWFuYWdlci5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvQmxvYi5pZGwnLAogICAgICAg
ICAgICAgJ2ZpbGVhcGkvRmlsZS5pZGwnLApAQCAtMTkyOCw2ICsxOTI5LDggQEAKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9E
T01PYmplY3RIYXNoVGFibGVNYXAuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01U
cmFuc2FjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9u
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwJywKQEAgLTE5NzUsNiArMTk3OCw3IEBA
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmgnLApAQCAtMjA5NSw2ICsyMDk5LDcgQEAKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
anMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pT
VWludDhBcnJheUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVW5kb01h
bmFnZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVy
aW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0
QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNXZWJLaXRB
bmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTI0ODE2KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTQxMTgs
NiArNDExOCw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTRE9NVHJhbnNhY3Rpb24uY3BwIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVD
b25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NVHJhbnNhY3Rpb24uaCIKKwkJCQk+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTVVSTC5jcHAi
CiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtMjI2MTUsNiArMjI2NzEsNjIgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9N
YW5hZ2VyLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRl
YnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8
VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNl
fFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9v
bAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWly
b19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
Lz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkv
PgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZp
bGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNWYWxpZGl0eVN0YXRlLmNwcCIKIAkJCQk+CiAJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCkBAIC02Mzk4Miw2ICs2NDA5NCw2MiBAQAogCQkJCQk+CiAJCQkJ
PC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcRE9N
VHJhbnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxs
fFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8
VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlBy
b2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcRE9NVHJhbnNhY3Rpb24uaCIKKwkJCQkJPgorCQkJ
CTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERP
TVdyYXBwZXJXb3JsZC5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02
NjIyNiw2ICs2NjM5NCw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmls
ZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NVHJh
bnNhY3Rpb25DdXN0b20uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
CS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdf
QWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJ
CQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9
IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJ
PgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTcwMDc0LDYgKzcwMjk0LDU4IEBACiAJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAiCisJCQkJCT4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjQ4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE5NjMsMTAgKzE5
NjMsMTYgQEAKIAkJN0FGMTFBNUExMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVB
Z2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FG
MTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovOyB9Owog
CQk3QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRBOEExMTMxQzI3NjAw
MzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUZENEZGNDExMzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0
RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QjA5OTJG
NTE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjA5OTJGNDE1QUNGMUFEMDBFRDZE
MjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi87IH07CiAJCTdCMUVBMENFMTU3NkM1QjUw
MDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5h
Z2VyLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0YxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVB
MENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggKi87IH07CisJCTdCMzUzN0M1
MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzUzN0MzMTVDQjJDQjUwMDgzQUI2OSAv
KiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJN0IzNTM3QzYxNUNCMkNCNTAwODNBQjY5
IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdCMzUzN0M0MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9u
LmggKi87IH07CisJCTdCMzUzOTNDMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9u
Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdCMzUzOTNCMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAq
LzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NENGMTU3NThF
NDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCOTE4NEQzMTU3NThFNDIw
MDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmgg
Ki87IH07CisJCTdCQjM1QUVCMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNUFFOTE1
Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovOyB9OworCQk3QkIzNUFFQzE1
Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAvKiBET01U
cmFuc2FjdGlvbi5oICovOyB9OwogCQk3RTMzQ0QwMTEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQ
cmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RTM3RUYyRTEzMzkyMDg4MDBC
MjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVz
b3VyY2VMb2FkZXJDRi5jcHAgKi87IH07CiAJCTdFOTlBRjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBX
aW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEzODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0Zv
Y3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CkBAIC05MTI5LDExICs5MTM1LDE4IEBACiAJ
CTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yUnVudGltZUFnZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBT
Y3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGRDRGRjMxMTMy
NzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0IxRUEwQ0MxNTc2QzVC
NTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNVbmRvTWFuYWdlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0IzNTM3QzMxNUNCMkNCNTAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rp
b24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01UcmFuc2Fj
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMzUzN0M0MTVDQjJDQjUw
MDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTRE9NVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
N0IzNTM5M0IxNUNDQTBBQzAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNET01UcmFuc2FjdGlvbkN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCOEMxRkU2MTVDQ0UzQzIwMDRC
MzVEQyAvKiBET01UcmFuc2FjdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NVHJh
bnNhY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODRDRjE1NzU4
RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVW5kb01hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0I5MTg0RDExNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBVbmRvTWFuYWdlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTdCQjM1QUU5MTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01UcmFuc2FjdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAv
KiBET01UcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01U
cmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzYwMTI4MDYwMDc4
QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1cmdlUHJpb3JpdHkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzN0VGMkQxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291
cmNlTG9hZGVyQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3Vi
cmVzb3VyY2VMb2FkZXJDRi5jcHA7IHBhdGggPSBjZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODM1LDYgKzE1ODQ4LDggQEAKIAkJN0I3
RjY4NkQxNTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRpbmcgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdCMzUzN0MzMTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RP
TVRyYW5zYWN0aW9uLmNwcCAqLywKKwkJCQk3QjM1MzdDNDE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNE
T01UcmFuc2FjdGlvbi5oICovLAogCQkJCTdCMUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1Vu
ZG9NYW5hZ2VyLmNwcCAqLywKIAkJCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRv
TWFuYWdlci5oICovLAogCQkJKTsKQEAgLTE3MDc5LDYgKzE3MDk0LDcgQEAKIAkJCQlDRUNBREZD
MzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0ZXJuYXRpdmUuaCAqLywKIAkJCQlDRUNB
REZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQ29tbWFuZC5jcHAgKi8sCiAJCQkJQ0VD
QURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuaCAqLywKKwkJCQk3QjhD
MUZFNjE1Q0NFM0MyMDA0QjM1REMgLyogRE9NVHJhbnNhY3Rpb24uaWRsICovLAogCQkJCTkzMzA5
RDkzMDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0QWN0aW9uLmggKi8sCiAJCQkJOTMzMDlEOTQwOTlF
NjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5NTA5OUU2NDkx
MDA1NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLywKQEAgLTIwMDU1LDYgKzIwMDcxLDggQEAKIAkJ
CQkzMTYwMjNFRjE1MzJDNDBDMDBENTBGRjQgLyogRGljdGlvbmFyeS5oICovLAogCQkJCUJDNTNE
QTYxMTE0MzE0QkQwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuY3BwICovLAogCQkJ
CUJDNTNEQTVGMTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCAqLywK
KwkJCQk3QkIzNUFFOTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uY3BwICovLAor
CQkJCTdCQjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oICovLAogCQkJ
CUJDNTNEQTQ3MTE0MzEzNEQwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuY3BwICovLAogCQkJ
CUJDNTNEQTJEMTE0MzEyMUUwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQuaCAqLywKIAkJCQkx
NDMyRTg0ODBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmNwcCAqLywKQEAgLTIwMjIx
LDYgKzIwMjM5LDcgQEAKIAkJCQk5QTFCNkY5NjE1ODg2OUM4MDAxMUE4QzQgLyogSlNET01TdHJp
bmdMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzY0NjQ5QjExRDgyMzhDMDA2NDU1QjAgLyogSlNE
T01TdHJpbmdNYXBDdXN0b20uY3BwICovLAogCQkJCTE0RTBCQzU1MTM2MTQ4QTgwMDJBRDEyRSAv
KiBKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgKi8sCisJCQkJN0IzNTM5M0IxNUNDQTBBQzAwODNB
QjY5IC8qIEpTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUJDRDlDMjVFMEMxN0FB
NjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5jcHAgKi8sCiAJCQkJNjUyRkJCQkIwREUy
N0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggKi8sCiAJCQkJQTgwQTk0MjIxNDlG
MjI1RTAwOTg5MjkxIC8qIEpTRE9NV2luZG93V2ViQXVkaW9DdXN0b20uY3BwICovLApAQCAtMjAz
MTIsNiArMjAzMzEsNyBAQAogCQkJCTQ5RUVDRjc2MTA1MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQz
MkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3NTEwNTA4RDlDMDAwOTlGQUIgLyogSlNV
aW50OEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk5MUEzOTA1QTE0QzBGNjExMDBGNjc5MDEgLyog
SlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi8sCisJCQkJN0IwOTkyRjQxNUFDRjFBRDAw
RUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICovLAogCQkJCUZEOEU5QkRFMTNENENE
MkIwMDUwREM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0
QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwICov
LAogCQkJCTMxOUU2ODg2MTMyN0M5MTEwMDRBQzkxQSAvKiBKU1dlYktpdEFuaW1hdGlvbkN1c3Rv
bS5jcHAgKi8sCkBAIC0yMzA5MSw2ICsyMzExMSw3IEBACiAJCQkJMTg4NjA0QjQwRjJFNjU0QTAw
MEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNUZENjlFMDEyODQ1RDQz
MDBCMkJFQjMgLyogRE9NVGltZVN0YW1wLmggaW4gSGVhZGVycyAqLywKIAkJCQk3NkZDMkIwQzEy
MzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQk3QkIz
NUFFQzE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBET01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3MDBBNkVENEYgLyogRE9NVHJlZVdhbGtl
ckludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIzNzQ2LDYgKzIzNzY3LDcgQEAKIAkJCQlD
NTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyogSlNET01TdHJpbmdMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXAuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTc2OTQ1NjNEMTIxNEQ5N0MwMDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlz
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IzNTM3QzYxNUNCMkNCNTAwODNBQjY5IC8qIEpTRE9N
VHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIz
MyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0
NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjUyRkJCQkMwREUy
N0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9tLmggaW4gSGVhZGVycyAqLywKQEAgLTI2
MzQ0LDYgKzI2MzY2LDcgQEAKIAkJCQk5MzNBMTRBQTBCN0QxRDA5MDBBNTNGRkQgLyogRE9NVGV4
dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8q
IERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkx
QSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0JCMzVBRUIxNUNDRERG
NDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg1NTI2
Q0QzMEFCMEI3REEwMDAzMDJFQSAvKiBET01UcmVlV2Fsa2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODVDN0Y0OTIwQUFGNzlEQzAwNDAxNEREIC8qIERPTVVJRXZlbnQubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRTM3REZEQTEyREJBRkI4MDBBNkIyMzMgLyogRE9NVVJMLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMjY5NDQsNiArMjY5NjcsOCBAQAogCQkJCUJDNjQ2NDlDMTFEODIzOEMwMDY0NTVC
MCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Njk0NTYz
QzEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMTRFMEJDNTYxMzYxNDhBODAwMkFEMTJFIC8qIEpTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTdCMzUzN0M1MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5z
YWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCMzUzOTNDMTVDQ0EwQUMwMDgzQUI2OSAv
KiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFMzdFMDA1
MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDAz
QkEwQzA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5kb3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTI3NDE2LDYgKzI3NDQxLDcgQEAKIAkJCQk5MTA4OUQzMzE0QzMzNjA1MDA1
QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5MUEz
OTA1QjE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QjFFQTBDRTE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjA5OTJGNTE1QUNGMUFEMDBFRDZEMjAgLyogSlNV
bmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNUM3NzA5NDEwMEQzQ0E4
MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEODJE
N0Y3MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
VHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKworI2lmIEVO
QUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpT
RE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNp
bmNsdWRlICJVbmRvTWFuYWdlci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCitET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rpb24oRE9NV3Jh
cHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIDogbV9pc29sYXRlZFdvcmxkKGlzb2xhdGVk
V29ybGQpCisgICAgLCBtX3VuZG9NYW5hZ2VyKDApCit7Cit9CisKK1Bhc3NSZWZQdHI8RE9NVHJh
bnNhY3Rpb24+IERPTVRyYW5zYWN0aW9uOjpjcmVhdGUoRE9NV3JhcHBlcldvcmxkKiBpc29sYXRl
ZFdvcmxkKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NVHJhbnNhY3Rpb24oaXNvbGF0
ZWRXb3JsZCkpOworfQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjphcHBseSgpCit7CisgICAgbV9p
c0F1dG9tYXRpYyA9IGhhc0Z1bmN0aW9uKCJleGVjdXRlQXV0b21hdGljIik7CisgICAgaWYgKCFt
X2lzQXV0b21hdGljKQorICAgICAgICBjYWxsRnVuY3Rpb24oImV4ZWN1dGUiKTsKK30KKwordm9p
ZCBET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7CisgICAgaWYgKCFtX2lzQXV0b21hdGljKQor
ICAgICAgICBjYWxsRnVuY3Rpb24oInVuZG8iKTsKKyAgICAKKyAgICBpZiAobV91bmRvTWFuYWdl
cikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsKK30KKwor
dm9pZCBET01UcmFuc2FjdGlvbjo6cmVhcHBseSgpCit7CisgICAgaWYgKCFtX2lzQXV0b21hdGlj
KQorICAgICAgICBjYWxsRnVuY3Rpb24oInJlZG8iKTsKKyAgICAKKyAgICBpZiAobV91bmRvTWFu
YWdlcikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJVbmRvU3RlcCh0aGlzKTsKK30K
KworRXhlY1N0YXRlKiBET01UcmFuc2FjdGlvbjo6ZXhlY1N0YXRlKCkKK3sKKyAgICBpZiAoIW1f
dW5kb01hbmFnZXIgfHwgIW1fdW5kb01hbmFnZXItPnVuZG9TY29wZUhvc3QoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IG1fdW5kb01h
bmFnZXItPnVuZG9TY29wZUhvc3QoKS0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWNvbnRleHQgfHwg
Y29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChj
b250ZXh0LCBtX2lzb2xhdGVkV29ybGQpOworICAgIGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7Cit9CisK
K2Jvb2wgRE9NVHJhbnNhY3Rpb246OmdldEZ1bmN0aW9uKGNvbnN0IGNoYXIqIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSYgZnVuY3Rpb24sIEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU09iamVjdCogd3JhcHBlciA9IGFzT2JqZWN0
KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0aGlzKSk7CisKKyAgICBKU1ZhbHVlIGRhdGEgPSB3
cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiZGF0YSIpKTsKKyAgICBpZiAoIWRh
dGEuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZnVuY3Rpb24gPSBh
c09iamVjdChkYXRhKS0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHlOYW1lKSk7
CisgICAgcmV0dXJuIGZ1bmN0aW9uLmlzRnVuY3Rpb24oKTsKK30KKworYm9vbCBET01UcmFuc2Fj
dGlvbjo6aGFzRnVuY3Rpb24oY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQoreworICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGV4ZWNTdGF0ZSgpOworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgSlNWYWx1ZSBmdW5jdGlvbjsKKyAgICByZXR1cm4gZ2V0RnVuY3Rpb24o
cHJvcGVydHlOYW1lLCBmdW5jdGlvbiwgZXhlYyk7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246
OmNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7CisgICAgRXhlY1N0YXRl
KiBleGVjID0gZXhlY1N0YXRlKCk7CisgICAgaWYgKCFleGVjKQorICAgICAgICByZXR1cm47CisK
KyAgICBKU1ZhbHVlIGZ1bmN0aW9uOworICAgIGlmICghZ2V0RnVuY3Rpb24ocHJvcGVydHlOYW1l
LCBmdW5jdGlvbiwgZXhlYykpCisgICAgICAgIHJldHVybjsKKworICAgIENhbGxEYXRhIGNhbGxE
YXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxE
YXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZnVuY3Rpb247CisgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z3M7CisgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwg
Y2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOworICAgIH0KK30KKworfQorCisj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24u
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTVRyYW5zYWN0aW9u
X2gKKyNkZWZpbmUgRE9NVHJhbnNhY3Rpb25faAorCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikK
KworI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgorI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5v
ZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVW5kb01hbmFnZXI7CisK
K2NsYXNzIERPTVRyYW5zYWN0aW9uIDogcHVibGljIFVuZG9TdGVwIHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4gY3JlYXRlKERPTVdyYXBwZXJXb3JsZCog
aXNvbGF0ZWRXb3JsZCk7CisgICAgCisgICAgdm9pZCBhcHBseSgpOworICAgIHZvaWQgdW5hcHBs
eSgpIE9WRVJSSURFOworICAgIHZvaWQgcmVhcHBseSgpIE9WRVJSSURFOworICAgIAorICAgIEVk
aXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEVkaXRBY3Rp
b25VbnNwZWNpZmllZDsgfQorICAgIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIo
KSBjb25zdCB7IHJldHVybiBtX3VuZG9NYW5hZ2VyOyB9CisgICAgdm9pZCBzZXRVbmRvTWFuYWdl
cihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5hZ2Vy
OyB9CisKK3ByaXZhdGU6CisgICAgRE9NVHJhbnNhY3Rpb24oRE9NV3JhcHBlcldvcmxkKiBpc29s
YXRlZFdvcmxkKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0YXRlKCk7CisgICAgYm9vbCBn
ZXRGdW5jdGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSYgZnVuY3Rp
b24sIEpTQzo6RXhlY1N0YXRlKik7CisgICAgYm9vbCBoYXNGdW5jdGlvbihjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUpOworICAgIHZvaWQgY2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIHByb3BlcnR5
TmFtZSk7CisKKyAgICBET01XcmFwcGVyV29ybGQqIG1faXNvbGF0ZWRXb3JsZDsKKyAgICBVbmRv
TWFuYWdlciogbV91bmRvTWFuYWdlcjsKKyAgICBib29sIG1faXNBdXRvbWF0aWM7Cit9OworCit9
CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24gMTI0ODE2KQorKysgU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNiArNjQsNyBAQAogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NVG9r
ZW5MaXN0Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93Q3Vz
dG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmNwcCIKQEAgLTE1Nyw2ICsxNTgs
NyBAQAogI2luY2x1ZGUgIkpTVWludDMyQXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWlu
dDhBcnJheUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5j
cHAiCisjaW5jbHVkZSAiSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJL
aXRBbmltYXRpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0QW5pbWF0aW9uTGlzdEN1
c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2Fj
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNs
dWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jvb2wgSlNET01U
cmFuc2FjdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxK
U0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQoreworICAg
IEpTRE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uV3JhcHBlciA9IGpzQ2FzdDxKU0RPTVRyYW5z
YWN0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBET01UcmFuc2FjdGlvbiogdHJh
bnNhY3Rpb24gPSBzdGF0aWNfY2FzdDxET01UcmFuc2FjdGlvbio+KHRyYW5zYWN0aW9uV3JhcHBl
ci0+aW1wbCgpKTsKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFnZXIgPSB0cmFuc2FjdGlvbi0+
dW5kb01hbmFnZXIoKTsKKyAgICBpZiAoIXVuZG9NYW5hZ2VyKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgaWYgKCF1bmRvTWFuYWdlci0+dW5kb1Njb3BlSG9zdCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNPcGFxdWVSb290KHJvb3QodW5k
b01hbmFnZXItPnVuZG9TY29wZUhvc3QoKSkpOworfQorCit9CisKKyNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJKU1VuZG9NYW5hZ2Vy
LmgiCisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9F
cnJvci5oPgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0pTVmFsdWUgSlNVbmRvTWFuYWdlcjo6dHJhbnNhY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKCZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pKQorICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZXhlYyk7CisgICAgSlNVbmRvTWFuYWdlciogY2FzdGVkVGhpcyA9IGpz
Q2FzdDxKU1VuZG9NYW5hZ2VyKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dD
X09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNVbmRvTWFuYWdlcjo6c19pbmZvKTsKKyAg
ICBVbmRvTWFuYWdlciogaW1wbCA9IHN0YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKworICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihl
eGVjKSk7CisKKyAgICBKU1ZhbHVlIGRpY3Rpb25hcnkgPSBNQVlCRV9NSVNTSU5HX1BBUkFNRVRF
UihleGVjLCAwLCBEZWZhdWx0SXNVbmRlZmluZWQpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFkaWN0aW9uYXJ5
LmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiVGhlIGZpcnN0IGFyZ3VtZW50IGlzIG5vdCBvZiB0eXBlIERPTVRyYW5zYWN0
aW9uLiIpKTsKKworICAgIGJvb2wgbWVyZ2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywg
MSwgRGVmYXVsdElzVW5kZWZpbmVkKS50b0Jvb2xlYW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIFJlZlB0cjxE
T01UcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24gPSBET01UcmFuc2FjdGlvbjo6Y3JlYXRlKGN1cnJl
bnRXb3JsZChleGVjKSk7CisgICAgSlNPYmplY3QqIHRyYW5zYWN0aW9uV3JhcHBlciA9IGFzT2Jq
ZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRyYW5zYWN0aW9uLmdl
dCgpKSk7CisKKyAgICBJZGVudGlmaWVyIGRhdGFOYW1lKGV4ZWMsICJkYXRhIik7CisgICAgdHJh
bnNhY3Rpb25XcmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFtZSwg
ZGljdGlvbmFyeSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGltcGwtPnRyYW5zYWN0KHRyYW5zYWN0aW9uLCBtZXJnZSwgZWMpOworICAg
IGlmIChlYykKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkocmV2aXNpb24gMTI0ODE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjYyLDExICs2NjIsNiBAQCBEb2N1bWVudDo6fkRvY3VtZW50
KCkKICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsgLy8gV2UgbmVlZCB0byBkZXN0b3J5IENTU0Zv
bnRTZWxlY3RvciBiZWZvcmUgZGVzdHJveWluZyBtX2NhY2hlZFJlc291cmNlTG9hZGVyLgogICAg
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAotI2lmIEVOQUJMRShVTkRPX01BTkFH
RVIpCi0gICAgaWYgKG1fdW5kb01hbmFnZXIpCi0gICAgICAgIG1fdW5kb01hbmFnZXItPmRpc2Nv
bm5lY3QoKTsKLSNlbmRpZgotCiAgICAgLy8gV2UgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEoKSBo
ZXJlIHNpbmNlIGEgRG9jdW1lbnQgY2xhc3MgaW5oZXJpdHMgVHJlZVNjb3BlCiAgICAgLy8gYXMg
d2VsbCBhcyBOb2RlLiBTZWUgYSBjb21tZW50IG9uIFRyZWVTY29wZS5oIGZvciB0aGUgcmVhc29u
LgogICAgIGlmIChoYXNSYXJlRGF0YSgpKQpAQCAtNjEzMiw3ICs2MTI3LDcgQEAgdm9pZCBEb2N1
bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5TwogUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4g
RG9jdW1lbnQ6OnVuZG9NYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fdW5kb01hbmFnZXIpCi0gICAg
ICAgIG1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICBt
X3VuZG9NYW5hZ2VyID0gVW5kb01hbmFnZXI6OmNyZWF0ZSh0aGlzLCB0aGlzKTsKICAgICByZXR1
cm4gbV91bmRvTWFuYWdlcjsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
cmV2aXNpb24gMTI0ODE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjQ1LDcgKzIyNDUsNyBAQCBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBF
bGVtZW50Ojp1bmRvTWFuCiAgICAgfQogICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS0+bV91bmRvTWFuYWdlcikKLSAgICAg
ICAgZGF0YS0+bV91bmRvTWFuYWdlciA9IFVuZG9NYW5hZ2VyOjpjcmVhdGUodGhpcyk7CisgICAg
ICAgIGRhdGEtPm1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKGRvY3VtZW50KCks
IHRoaXMpOwogICAgIHJldHVybiBkYXRhLT5tX3VuZG9NYW5hZ2VyOwogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lvbiAx
MjQ4MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB1bmFwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVSUklE
RTsKICAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biBtX2VkaXRBY3Rpb247IH0KKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wgaXNE
T01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYK
ICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCopOwogICAgIGJvb2wgd2FzQ3JlYXRl
TGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRBY3Rpb24gPT0gRWRpdEFjdGlvbkNy
ZWF0ZUxpbms7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlv
bi5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5zYWN0
aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAgICAg
SlNDdXN0b21Jc1JlYWNoYWJsZQorICAgIF0gRE9NVHJhbnNhY3Rpb24geworICAgIH07CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDEyNDgxNikKKysrIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNiAr
ODYsNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgog
I2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiaHRtbGVk
aXRpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTgwMiw4ICs4MDMsMTIgQEAgdm9pZCBF
ZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8QwogICAgICAgICAvLyBPbmx5IHJlZ2lz
dGVyIGEgbmV3IHVuZG8gY29tbWFuZCBpZiB0aGUgY29tbWFuZCBwYXNzZWQgaW4gaXMKICAgICAg
ICAgLy8gZGlmZmVyZW50IGZyb20gdGhlIGxhc3QgY29tbWFuZAogICAgICAgICBtX2xhc3RFZGl0
Q29tbWFuZCA9IGNtZDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAgICAgaWYgKGNs
aWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRp
dENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2Vsc2UKKyAgICAgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0Q29t
bWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZW5kaWYKICAgICB9CiAKICAgICByZXNwb25k
VG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKQEAgLTgyMCw4ICs4MjUsMTIgQEAgdm9p
ZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cgogICAgIG1fYWx0ZXJuYXRpdmVU
ZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhjbWQuZ2V0KCkpOwogICAg
IAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclJlZG9TdGVwKGNt
ZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lz
dGVyUmVkb1N0ZXAoY21kKTsKKyNlbmRpZiAgCiAgICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRz
KG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTgzNSw4ICs4NDQsMTIgQEAgdm9pZCBFZGl0b3I6OnJl
YXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cgogICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFu
ZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpDbG9zZVR5cGluZyB8IEZyYW1lU2VsZWN0
aW9uOjpDbGVhclR5cGluZ1N0eWxlKTsKICAgICAKICAgICBtX2xhc3RFZGl0Q29tbWFuZCA9IDA7
CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBj
bGllbnQoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZW5kaWYKICAg
ICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKIH0KIApAQCAtMTI0Miwy
NCArMTI1NSw0MCBAQCB2b2lkIEVkaXRvcjo6Y2xlYXJVbmRvUmVkb09wZXJhdGlvbnMoKQogCiBi
b29sIEVkaXRvcjo6Y2FuVW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAg
cmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5VbmRvKCk7CisjZWxzZQorICAgIHJldHVy
biBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5VbmRvKCk7CisjZW5kaWYK
IH0KIAogdm9pZCBFZGl0b3I6OnVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQog
ICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnVuZG8oKTsKKyNlbHNlCisgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+dW5kbygpOworI2VuZGlmCiB9CiAK
IGJvb2wgRWRpdG9yOjpjYW5SZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAg
ICByZXR1cm4gY2xpZW50KCkgJiYgY2xpZW50KCktPmNhblJlZG8oKTsKKyNlbHNlCisgICAgcmV0
dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblJlZG8oKTsKKyNlbmRp
ZgogfQogCiB2b2lkIEVkaXRvcjo6cmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIp
CiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVkbygpOworI2Vsc2UKKyAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWRvKCk7CisjZW5kaWYKIH0K
IAogdm9pZCBFZGl0b3I6OmRpZEJlZ2luRWRpdGluZygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1VuZG9NYW5hZ2VyLmNwcAkocmV2aXNpb24gMTI0ODE2KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE4ICszMywyMyBA
QAogCiAjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKIAorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9u
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgotI2luY2x1ZGUgIk5vZGUuaCIKKyNpbmNsdWRlICJF
eGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlYXRlKE5vZGUqIGhvc3QpCitQYXNz
UmVmUHRyPFVuZG9NYW5hZ2VyPiBVbmRvTWFuYWdlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIE5vZGUqIGhvc3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBV
bmRvTWFuYWdlcihob3N0KSk7CisgICAgUmVmUHRyPFVuZG9NYW5hZ2VyPiB1bmRvTWFuYWdlciA9
IGFkb3B0UmVmKG5ldyBVbmRvTWFuYWdlcihjb250ZXh0LCBob3N0KSk7CisgICAgdW5kb01hbmFn
ZXItPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB1bmRvTWFuYWdlci5yZWxlYXNlKCk7
CiB9CiAKLVVuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcihOb2RlKiBob3N0KQotICAgIDogbV91bmRv
U2NvcGVIb3N0KGhvc3QpCitVbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgTm9kZSogaG9zdCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250
ZXh0LCB0aGlzKQorICAgICwgbV91bmRvU2NvcGVIb3N0KGhvc3QpCisgICAgLCBtX2lzSW5Qcm9n
cmVzcyhmYWxzZSkKIHsKIH0KIApAQCAtNTMsNTQgKzU4LDE0MCBAQCB2b2lkIFVuZG9NYW5hZ2Vy
OjpkaXNjb25uZWN0KCkKICAgICBtX3VuZG9TY29wZUhvc3QgPSAwOwogfQogCi12b2lkIFVuZG9N
YW5hZ2VyOjp0cmFuc2FjdChjb25zdCBEaWN0aW9uYXJ5JiwgYm9vbCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIFVuZG9NYW5hZ2VyOjpzdG9wKCkKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkp
IHsKKyAgICBkaXNjb25uZWN0KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnRyYW5zYWN0KFBh
c3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uLCBib29sIG1lcmdlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIWlzQ29ubmVjdGVkKCkp
IHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgUmVmUHRyPFVuZG9TdGVwPiBzdGVwOwotICAgIG1fdW5kb1N0YWNrLmFwcGVuZChz
dGVwKTsKKyAgICBjbGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgdHJhbnNhY3Rp
b24tPnNldFVuZG9NYW5hZ2VyKHRoaXMpOworCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0cnVlOwor
ICAgIHRyYW5zYWN0aW9uLT5hcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisK
KyAgICBpZiAoIW1lcmdlIHx8IG1fdW5kb1N0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmRv
U3RhY2suYXBwZW5kKGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KSk7CisgICAgbV91bmRv
U3RhY2subGFzdCgpLT5hcHBlbmQodHJhbnNhY3Rpb24pOwogfQogCiB2b2lkIFVuZG9NYW5hZ2Vy
Ojp1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewor
ICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV91
bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50
cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisKKyAgICBtX2lzSW5Qcm9ncmVz
cyA9IHRydWU7CisgICAgVW5kb01hbmFnZXJFbnRyeSBlbnRyeSA9ICptX3VuZG9TdGFjay5sYXN0
KCk7CisgICAgZm9yIChzaXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAg
ICAgZW50cnlbaSAtIDFdLT51bmFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsK
KworICAgIG1fcmVkb1N0YWNrLmFwcGVuZChtX2luUHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOwor
ICAgIG1fdW5kb1N0YWNrLnJlbW92ZUxhc3QoKTsKIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6cmVk
byhFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKKyAgICBp
ZiAobV9pc0luUHJvZ3Jlc3MgfHwgIWlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAgZWMgPSBJTlZB
TElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgaWYgKG1fcmVkb1N0
YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1faW5Qcm9ncmVzc0VudHJ5ID0g
YWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworCisgICAgbV9pc0luUHJvZ3Jlc3MgPSB0
cnVlOworICAgIFVuZG9NYW5hZ2VyRW50cnkgZW50cnkgPSAqbV9yZWRvU3RhY2subGFzdCgpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAwOyAtLWkpCisgICAgICAgIGVu
dHJ5W2kgLSAxXS0+cmVhcHBseSgpOworICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisKKyAg
ICBtX3VuZG9TdGFjay5hcHBlbmQobV9pblByb2dyZXNzRW50cnkucmVsZWFzZSgpKTsKKyAgICBt
X3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQor
eworICAgIHVuZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6
OnJlZG8oKQoreworICAgIHJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQgVW5k
b01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sK
KyAgICBpZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVu
dHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50
cnktPmFwcGVuZChzdGVwKTsKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVh
c2UoKSk7CisKKyAgICAgICAgY2xlYXJSZWRvKEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0g
ZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOworfQorCit2b2lk
IFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXAp
Cit7CisgICAgaWYgKCFtX2lzSW5Qcm9ncmVzcykgeworICAgICAgICBPd25QdHI8VW5kb01hbmFn
ZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAg
IGVudHJ5LT5hcHBlbmQoc3RlcCk7CisgICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeS5y
ZWxlYXNlKCkpOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5k
KHN0ZXApOworfQorCitzdGF0aWMgdm9pZCBjbGVhclN0YWNrKFVuZG9NYW5hZ2VyU3RhY2smIHN0
YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2suc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAqc3RhY2tbaV07CisgICAg
ICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkpIHsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBVbmRv
U3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAgICAgICAgICAgICAgIEFTU0VSVChzdGVw
LT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PERPTVRy
YW5zYWN0aW9uKj4oc3RlcCktPnNldFVuZG9NYW5hZ2VyKDApOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIHN0YWNrLmNsZWFyKCk7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6
OmNsZWFyVW5kbyhFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkp
IHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIWlzQ29ubmVjdGVkKCkpIHsKICAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV91
bmRvU3RhY2suY2xlYXIoKTsKKyAgICBjbGVhclN0YWNrKG1fdW5kb1N0YWNrKTsKIH0KIAogdm9p
ZCBVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICgh
aXNDb25uZWN0ZWQoKSkgeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhaXNDb25uZWN0ZWQo
KSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBtX3JlZG9TdGFjay5jbGVhcigpOworICAgIGNsZWFyU3RhY2sobV9yZWRvU3Rh
Y2spOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjpjbGVhclVuZG9SZWRvKCkKIHsKLSAgICBtX3Vu
ZG9TdGFjay5jbGVhcigpOwotICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisgICAgY2xlYXJTdGFj
ayhtX3VuZG9TdGFjayk7CisgICAgY2xlYXJTdGFjayhtX3JlZG9TdGFjayk7CiB9CiAKIGJvb2wg
VW5kb01hbmFnZXI6OmlzQ29ubmVjdGVkKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VW5kb01hbmFnZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9N
YW5hZ2VyLmgJKHJldmlzaW9uIDEyNDgxNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5k
b01hbmFnZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsMTEgQEAKIAogI2lmIEVOQUJM
RShVTkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKICNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgpAQCAtNDIsMzIgKzQ1LDUxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xh
c3MgRGljdGlvbmFyeTsKK2NsYXNzIERPTVRyYW5zYWN0aW9uOwogY2xhc3MgTm9kZTsKIAotY2xh
c3MgVW5kb01hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmRvTWFuYWdlcj4gewordHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IFVuZG9NYW5hZ2VyRW50cnk7Cit0eXBlZGVmIFZl
Y3RvcjxPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gPiBVbmRvTWFuYWdlclN0YWNrOworCitjbGFz
cyBVbmRvTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVuZG9NYW5hZ2VyPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VW5kb01hbmFn
ZXI+IGNyZWF0ZShOb2RlKiBob3N0KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmRvTWFuYWdl
cj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBOb2RlKiBob3N0KTsKKyAgICBOb2Rl
KiB1bmRvU2NvcGVIb3N0KCkgY29uc3QgeyByZXR1cm4gbV91bmRvU2NvcGVIb3N0OyB9CiAgICAg
dm9pZCBkaXNjb25uZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKIAot
ICAgIHZvaWQgdHJhbnNhY3QoY29uc3QgRGljdGlvbmFyeSYgdHJhbnNhY3Rpb24sIGJvb2wgbWVy
Z2UsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHRyYW5zYWN0KFBhc3NSZWZQdHI8RE9NVHJh
bnNhY3Rpb24+LCBib29sIG1lcmdlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2b2lkIHVuZG8o
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgcmVkbyhFeGNlcHRpb25Db2RlJik7CisgICAgdm9p
ZCB1bmRvKCk7CisgICAgdm9pZCByZWRvKCk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiBtX3VuZG9TdGFjay5zaXplKCkgKyBtX3JlZG9TdGFjay5zaXplKCk7IH0KKyAg
ICB1bnNpZ25lZCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcmVkb1N0YWNrLnNpemUoKTsg
fQogCiAgICAgdm9pZCBjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXJS
ZWRvKEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIGNsZWFyVW5kb1JlZG8oKTsKKyAgICAKKyAg
ICBib29sIGNhblVuZG8oKSBjb25zdCB7IHJldHVybiAhbV91bmRvU3RhY2suaXNFbXB0eSgpOyB9
CisgICAgYm9vbCBjYW5SZWRvKCkgY29uc3QgeyByZXR1cm4gIW1fcmVkb1N0YWNrLmlzRW1wdHko
KTsgfQorICAgIAorICAgIHZvaWQgcmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVw
Pik7CisgICAgdm9pZCByZWdpc3RlclJlZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAg
ICAKKyAgICBjb25zdCBVbmRvTWFuYWdlclN0YWNrJiB1bmRvU3RhY2soKSBjb25zdCB7IHJldHVy
biBtX3VuZG9TdGFjazsgfQorICAgIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHJlZG9TdGFjaygp
IGNvbnN0IHsgcmV0dXJuIG1fcmVkb1N0YWNrOyB9CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQg
VW5kb01hbmFnZXIoTm9kZSogaG9zdCk7CisgICAgZXhwbGljaXQgVW5kb01hbmFnZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIE5vZGUqIGhvc3QpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKTsK
ICAgICAKICAgICBOb2RlKiBtX3VuZG9TY29wZUhvc3Q7Ci0gICAgVmVjdG9yPFJlZlB0cjxVbmRv
U3RlcD4gPiBtX3VuZG9TdGFjazsKLSAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVwPiA+IG1fcmVk
b1N0YWNrOworICAgIFVuZG9NYW5hZ2VyU3RhY2sgbV91bmRvU3RhY2s7CisgICAgVW5kb01hbmFn
ZXJTdGFjayBtX3JlZG9TdGFjazsKKyAgICBib29sIG1faXNJblByb2dyZXNzOworICAgIE93blB0
cjxVbmRvTWFuYWdlckVudHJ5PiBtX2luUHJvZ3Jlc3NFbnRyeTsKIH07CiAgICAgCiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkocmV2aXNpb24gMTI0ODE2KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDggKzMzLDcgQEAgbW9kdWxlIGNvcmUgewogICAgIGludGVyZmFjZSBbCiAgICAgICAg
IENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUgogICAgIF0gVW5kb01hbmFnZXIgewotICAgICAgICB2
b2lkIHRyYW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNhY3Rpb24sIGluIGJvb2xlYW4gbWVyZ2Up
Ci0gICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0N1c3RvbV0gdm9p
ZCB0cmFuc2FjdChpbiBEaWN0aW9uYXJ5IHRyYW5zYWN0aW9uLCBpbiBib29sZWFuIG1lcmdlKTsK
IAogICAgICAgICB2b2lkIHVuZG8oKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7
CkBAIC00Miw2ICs0MSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwogCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxl
bmd0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgcG9zaXRpb247
CiAKICAgICAgICAgdm9pZCBjbGVhclVuZG8oKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvU3RlcC5oCShyZXZpc2lvbiAxMjQ4MTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDYgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgPSAwOwogICAgIHZpcnR1YWwgRWRpdEFjdGlvbiBl
ZGl0aW5nQWN0aW9uKCkgY29uc3QgPSAwOworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisgICAg
dmlydHVhbCBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25zdCA9IDA7CisjZW5kaWYKIH07CiAK
IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDgxNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTAzICBTdWtvbHNhayBTYWtz
aHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgdW5kb01h
bmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFuZCBjbGVh
clJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5
NzIyCisKKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZp
dmVzLWdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdl
ci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8t
cmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTAzICBCcmFkeSBF
aWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBPdXQtb2YtcHJvY2VzcyBwbHVn
LWlucyBzaG91bGQgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2Mt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZl
cy1nYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0
cyB0aGF0IHVuZG9NYW5hZ2VyIGtlZXBzIERPTVRyYW5zYWN0aW9uIG9iamVjdHMgYWxpdmUgZHVy
aW5nIGl0cyBsaWZldGltZSBhbmQgdGhlcmVmb3JlIGRvZXMgbm90IGNyYXNoIGFmdGVyIHRoZSBH
QyBydW5zLgorCitQQVNTIEFmdGVyIHRoZSBHQyBydW5zLCB1bmRvTWFuYWdlci51bmRvKCkgc3Rp
bGwgd29ya3MuIAorUEFTUyBBZnRlciB0aGUgR0MgcnVucyBhZ2FpbiwgdW5kb01hbmFnZXIucmVk
bygpIHN0aWxsIHdvcmtzLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNh
Y3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkRPTVRyYW5zYWN0aW9uIHN1cnZp
dmVzIEdDPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCB1bmRv
TWFuYWdlciBrZWVwcyBET01UcmFuc2FjdGlvbiBvYmplY3RzIGFsaXZlIGR1cmluZyBpdHMgbGlm
ZXRpbWUKK2FuZCB0aGVyZWZvcmUgZG9lcyBub3QgY3Jhc2ggYWZ0ZXIgdGhlIEdDIHJ1bnMuCisK
KzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+Cit2YXIgbG9nID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2xvZycpOworCit2YXIgdSA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwordS50
cmFuc2FjdCh7CisJImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAo
ImV4ZWN1dGVcbiIpOworCX0sCisJInVuZG8iOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4
dCArPSAoInVuZG9cbiIpOworCX0sCisJInJlZG8iOiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVy
VGV4dCArPSAoInJlZG9cbiIpOworCX0sCit9LCB0cnVlKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KwlpZiAod2luZG93LkdDQ29udHJvbGxlcikKKwkJR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKwl1
LnVuZG8oKTsKKwkKKwlhc3NlcnRfdHJ1ZShsb2cuaW5uZXJUZXh0ID09ICJleGVjdXRlXG51bmRv
XG4iKTsKK30sICJBZnRlciB0aGUgR0MgcnVucywgdW5kb01hbmFnZXIudW5kbygpIHN0aWxsIHdv
cmtzLiIpOworCQordGVzdChmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LkdDQ29udHJvbGxlcikK
KwkJR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKKwl1LnJlZG8oKTsKKwkKKwlhc3NlcnRfdHJ1ZShs
b2cuaW5uZXJUZXh0ID09ICJleGVjdXRlXG51bmRvXG5yZWRvXG4iKTsKK30sICJBZnRlciB0aGUg
R0MgcnVucyBhZ2FpbiwgdW5kb01hbmFnZXIucmVkbygpIHN0aWxsIHdvcmtzLiIpOworCitsb2cu
c3R5bGUuZGlzcGxheSA9ICJub25lIjsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdl
ci91bmRvbWFuYWdlci10cmFuc2FjdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdl
cidzIHRyYW5zYWN0KCkgbWV0aG9kLgorCitQQVNTIGRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRv
TWFuYWdlci4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0eSB0cmFuc2FjdC4gCitQQVNT
IEFmdGVyIGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rp
b24uIAorUEFTUyBBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxp
ZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5k
b01hbmFnZXIgdW5hcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBh
bm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2Fj
dGlvbi4gCitQQVNTIEFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhl
IGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVuZG9N
YW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgdGhy
ZWUgdHJhbnNhY3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFu
YWdlciBhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIAorUEFTUyBBZnRlciBhbiB1bmRv
IGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRo
ZSBjb3JyZWN0IG9yZGVyLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJl
YXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiAKKwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2Fj
dC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5k
b21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJhbnNhY3QuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMjkgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5V
bmRvTWFuYWdlci50cmFuc2FjdCgpPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMg
dGVzdHMgVW5kb01hbmFnZXIncyB0cmFuc2FjdCgpIG1ldGhvZC4KKworPGRpdiBpZD0iZWRpdCIg
Y29udGVudEVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudCwgInVuZG9NYW5hZ2VyIik7Cit9
LCAiZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiIpOworCit2YXIgdW5kb01hbmFn
ZXIgPSBkb2N1bWVudC51bmRvTWFuYWdlcjsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3Nl
cnRfaWRsX2F0dHJpYnV0ZSh1bmRvTWFuYWdlciwgInRyYW5zYWN0Iik7Cit9LCAidW5kb01hbmFn
ZXIgaGFzIHByb3BlcnR5IHRyYW5zYWN0LiIpOworCit2YXIgZWRpdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJlZGl0Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIu
dHJhbnNhY3QoeworICAgICAgICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg
ZWRpdC5pbm5lckhUTUwgKz0gIjFlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMXUgIjsKKyAgICAgICAg
fSwKKyAgICAgICAgInJlZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJI
VE1MICs9ICIxciAiOworICAgICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVl
KGVkaXQuaW5uZXJIVE1MID09ICIxZSAiKTsKK30sICJBZnRlciBhIHRyYW5zYWN0IGNhbGwsIHVu
ZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIHVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyZSAiOworICAgICAgICB9LAor
ICAgICAgICAidW5kbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwg
Kz0gIjJ1ICI7CisgICAgICAgIH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMnIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNl
KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgIik7Cit9LCAiQWZ0
ZXIgYW5vdGhlciB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVzIHRoZSBzZWNvbmQg
dHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudW5k
bygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAiKTsKK30s
ICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgc2Vjb25kIHRy
YW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8o
KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgMnUgMXUgIik7Cit9
LCAiQWZ0ZXIgYW5vdGhlciB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBwbGllcyB0aGUgZmly
c3QgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIu
cmVkbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAydSAxdSAx
ciAiKTsKK30sICJBZnRlciBhIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBm
aXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdl
ci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlIDJlIDJ1IDF1
IDFyIDJyICIpOworfSwgIkFmdGVyIGFub3RoZXIgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciByZWFw
cGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKworZWRpdC5pbm5lckhUTUwgPSAiIjsK
KwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAg
ICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAi
MWUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGVkaXQuaW5uZXJIVE1MICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAg
ICAgIH0KKyAgICB9LCBmYWxzZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAg
ICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0g
IjJlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8i
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAg
ICAgICB9CisgICAgfSwgdHJ1ZSk7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAg
ICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0g
IjNlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBlZGl0LmlubmVySFRNTCArPSAiM3UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8i
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzciAiOworICAg
ICAgICB9CisgICAgfSwgdHJ1ZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
IjFlIDJlIDNlICIpOworfSwgIkFmdGVyIHRocmVlIHRyYW5zYWN0IGNhbGxzIHRoYXQgYXJlIG1l
cmdlZCBpbnRvIG9uZSBlbnRyeSwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNh
Y3Rpb25zLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnVuZG8oKTsK
KyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgIik7
Cit9LCAiQWZ0ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHRocmVl
IHRyYW5zYWN0aW9ucyBpbiB0aGUgY29ycmVjdCBvcmRlci4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gIjFlIDJlIDNlIDN1IDJ1IDF1IDFyIDJyIDNyICIpOworfSwgIkFmdGVyIGEgcmVkbyBj
YWxsLCB1bmRvTWFuYWdlciByZWFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucyBpbiB0aGUg
Y29ycmVjdCBvcmRlci4iKTsKKworZWRpdC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTIgQEAKK1RoaXMgdGVzdHMgVW5kb01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3Ro
LCBhbmQgcG9zaXRpb24uCisKK1BBU1MgZG9jdW1lbnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2Vy
LiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywgbGVuZ3RoLCBh
bmQgcG9zaXRpb24uIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0aWFsIHZhbHVl
cyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiAKK1BBU1MgQWZ0ZXIgaW5zZXJ0aW5n
IHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAxIGFuZCBwb3Np
dGlvbiBpcyAwLiAKK1BBU1MgQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBs
ZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0
ZXN0Jy4gCitQQVNTIEFmdGVyIHVuZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5k
IHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1Mg
QWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMg
MiwgYW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIAorUEFTUyBBZnRlciByZWRvaW5nLCB1bmRvTWFu
YWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBh
IHBsYWluICd0ZXN0Jy4gCitQQVNTIEFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3Ro
IGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcu
IAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVu
ZG8tcmVkby5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXVuZG8tcmVkby5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+VW5kb01hbmFnZXIgaGFzIHVuZG8oKSBhbmQgcmVkbygpIHRoYXQgd29yazwvdGl0bGU+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdW5kbygpLCBy
ZWRvKCksIGxlbmd0aCwgYW5kIHBvc2l0aW9uLgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRp
dGFibGU9InRydWUiPjwvZGl2PgorPHNjcmlwdD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBh
c3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVu
dCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJ1bmRvIik7CisgICAg
YXNzZXJ0X2lkbF9hdHRyaWJ1dGUoZG9jdW1lbnQudW5kb01hbmFnZXIsICJyZWRvIik7CisgICAg
YXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwgImxlbmd0aCIpOworICAg
IGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQudW5kb01hbmFnZXIsICJwb3NpdGlvbiIpOwor
fSwgInVuZG9NYW5hZ2VyIGhhcyBwcm9wZXJ0aWVzIHVuZG8sIHJlZG8sIGxlbmd0aCwgYW5kIHBv
c2l0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF90cnVlKGRvY3VtZW50
LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAwKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRv
TWFuYWdlci5wb3NpdGlvbiA9PSAwKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgY29ycmVjdCBpbml0
aWFsIHZhbHVlcyBmb3IgbGVuZ3RoICgwKSBhbmQgcG9zaXRpb24gKDApLiIpOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIHZhciBlZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQi
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZWRpdCwgMCk7CisgICAg
ZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCBmYWxzZSwgInRlc3QiKTsKKyAgICAK
KyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMSk7CisgICAg
YXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7Cit9LCAiQWZ0
ZXIgaW5zZXJ0aW5nIHRleHQgJ3Rlc3QnIGluIGEgRElWLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBp
cyAxIGFuZCBwb3NpdGlvbiBpcyAwLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHZhciBy
YW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRl
bnRzKGVkaXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkJvbGQiLCBmYWxzZSwgbnVsbCk7CisgICAgCisgICAg
YXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2Vy
dF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90
cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIGJvbGRpbmcg
dGhlIHRleHQsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFu
ZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkg
eworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnVuZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1
ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5p
bm5lckhUTUwgPT0gInRlc3QiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxl
bmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0
ZXN0Jy4iKTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFn
ZXIudW5kbygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxl
bmd0aCA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlv
biA9PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiIik7Cit9LCAiQWZ0
ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMiwg
YW5kIHRoZSByZXN1bHQgaXMgZW1wdHkuIik7CisgICAgCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGRvY3VtZW50LnVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1
bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQu
dW5kb01hbmFnZXIucG9zaXRpb24gPT0gMSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gInRlc3QiKTsKK30sICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBp
cyAyIGFuZCBwb3NpdGlvbiBpcyAxLCBhbmQgdGhlIHJlc3VsdCBpcyBhIHBsYWluICd0ZXN0Jy4i
KTsKKyAgICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVk
bygpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9
PSAyKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAw
KTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiPGI+dGVzdDwvYj4iKTsKK30s
ICJBZnRlciByZWRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBp
cyAwLCBhbmQgdGhlIHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiIpOworCitlZGl0LnN0eWxlLmRp
c3BsYXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157100</attachid>
            <date>2012-08-07 20:44:28 -0700</date>
            <delta_ts>2012-08-08 04:13:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120807204559.patch</filename>
            <type>text/plain</type>
            <size>75079</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNDk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkwIEBACisyMDEyLTA4LTA3ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC5odG1s
CisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZp
dmVzLWdjLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFn
ZXItdHJhbnNhY3QuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci91bmRv
bWFuYWdlci11bmRvLXJlZG8uaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246
OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmV4ZWNTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6Z2V0RnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246Omhhc0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRyYW5zYWN0aW9uOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChE
T01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5kb01h
bmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnNldFVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbk93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bmRvTWFuYWdlcik6CisgICAgICAgICog
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRE9NVHJh
bnNhY3Rpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJl
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5VbmRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWRvKToKKyAgICAgICAgKiBl
ZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnRyYW5zYWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlVuZG9NYW5hZ2VyOjp1bmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpy
ZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWdpc3RlclVuZG9TdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWdpc3RlclJlZG9TdGVwKToKKyAgICAg
ICAgKFdlYkNvcmU6OmNsZWFyU3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6
OmNsZWFyVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJSZWRvKToK
KyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclVuZG9SZWRvKToKKyAgICAgICAg
KiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFVu
ZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVIb3N0
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpwb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2FuVW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFu
YWdlcjo6Y2FuUmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kb1N0YWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpyZWRvU3RhY2spOgorICAgICAgICAq
IGVkaXRpbmcvVW5kb01hbmFnZXIuaWRsOgorICAgICAgICAqIGVkaXRpbmcvVW5kb1N0ZXAuaDoK
KyAgICAgICAgKFVuZG9TdGVwKToKKwogMjAxMi0wOC0wNyAgSGF5YXRvIEl0byAgPGhheWF0b0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgRG9uJ3QgcmUtdXNlIHRoZSBzYW1lIEV2ZW50RGlzcGF0
Y2hlciBpbnN0YW5jZSB0byBkaXNwYXRjaCBldmVudHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTI0OTc1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTM4Myw2ICszODMsNyBAQCBTRVQoV2ViQ29yZV9JRExfRklMRVMKICAg
ICBkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbAogICAgIGRvbS9XaGVlbEV2ZW50LmlkbAog
CisgICAgZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwKICAgICBlZGl0aW5nL1VuZG9NYW5hZ2Vy
LmlkbAogCiAgICAgZmlsZWFwaS9CbG9iLmlkbApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LmNwcAkocmV2aXNpb24gMTI0OTc1KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDkgQEAKICNpbmNsdWRlICJKU0RPTVN0
cmluZ0xpc3QuY3BwIgogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwLmNwcCIKICNpbmNsdWRlICJK
U0RPTVRva2VuTGlzdC5jcHAiCisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyNpbmNsdWRlICJK
U0RPTVRyYW5zYWN0aW9uLmNwcCIKKyNlbmRpZgogI2luY2x1ZGUgIkpTRE9NVVJMLmNwcCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvdy5jcHAiCiAjaW5jbHVkZSAiSlNFbGVtZW50LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTI0OTc1KQorKysgU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjY1LDYgKzI2
NSw3IEBAIEJJTkRJTkdfSURMUyA9IFwKICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXROYW1lZEZs
b3cuaWRsIFwKICAgICAkKFdlYkNvcmUpL2RvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsIFwK
ICAgICAkKFdlYkNvcmUpL2RvbS9XaGVlbEV2ZW50LmlkbCBcCisgICAgJChXZWJDb3JlKS9lZGl0
aW5nL0RPTVRyYW5zYWN0aW9uLmlkbCBcCiAgICAgJChXZWJDb3JlKS9lZGl0aW5nL1VuZG9NYW5h
Z2VyLmlkbCBcCiAgICAgJChXZWJDb3JlKS9maWxlYXBpL0Jsb2IuaWRsIFwKICAgICAkKFdlYkNv
cmUpL2ZpbGVhcGkvRmlsZS5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLnByaQko
cmV2aXNpb24gMTI0OTc1KQorKysgU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjksNiArMjY5LDcgQEAgSURMX0JJTkRJTkdTICs9IFwKICAgICAk
JFBXRC9kb20vV2ViS2l0TmFtZWRGbG93LmlkbCBcCiAgICAgJCRQV0QvZG9tL1dlYktpdFRyYW5z
aXRpb25FdmVudC5pZGwgXAogICAgICQkUFdEL2RvbS9XaGVlbEV2ZW50LmlkbCBcCisgICAgJCRQ
V0QvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwgXAogICAgICQkUFdEL2VkaXRpbmcvVW5kb01h
bmFnZXIuaWRsIFwKICAgICAkJFBXRC9maWxlYXBpL0Jsb2IuaWRsIFwKICAgICAkJFBXRC9maWxl
YXBpL0ZpbGUuaWRsIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNp
b24gMTI0OTc1KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTUyLDYgKzE1Miw4IEBAIHdlYmNvcmVfYnVpbHRfc291cmNlcyArPSBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVN0cmluZ01hcC5oIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRE9NVG9rZW5MaXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0RPTVRva2VuTGlzdC5oIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NVHJhbnNhY3Rp
b24uY3BwIFwKKwlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NVHJhbnNhY3Rpb24uaCBcCiAJ
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVVSTC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNET01VUkwuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVdpbmRvdy5j
cHAgXApAQCAtODIyLDYgKzgyNCw3IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29y
ZSkvZG9tL1dlYktpdE5hbWVkRmxvdy5pZGwgXAogCSQoV2ViQ29yZSkvZG9tL1dlYktpdFRyYW5z
aXRpb25FdmVudC5pZGwgXAogCSQoV2ViQ29yZSkvZG9tL1doZWVsRXZlbnQuaWRsIFwKKwkkKFdl
YkNvcmUpL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaWRsIFwKIAkkKFdlYkNvcmUpL2VkaXRpbmcv
VW5kb01hbmFnZXIuaWRsIFwKIAkkKFdlYkNvcmUpL2ZpbGVhcGkvQmxvYi5pZGwgXAogCSQoV2Vi
Q29yZSkvZmlsZWFwaS9GaWxlLmlkbCBcCkBAIC0xMzg0LDYgKzEzODcsOCBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24u
aCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmgg
XAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcCBcCisJU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAgXApAQCAtMTQzMSw2ICsxNDM2LDcgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmgg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBc
CisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgXApAQCAtMTU1Miw2ICsxNTU4
LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNV
aW50OEFycmF5Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVaW50
OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
VW5kb01hbmFnZXJDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dl
YktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNwcCBcCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEyNDk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgIGJpbmRpbmdzL2pzL0Jp
bmRpbmdTdGF0ZS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBc
CiAgICAgIGJpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgXAorICAgICBiaW5k
aW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuY3BwIFwKICAgICAgYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICBiaW5k
aW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwIFwKQEAgLTEwOSw2ICsxMTAsNyBAQCBTT1VSQ0VTICs9
IFwKICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCBcCiAgICAgIGJp
bmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pT
RE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rp
b25DdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuY3BwIFwKQEAgLTE5Miw2ICsxOTQsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICAgYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5n
cy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNVaW50OENs
YW1wZWRBcnJheUN1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3Vz
dG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBc
CiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAgXAogICAg
ICBiaW5kaW5ncy9qcy9KU1dlYktpdENTU0tleWZyYW1lUnVsZUN1c3RvbS5jcHAgXApAQCAtMTI5
Myw2ICsxMjk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmggXAogICAgIGJpbmRpbmdz
L2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9tLmggXAorICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb24uaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAogICAgIGJpbmRp
bmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmggXAogICAgIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93
U2hlbGwuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCShyZXZpc2lvbiAxMjQ5NzUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTI5Nyw2ICsyOTcsMTQg
QEAgSUYgKEVOQUJMRV9XRUJfSU5URU5UUykKICAgICApCiBFTkRJRiAoKQogCitJRiAoRU5BQkxF
X1VORE9fTUFOQUdFUikKKyAgICBMSVNUIChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCisgICAgICAg
IGJpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0RP
TVRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2Vy
Q3VzdG9tLmNwcAorICAgICkKK0VORElGICgpCisKIExJU1QoQVBQRU5EIFNDUklQVFNfQklORElO
R1MKICAgICAke1dFQkNPUkVfRElSfS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0K
ICkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNDk3NSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTAxMyw2ICsxMDEzLDcgQEAKICAg
ICAgICAgICAgICdkb20vV2ViS2l0TmFtZWRGbG93LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1dl
YktpdFRyYW5zaXRpb25FdmVudC5pZGwnLAogICAgICAgICAgICAgJ2RvbS9XaGVlbEV2ZW50Lmlk
bCcsCisgICAgICAgICAgICAnZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0Jsb2Iu
aWRsJywKICAgICAgICAgICAgICdmaWxlYXBpL0ZpbGUuaWRsJywKQEAgLTE5MzAsNiArMTkzMSw4
IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCcsCisgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9E
T01UcmFuc2FjdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29y
bGQuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCcsCkBAIC0xOTc3
LDYgKzE5ODAsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20u
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5oJywKQEAgLTIwOTcsNiArMjEwMSw3IEBACiAgICAg
ICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MTZBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMv
SlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5n
cy9qcy9KU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdz
L2pzL0pTV2ViS2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAnLApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDEyNDk3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00MTE4LDYgKzQxMTgsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQor
CQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTVRyYW5zYWN0aW9uLmNwcCIKKwkJCQk+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJ
TmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
PgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0RPTVRyYW5zYWN0
aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNET01VUkwuY3BwIgogCQkJCT4KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTIyNjE1LDYg
KzIyNjcxLDYyIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNVbmRvTWFuYWdlci5jcHAiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+
CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
TmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFt
ZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgorCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcJChQ
cm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNVbmRvTWFuYWdlci5oIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTVmFsaWRpdHlTdGF0ZS5jcHAi
CiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpAQCAtNjQwNTgsNiArNjQxNzAsNjIgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXERPTVRyYW5zYWN0aW9uLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERPTVRyYW5zYWN0aW9uLmgi
CisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xET01XcmFwcGVyV29ybGQuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmln
dXJhdGlvbgpAQCAtNjYzMDIsNiArNjY0NzAsNTggQEAKIAkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgor
CQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fp
cm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+
CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgor
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CU5hbWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJQcm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NV2luZG93QmFz
ZS5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC03MDE1MCw2ICs3MDM3
MCw1OCBAQAogCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTVW5kb01hbmFnZXJDdXN0b20u
Y3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVs
ZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2lu
MzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29s
CisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIgogCQkJCQk+CiAJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI0OTc1KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTY1LDEwICsxOTY1LDE2IEBACiAJCTdBRjExQTVBMTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNwZWN0b3JSdW50aW1lQWdl
bnQuaCAqLzsgfTsKIAkJN0FGRDRBOEIxMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9p
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0
QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0FGRDRGRjQxMTMyNzdCNjAwMzVC
ODgzIC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1
Z0xpc3RlbmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJN0IwOTkyRjUxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0IwOTkyRjQx
NUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwICovOyB9OwogCQk3QjFF
QTBDRTE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjFFQTBDQzE1NzZDNUI1MDA2MDE3N0Qg
LyogSlNVbmRvTWFuYWdlci5jcHAgKi87IH07CiAJCTdCMUVBMENGMTU3NkM1QjUwMDYwMTc3RCAv
KiBKU1VuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oICovOyB9
OworCQk3QjM1MzdDNTE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM1MzdDMzE1Q0Iy
Q0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi87IH07CisJCTdCMzUzN0M2MTVD
QjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM1MzdDNDE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNE
T01UcmFuc2FjdGlvbi5oICovOyB9OworCQk3QjM1MzkzQzE1Q0NBMEFDMDA4M0FCNjkgLyogSlNE
T01UcmFuc2FjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QjM1MzkzQjE1Q0NBMEFDMDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlv
bkN1c3RvbS5jcHAgKi87IH07CiAJCTdCOTE4NEQyMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwICovOyB9OwogCQk3Qjkx
ODREMzE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCOTE4NEQwMTU3NThFNDIwMDkyQUE5MyAvKiBV
bmRvTWFuYWdlci5oICovOyB9OworCQk3QkIzNUFFQjE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJh
bnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsK
KwkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QkIzNUFFQTE1Q0NEREY0MDBG
MkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAqLzsgfTsKIAkJN0UzM0NEMDExMjdGMzQwRDAwQkU4
RjE3IC8qIFB1cmdlUHJpb3JpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFMzNDRDAwMTI3RjM0MEQwMEJFOEYxNyAvKiBQdXJnZVByaW9yaXR5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0UzN0VG
MkUxMzM5MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzN0VGMkQxMzM5MjA4ODAwQjI5
MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovOyB9OwogCQk3RTk5QUY1MTBCMTM4NDY0
NjhGQjAxQTUgLyogV2luZG93Rm9jdXNBbGxvd2VkSW5kaWNhdG9yLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFOTlBRjUyMEIxMzg0NjQ2OEZCMDFB
NSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwICovOyB9OwpAQCAtOTEzOSwxMSAr
OTE0NSwxOCBAQAogCQk3QUYxMUE1OTEyRTcyNzQ5MDA2MUYyM0MgLyogSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvclJ1bnRp
bWVBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZENEE4QTExMzFDMjc2
MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRCcmVha3BvaW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTdBRkQ0RkYzMTEzMjc3QjYwMDM1Qjg4MyAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5k
b01hbmFnZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNVbmRvTWFuYWdlckN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdC
MUVBMENDMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVW5kb01hbmFnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9NYW5hZ2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCMzUzN0MzMTVDQjJDQjUwMDgzQUI2OSAvKiBK
U0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjM1
MzdDNDE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTVRyYW5zYWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTdCMzUzOTNCMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9u
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NVHJh
bnNhY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjhDMUZF
NjE1Q0NFM0MyMDA0QjM1REMgLyogRE9NVHJhbnNhY3Rpb24uaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IERPTVRyYW5zYWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCOTE4NEQxMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFu
YWdlci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVW5kb01hbmFnZXIuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QkIzNUFFOTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJh
bnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NVHJh
bnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QkIzNUFFQTE1Q0NE
REY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
N0M2MDEyODA2MDA3OEJCNzBFMzY3QTk1IC8qIEROU1Jlc29sdmVRdWV1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBETlNSZXNvbHZlUXVldWUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3RTMzQ0QwMDEyN0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQ
cmlvcml0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXJnZVByaW9yaXR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzdFRjJEMTMzOTIwODgwMEIyOTI1
MCAvKiBTdWJyZXNvdXJjZUxvYWRlckNGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwOyBwYXRoID0gY2YvU3VicmVzb3VyY2VM
b2FkZXJDRi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTg1MSw2ICsxNTg2
NCw4IEBACiAJCTdCN0Y2ODZEMTU3NkJGQTEwMDNGQUJGMiAvKiBFZGl0aW5nICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk3QjM1MzdDMzE1Q0IyQ0I1MDA4
M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5jcHAgKi8sCisJCQkJN0IzNTM3QzQxNUNCMkNCNTAw
ODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAqLywKIAkJCQk3QjFFQTBDQzE1NzZDNUI1MDA2
MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgKi8sCiAJCQkJN0IxRUEwQ0QxNTc2QzVCNTAwNjAx
NzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLywKIAkJCSk7CkBAIC0xNzA5NSw2ICsxNzExMCw3IEBA
CiAJCQkJQ0VDQURGQzMxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkFsdGVybmF0aXZlLmgg
Ki8sCiAJCQkJQ0VDQURGQzQxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlvbkNvbW1hbmQuY3Bw
ICovLAogCQkJCUNFQ0FERkM1MTUzNzc4RkYwMEUzNzA2OCAvKiBEaWN0YXRpb25Db21tYW5kLmgg
Ki8sCisJCQkJN0I4QzFGRTYxNUNDRTNDMjAwNEIzNURDIC8qIERPTVRyYW5zYWN0aW9uLmlkbCAq
LywKIAkJCQk5MzMwOUQ5MzA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdEFjdGlvbi5oICovLAogCQkJ
CTkzMzA5RDk0MDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0Q29tbWFuZC5jcHAgKi8sCiAJCQkJOTMz
MDlEOTUwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmggKi8sCkBAIC0yMDA3Nyw2ICsy
MDA5Myw4IEBACiAJCQkJMzE2MDIzRUYxNTMyQzQwQzAwRDUwRkY0IC8qIERpY3Rpb25hcnkuaCAq
LywKIAkJCQlCQzUzREE2MTExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRhYmxlTWFw
LmNwcCAqLywKIAkJCQlCQzUzREE1RjExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRh
YmxlTWFwLmggKi8sCisJCQkJN0JCMzVBRTkxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0
aW9uLmNwcCAqLywKKwkJCQk3QkIzNUFFQTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rp
b24uaCAqLywKIAkJCQlCQzUzREE0NzExNDMxMzREMDAwRDgxN0UgLyogRE9NV3JhcHBlcldvcmxk
LmNwcCAqLywKIAkJCQlCQzUzREEyRDExNDMxMjFFMDAwRDgxN0UgLyogRE9NV3JhcHBlcldvcmxk
LmggKi8sCiAJCQkJMTQzMkU4NDgwQzUxNDkzRjAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5jcHAg
Ki8sCkBAIC0yMDI0Myw2ICsyMDI2MSw3IEBACiAJCQkJOUExQjZGOTYxNTg4NjlDODAwMTFBOEM0
IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkM2NDY0OUIxMUQ4MjM4QzAw
NjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCAqLywKIAkJCQkxNEUwQkM1NTEzNjE0
OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwICovLAorCQkJCTdCMzUzOTNC
MTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlC
Q0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyogSlNET01XaW5kb3dDdXN0b20uY3BwICovLAogCQkJ
CTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oICovLAogCQkJ
CUE4MEE5NDIyMTQ5RjIyNUUwMDk4OTI5MSAvKiBKU0RPTVdpbmRvd1dlYkF1ZGlvQ3VzdG9tLmNw
cCAqLywKQEAgLTIwMzM0LDYgKzIwMzUzLDcgQEAKIAkJCQk0OUVFQ0Y3NjEwNTA4RDlDMDAwOTlG
QUIgLyogSlNVaW50MzJBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJNDlFRUNGNzUxMDUwOEQ5QzAw
MDk5RkFCIC8qIEpTVWludDhBcnJheUN1c3RvbS5jcHAgKi8sCiAJCQkJOTFBMzkwNUExNEMwRjYx
MTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlDdXN0b20uY3BwICovLAorCQkJCTdCMDk5
MkY0MTVBQ0YxQUQwMEVENkQyMCAvKiBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcCAqLywKIAkJCQlG
RDhFOUJERTEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hhcGVyTm9kZUN1c3RvbS5jcHAgKi8s
CiAJCQkJNDlFRUQxNEMxMDUxOTcxQTAwMDk5RkFCIC8qIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
Q3VzdG9tLmNwcCAqLywKIAkJCQkzMTlFNjg4NjEzMjdDOTExMDA0QUM5MUEgLyogSlNXZWJLaXRB
bmltYXRpb25DdXN0b20uY3BwICovLApAQCAtMjMxMTcsNiArMjMxMzcsNyBAQAogCQkJCTE4ODYw
NEI0MEYyRTY1NEEwMDBCNjQ0MyAvKiBET01UaW1lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDVG
RDY5RTAxMjg0NUQ0MzAwQjJCRUIzIC8qIERPTVRpbWVTdGFtcC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNzZGQzJCMEMxMjM3MERBMDAwNkE5OTFBIC8qIERPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJN0JCMzVBRUMxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzFBMzdCRTA5N0M3MTVGMDAxOUYzRDggLyogRE9NVHJhdmVyc2Fs
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTUyNkNEMjBBQjBCN0Q5MDAwMzAyRUEgLyogRE9NVHJl
ZVdhbGtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODUwQjQxQzMwQUQ5RTdFNzAwQTZFRDRGIC8q
IERPTVRyZWVXYWxrZXJJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMzc3Miw2ICsyMzc5
Myw3IEBACiAJCQkJQzUxMzdDRjMxMUE1ODM3ODAwNEFEQjk5IC8qIEpTRE9NU3RyaW5nTGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2NDY0OTgxMUQ4MjM0OTAwNjQ1NUIwIC8qIEpTRE9NU3Ry
aW5nTWFwLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Njk0NTYzRDEyMTREOTdDMDAwN0NCQUUgLyog
SlNET01Ub2tlbkxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCTdCMzUzN0M2MTVDQjJDQjUwMDgz
QUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTM3RTAwNjEy
REJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNjkzMjc0
MEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1MkZCQkJDMERFMjdDQjYwMDAxRDM4NiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yNjM3NSw2ICsyNjM5Nyw3IEBACiAJCQkJOTMzQTE0QUEwQjdEMUQwOTAwQTUz
RkZEIC8qIERPTVRleHRFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTE4ODYwNEIzMEYyRTY1
NEEwMDBCNjQ0MyAvKiBET01UaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3NkZDMkIwQjEy
MzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdC
QjM1QUVCMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NTUyNkNEMzBBQjBCN0RBMDAwMzAyRUEgLyogRE9NVHJlZVdhbGtlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTg1QzdGNDkyMEFBRjc5REMwMDQwMTRERCAvKiBET01VSUV2ZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkUzN0RGREExMkRCQUZCODAwQTZCMjMzIC8qIERPTVVSTC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTI2OTc1LDYgKzI2OTk4LDggQEAKIAkJCQlCQzY0NjQ5QzEx
RDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNzY5NDU2M0MxMjE0RDk3QzAwMDdDQkFFIC8qIEpTRE9NVG9rZW5MaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTE0RTBCQzU2MTM2MTQ4QTgwMDJBRDEyRSAvKiBKU0RPTVRva2VuTGlz
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjM1MzdDNTE1Q0IyQ0I1MDA4M0FCNjkg
LyogSlNET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjM1MzkzQzE1Q0NB
MEFDMDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRTM3RTAwNTEyREJDNUE0MDBBNkIyMzMgLyogSlNET01VUkwuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMTQwM0JBMEMwOUVCMThDNzAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDNjkzMjczMEQ3RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzQ0Nyw2ICsyNzQ3Miw3IEBACiAJCQkJOTEwODlE
MzMxNEMzMzYwNTAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTFBMzkwNUIxNEMwRjYxMTAwRjY3OTAxIC8qIEpTVWludDhDbGFtcGVkQXJyYXlD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0IxRUEwQ0UxNTc2QzVCNTAwNjAxNzdEIC8q
IEpTVW5kb01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJN0IwOTkyRjUxNUFDRjFBRDAw
RUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTVD
NzcwOTQxMDBEM0NBODAwNUJBMjY3IC8qIEpTVmFsaWRpdHlTdGF0ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlGRDgyRDdGNzEzRDRDOEJEMDA0RTQzNzIgLyogSlNXYXZlU2hhcGVyTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlGRDhFOUJERjEzRDRDRDJCMDA1MERDNzIgLyogSlNXYXZlU2hh
cGVyTm9kZUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRPTVRyYW5zYWN0aW9u
LmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhl
Y1N0YXRlLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorRE9NVHJhbnNhY3Rpb246OkRPTVRyYW5z
YWN0aW9uKERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1faXNvbGF0ZWRX
b3JsZChpc29sYXRlZFdvcmxkKQorICAgICwgbV91bmRvTWFuYWdlcigwKQoreworfQorCitQYXNz
UmVmUHRyPERPTVRyYW5zYWN0aW9uPiBET01UcmFuc2FjdGlvbjo6Y3JlYXRlKERPTVdyYXBwZXJX
b3JsZCogaXNvbGF0ZWRXb3JsZCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IERPTVRyYW5z
YWN0aW9uKGlzb2xhdGVkV29ybGQpKTsKK30KKwordm9pZCBET01UcmFuc2FjdGlvbjo6YXBwbHko
KQoreworICAgIG1faXNBdXRvbWF0aWMgPSBoYXNGdW5jdGlvbigiZXhlY3V0ZUF1dG9tYXRpYyIp
OworICAgIGlmICghbV9pc0F1dG9tYXRpYykKKyAgICAgICAgY2FsbEZ1bmN0aW9uKCJleGVjdXRl
Iik7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OnVuYXBwbHkoKQoreworICAgIGlmICghbV9p
c0F1dG9tYXRpYykKKyAgICAgICAgY2FsbEZ1bmN0aW9uKCJ1bmRvIik7CisgICAgCisgICAgaWYg
KG1fdW5kb01hbmFnZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyUmVkb1N0ZXAo
dGhpcyk7Cit9CisKK3ZvaWQgRE9NVHJhbnNhY3Rpb246OnJlYXBwbHkoKQoreworICAgIGlmICgh
bV9pc0F1dG9tYXRpYykKKyAgICAgICAgY2FsbEZ1bmN0aW9uKCJyZWRvIik7CisgICAgCisgICAg
aWYgKG1fdW5kb01hbmFnZXIpCisgICAgICAgIG1fdW5kb01hbmFnZXItPnJlZ2lzdGVyVW5kb1N0
ZXAodGhpcyk7Cit9CisKK0V4ZWNTdGF0ZSogRE9NVHJhbnNhY3Rpb246OmV4ZWNTdGF0ZSgpCit7
CisgICAgaWYgKCFtX3VuZG9NYW5hZ2VyIHx8ICFtX3VuZG9NYW5hZ2VyLT51bmRvU2NvcGVIb3N0
KCkpCisgICAgICAgIHJldHVybiAwOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQgPSBtX3VuZG9NYW5hZ2VyLT51bmRvU2NvcGVIb3N0KCktPmRvY3VtZW50KCk7CisgICAgaWYg
KCFjb250ZXh0IHx8IGNvbnRleHQtPmlzSlNFeGVjdXRpb25Gb3JiaWRkZW4oKSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01H
bG9iYWxPYmplY3QoY29udGV4dCwgbV9pc29sYXRlZFdvcmxkKTsKKyAgICBpZiAoIWdsb2JhbE9i
amVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpOworfQorCitib29sIERPTVRyYW5zYWN0aW9uOjpnZXRGdW5jdGlvbihjb25zdCBjaGFy
KiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIGZ1bmN0aW9uLCBFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIHdyYXBw
ZXIgPSBhc09iamVjdCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgdGhpcykpOworCisgICAgSlNW
YWx1ZSBkYXRhID0gd3JhcHBlci0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgRE9NVFJBTlNB
Q1RJT05fREFUQSkpOworICAgIGlmICghZGF0YS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBmdW5jdGlvbiA9IGFzT2JqZWN0KGRhdGEpLT5nZXQoZXhlYywgSWRlbnRp
ZmllcihleGVjLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICByZXR1cm4gZnVuY3Rpb24uaXNGdW5jdGlv
bigpOworfQorCitib29sIERPTVRyYW5zYWN0aW9uOjpoYXNGdW5jdGlvbihjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY1N0YXRlKCk7CisgICAg
aWYgKCFleGVjKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBKU1ZhbHVlIGZ1bmN0aW9u
OworICAgIHJldHVybiBnZXRGdW5jdGlvbihwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBleGVjKTsK
K30KKwordm9pZCBET01UcmFuc2FjdGlvbjo6Y2FsbEZ1bmN0aW9uKGNvbnN0IGNoYXIqIHByb3Bl
cnR5TmFtZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjU3RhdGUoKTsKKyAgICBpZiAo
IWV4ZWMpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWUgZnVuY3Rpb247CisgICAgaWYg
KCFnZXRGdW5jdGlvbihwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBleGVjKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBn
ZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSAhPSBDYWxs
VHlwZU5vbmUpIHsKKyAgICAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAg
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKKyAgICAgICAgSlNNYWluVGhyZWFkRXhlY1N0
YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwg
YXJncyk7CisgICAgfQorfQorCit9CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoK
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpZm5kZWYgRE9NVHJhbnNhY3Rpb25faAorI2RlZmluZSBET01UcmFuc2FjdGlvbl9oCisK
KyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgi
CisjaW5jbHVkZSAiVW5kb1N0ZXAuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNkZWZp
bmUgRE9NVFJBTlNBQ1RJT05fREFUQSAiZGF0YSIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBOb2RlOworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFVuZG9NYW5h
Z2VyOworCitjbGFzcyBET01UcmFuc2FjdGlvbiA6IHB1YmxpYyBVbmRvU3RlcCB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IGNyZWF0ZShET01XcmFwcGVy
V29ybGQqIGlzb2xhdGVkV29ybGQpOworICAgIAorICAgIHZvaWQgYXBwbHkoKTsKKyAgICB2b2lk
IHVuYXBwbHkoKSBPVkVSUklERTsKKyAgICB2b2lkIHJlYXBwbHkoKSBPVkVSUklERTsKKyAgICAK
KyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBF
ZGl0QWN0aW9uVW5zcGVjaWZpZWQ7IH0KKyAgICBib29sIGlzRE9NVHJhbnNhY3Rpb24oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9CisgICAgCisgICAgVW5kb01hbmFnZXIqIHVuZG9N
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV91bmRvTWFuYWdlcjsgfQorICAgIHZvaWQgc2V0VW5k
b01hbmFnZXIoVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyKSB7IG1fdW5kb01hbmFnZXIgPSB1bmRv
TWFuYWdlcjsgfQorCitwcml2YXRlOgorICAgIERPTVRyYW5zYWN0aW9uKERPTVdyYXBwZXJXb3Js
ZCogaXNvbGF0ZWRXb3JsZCk7CisgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWNTdGF0ZSgpOworICAg
IGJvb2wgZ2V0RnVuY3Rpb24oY29uc3QgY2hhciogcHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUm
IGZ1bmN0aW9uLCBKU0M6OkV4ZWNTdGF0ZSopOworICAgIGJvb2wgaGFzRnVuY3Rpb24oY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lKTsKKyAgICB2b2lkIGNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBw
cm9wZXJ0eU5hbWUpOworCisgICAgRE9NV3JhcHBlcldvcmxkKiBtX2lzb2xhdGVkV29ybGQ7Cisg
ICAgVW5kb01hbmFnZXIqIG1fdW5kb01hbmFnZXI7CisgICAgYm9vbCBtX2lzQXV0b21hdGljOwor
fTsKKworfQorCisjZW5kaWYKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDEyNDk3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY1LDYgKzY1LDcgQEAKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3RDdXN0
b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NU3RyaW5nTWFwQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U0RPTVRva2VuTGlzdEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbkN1c3Rv
bS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dCYXNlLmNwcCIKICNpbmNsdWRlICJKU0RPTVdp
bmRvd0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5jcHAiCkBAIC0xNTgs
NiArMTU5LDcgQEAKICNpbmNsdWRlICJKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1VpbnQ4QXJyYXlDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVWludDhDbGFtcGVkQXJyYXlD
dXN0b20uY3BwIgorI2luY2x1ZGUgIkpTVW5kb01hbmFnZXJDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1dlYktpdEFuaW1hdGlv
bkxpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9t
LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25D
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
VHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQor
CisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5oIgorCisjaW5jbHVkZSAiVW5kb01hbmFnZXIu
aCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitib29s
IEpTRE9NVHJhbnNhY3Rpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBKU0RPTVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbldyYXBwZXIgPSBqc0Nhc3Q8SlNE
T01UcmFuc2FjdGlvbio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgRE9NVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uID0gc3RhdGljX2Nhc3Q8RE9NVHJhbnNhY3Rpb24qPih0cmFuc2FjdGlv
bldyYXBwZXItPmltcGwoKSk7CisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2VyID0gdHJhbnNh
Y3Rpb24tPnVuZG9NYW5hZ2VyKCk7CisgICAgaWYgKCF1bmRvTWFuYWdlcikKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghdW5kb01hbmFnZXItPnVuZG9TY29wZUhvc3QoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChy
b290KHVuZG9NYW5hZ2VyLT51bmRvU2NvcGVIb3N0KCkpKTsKK30KKworfQorCisjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0
b20uY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorCisjaW5jbHVkZSAiSlNVbmRv
TWFuYWdlci5oIgorCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RP
TVRyYW5zYWN0aW9uLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUgSlNVbmRvTWFuYWdl
cjo6dHJhbnNhY3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Vu
ZG9NYW5hZ2VyOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7
CisgICAgSlNVbmRvTWFuYWdlciogY2FzdGVkVGhpcyA9IGpzQ2FzdDxKU1VuZG9NYW5hZ2VyKj4o
YXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0
ZWRUaGlzLCAmSlNVbmRvTWFuYWdlcjo6c19pbmZvKTsKKyAgICBVbmRvTWFuYWdlciogaW1wbCA9
IHN0YXRpY19jYXN0PFVuZG9NYW5hZ2VyKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKworICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisKKyAgICBKU1ZhbHVl
IGRpY3Rpb25hcnkgPSBNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAwLCBEZWZhdWx0SXNV
bmRlZmluZWQpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFkaWN0aW9uYXJ5LmlzT2JqZWN0KCkpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVGhlIGZpcnN0
IGFyZ3VtZW50IGlzIG5vdCBvZiB0eXBlIERPTVRyYW5zYWN0aW9uLiIpKTsKKworICAgIGJvb2wg
bWVyZ2UoTUFZQkVfTUlTU0lOR19QQVJBTUVURVIoZXhlYywgMSwgRGVmYXVsdElzVW5kZWZpbmVk
KS50b0Jvb2xlYW4oKSk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKKworICAgIFJlZlB0cjxET01UcmFuc2FjdGlvbj4gdHJhbnNh
Y3Rpb24gPSBET01UcmFuc2FjdGlvbjo6Y3JlYXRlKGN1cnJlbnRXb3JsZChleGVjKSk7CisgICAg
SlNPYmplY3QqIHRyYW5zYWN0aW9uV3JhcHBlciA9IGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRyYW5zYWN0aW9uLmdldCgpKSk7CisKKyAgICBJZGVudGlm
aWVyIGRhdGFOYW1lKGV4ZWMsIERPTVRSQU5TQUNUSU9OX0RBVEEpOworICAgIHRyYW5zYWN0aW9u
V3JhcHBlci0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZGF0YU5hbWUsIGRpY3Rpb25h
cnksIERvbnREZWxldGUgfCBSZWFkT25seSk7CisKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBpbXBsLT50cmFuc2FjdCh0cmFuc2FjdGlvbiwgbWVyZ2UsIGVjKTsKKyAgICBpZiAoZWMp
CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDEyNDk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY2MiwxMSArNjYyLDYgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAgICAg
Y2xlYXJTdHlsZVJlc29sdmVyKCk7IC8vIFdlIG5lZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0
b3IgYmVmb3JlIGRlc3Ryb3lpbmcgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KICAgICBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKLSNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQotICAg
IGlmIChtX3VuZG9NYW5hZ2VyKQotICAgICAgICBtX3VuZG9NYW5hZ2VyLT5kaXNjb25uZWN0KCk7
Ci0jZW5kaWYKLQogICAgIC8vIFdlIG11c3QgY2FsbCBjbGVhclJhcmVEYXRhKCkgaGVyZSBzaW5j
ZSBhIERvY3VtZW50IGNsYXNzIGluaGVyaXRzIFRyZWVTY29wZQogICAgIC8vIGFzIHdlbGwgYXMg
Tm9kZS4gU2VlIGEgY29tbWVudCBvbiBUcmVlU2NvcGUuaCBmb3IgdGhlIHJlYXNvbi4KICAgICBp
ZiAoaGFzUmFyZURhdGEoKSkKQEAgLTYxMzIsNyArNjEyNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU8KIFBhc3NSZWZQdHI8VW5kb01hbmFnZXI+IERvY3VtZW50
Ojp1bmRvTWFuYWdlcigpCiB7CiAgICAgaWYgKCFtX3VuZG9NYW5hZ2VyKQotICAgICAgICBtX3Vu
ZG9NYW5hZ2VyID0gVW5kb01hbmFnZXI6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgbV91bmRvTWFu
YWdlciA9IFVuZG9NYW5hZ2VyOjpjcmVhdGUodGhpcywgdGhpcyk7CiAgICAgcmV0dXJuIG1fdW5k
b01hbmFnZXI7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9u
IDEyNDk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI0NSw3ICsyMjQ1LDcgQEAgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4gRWxlbWVudDo6
dW5kb01hbgogICAgIH0KICAgICBFbGVtZW50UmFyZURhdGEqIGRhdGEgPSBlbnN1cmVFbGVtZW50
UmFyZURhdGEoKTsKICAgICBpZiAoIWRhdGEtPm1fdW5kb01hbmFnZXIpCi0gICAgICAgIGRhdGEt
Pm1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKHRoaXMpOworICAgICAgICBkYXRh
LT5tX3VuZG9NYW5hZ2VyID0gVW5kb01hbmFnZXI6OmNyZWF0ZShkb2N1bWVudCgpLCB0aGlzKTsK
ICAgICByZXR1cm4gZGF0YS0+bV91bmRvTWFuYWdlcjsKIH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuaAkocmV2aXNpb24gMTI0OTc1KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NSw2ICs0NSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdW5hcHBs
eSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCByZWFwcGx5KCkgT1ZFUlJJREU7CiAgICAg
RWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9lZGl0
QWN0aW9uOyB9CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICBib29sIGlzRE9NVHJhbnNh
Y3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCiAgICAgdm9p
ZCBhcHBlbmQoU2ltcGxlRWRpdENvbW1hbmQqKTsKICAgICBib29sIHdhc0NyZWF0ZUxpbmtDb21t
YW5kKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0QWN0aW9uID09IEVkaXRBY3Rpb25DcmVhdGVMaW5r
OyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaWRsCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZh
Y2UgWworICAgICAgICBDb25kaXRpb25hbD1VTkRPX01BTkFHRVIsCisgICAgICAgIEpTQ3VzdG9t
SXNSZWFjaGFibGUKKyAgICBdIERPTVRyYW5zYWN0aW9uIHsKKyAgICB9OworCit9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCShyZXZpc2lvbiAxMjQ5NzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDcgQEAK
ICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJUeXBpbmdDb21tYW5kLmgiCisjaW5jbHVkZSAiVW5kb01hbmFnZXIuaCIKICNpbmNsdWRl
ICJVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgi
CiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC04MDIsOCArODAzLDEyIEBAIHZvaWQgRWRpdG9yOjph
cHBsaWVkRWRpdGluZyhQYXNzUmVmUHRyPEMKICAgICAgICAgLy8gT25seSByZWdpc3RlciBhIG5l
dyB1bmRvIGNvbW1hbmQgaWYgdGhlIGNvbW1hbmQgcGFzc2VkIGluIGlzCiAgICAgICAgIC8vIGRp
ZmZlcmVudCBmcm9tIHRoZSBsYXN0IGNvbW1hbmQKICAgICAgICAgbV9sYXN0RWRpdENvbW1hbmQg
PSBjbWQ7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgICAgIGlmIChjbGllbnQoKSkK
ICAgICAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclVuZG9TdGVwKG1fbGFzdEVkaXRDb21tYW5k
LT5lbnN1cmVDb21wb3NpdGlvbigpKTsKKyNlbHNlCisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnVuZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0RWRpdENvbW1hbmQtPmVu
c3VyZUNvbXBvc2l0aW9uKCkpOworI2VuZGlmCiAgICAgfQogCiAgICAgcmVzcG9uZFRvQ2hhbmdl
ZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CkBAIC04MjAsOCArODI1LDEyIEBAIHZvaWQgRWRpdG9y
Ojp1bmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXItPnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmcoY21kLmdldCgpKTsKICAgICAKICAgICBt
X2xhc3RFZGl0Q29tbWFuZCA9IDA7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYg
KGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+cmVnaXN0ZXJSZWRvU3RlcChjbWQpOworI2Vs
c2UKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5yZWdpc3RlclJlZG9T
dGVwKGNtZCk7CisjZW5kaWYKICAgICByZXNwb25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0
aW9uKTsKIH0KIApAQCAtODM1LDggKzg0NCwxMiBAQCB2b2lkIEVkaXRvcjo6cmVhcHBsaWVkRWRp
dGluZyhQYXNzUmVmUHRyCiAgICAgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVj
dGlvbiwgRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFy
VHlwaW5nU3R5bGUpOwogICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5B
QkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5y
ZWdpc3RlclVuZG9TdGVwKGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVu
ZG9NYW5hZ2VyKCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRU
b0NoYW5nZWRDb250ZW50cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC0xMjQyLDI0ICsxMjU1LDQw
IEBAIHZvaWQgRWRpdG9yOjpjbGVhclVuZG9SZWRvT3BlcmF0aW9ucygpCiAKIGJvb2wgRWRpdG9y
OjpjYW5VbmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICByZXR1cm4gY2xp
ZW50KCkgJiYgY2xpZW50KCktPmNhblVuZG8oKTsKKyNlbHNlCisgICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPmNhblVuZG8oKTsKKyNlbmRpZgogfQogCiB2b2lk
IEVkaXRvcjo6dW5kbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAgICAgaWYgKGNs
aWVudCgpKQogICAgICAgICBjbGllbnQoKS0+dW5kbygpOworI2Vsc2UKKyAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT51bmRvKCk7CisjZW5kaWYKIH0KIAogYm9vbCBFZGl0
b3I6OmNhblJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIHJldHVybiBj
bGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuUmVkbygpOworI2Vsc2UKKyAgICByZXR1cm4gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuUmVkbygpOworI2VuZGlmCiB9CiAKIHZv
aWQgRWRpdG9yOjpyZWRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICBpZiAo
Y2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWRvKCk7CisjZWxzZQorICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJlZG8oKTsKKyNlbmRpZgogfQogCiB2b2lkIEVk
aXRvcjo6ZGlkQmVnaW5FZGl0aW5nKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5k
b01hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01h
bmFnZXIuY3BwCShyZXZpc2lvbiAxMjQ5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Vu
ZG9NYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTggKzMzLDIzIEBACiAKICNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKICNpbmNs
dWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiTm9kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGVQbGFjZWhvbGRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8VW5k
b01hbmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmVhdGUoTm9kZSogaG9zdCkKK1Bhc3NSZWZQdHI8VW5k
b01hbmFnZXI+IFVuZG9NYW5hZ2VyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgTm9kZSogaG9zdCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFVuZG9NYW5hZ2Vy
KGhvc3QpKTsKKyAgICBSZWZQdHI8VW5kb01hbmFnZXI+IHVuZG9NYW5hZ2VyID0gYWRvcHRSZWYo
bmV3IFVuZG9NYW5hZ2VyKGNvbnRleHQsIGhvc3QpKTsKKyAgICB1bmRvTWFuYWdlci0+c3VzcGVu
ZElmTmVlZGVkKCk7CisgICAgcmV0dXJuIHVuZG9NYW5hZ2VyLnJlbGVhc2UoKTsKIH0KIAotVW5k
b01hbmFnZXI6OlVuZG9NYW5hZ2VyKE5vZGUqIGhvc3QpCi0gICAgOiBtX3VuZG9TY29wZUhvc3Qo
aG9zdCkKK1VuZG9NYW5hZ2VyOjpVbmRvTWFuYWdlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBOb2RlKiBob3N0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQsIHRoaXMp
CisgICAgLCBtX3VuZG9TY29wZUhvc3QoaG9zdCkKKyAgICAsIG1faXNJblByb2dyZXNzKGZhbHNl
KQogewogfQogCkBAIC01Myw1NCArNTgsMTQzIEBAIHZvaWQgVW5kb01hbmFnZXI6OmRpc2Nvbm5l
Y3QoKQogICAgIG1fdW5kb1Njb3BlSG9zdCA9IDA7CiB9CiAKLXZvaWQgVW5kb01hbmFnZXI6OnRy
YW5zYWN0KGNvbnN0IERpY3Rpb25hcnkmLCBib29sLCBFeGNlcHRpb25Db2RlJiBlYykKK3ZvaWQg
VW5kb01hbmFnZXI6OnN0b3AoKQogewotICAgIGlmICghaXNDb25uZWN0ZWQoKSkgeworICAgIGRp
c2Nvbm5lY3QoKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6dHJhbnNhY3QoUGFzc1JlZlB0cjxE
T01UcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24sIGJvb2wgbWVyZ2UsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhaXNDb25uZWN0ZWQoKSkgewogICAgICAg
ICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBS
ZWZQdHI8VW5kb1N0ZXA+IHN0ZXA7Ci0gICAgbV91bmRvU3RhY2suYXBwZW5kKHN0ZXApOworICAg
IGNsZWFyUmVkbyhBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICB0cmFuc2FjdGlvbi0+c2V0VW5k
b01hbmFnZXIodGhpcyk7CisKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgUmVmUHRy
PFVuZG9NYW5hZ2VyPiBwcm90ZWN0KHRoaXMpOworICAgIHRyYW5zYWN0aW9uLT5hcHBseSgpOwor
ICAgIG1faXNJblByb2dyZXNzID0gZmFsc2U7CisKKyAgICBpZiAoIW1lcmdlIHx8IG1fdW5kb1N0
YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgbV91bmRvU3RhY2suYXBwZW5kKGFkb3B0UHRyKG5ldyBV
bmRvTWFuYWdlckVudHJ5KSk7CisgICAgbV91bmRvU3RhY2subGFzdCgpLT5hcHBlbmQodHJhbnNh
Y3Rpb24pOwogfQogCiB2b2lkIFVuZG9NYW5hZ2VyOjp1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIGlmICghaXNDb25uZWN0ZWQoKSkgeworICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAh
aXNDb25uZWN0ZWQoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9pblByb2dyZXNzRW50cnkgPSBhZG9wdFB0cihuZXcgVW5kb01hbmFn
ZXJFbnRyeSk7CisKKyAgICBtX2lzSW5Qcm9ncmVzcyA9IHRydWU7CisgICAgUmVmUHRyPFVuZG9N
YW5hZ2VyPiBwcm90ZWN0KHRoaXMpOworICAgIFVuZG9NYW5hZ2VyRW50cnkgZW50cnkgPSAqbV91
bmRvU3RhY2subGFzdCgpOworICAgIGZvciAoc2l6ZV90IGkgPSBlbnRyeS5zaXplKCk7IGkgPiAw
OyAtLWkpCisgICAgICAgIGVudHJ5W2kgLSAxXS0+dW5hcHBseSgpOworICAgIG1faXNJblByb2dy
ZXNzID0gZmFsc2U7CisKKyAgICBtX3JlZG9TdGFjay5hcHBlbmQobV9pblByb2dyZXNzRW50cnku
cmVsZWFzZSgpKTsKKyAgICBtX3VuZG9TdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQgVW5k
b01hbmFnZXI6OnJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3Rl
ZCgpKSB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGlmIChtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2luUHJv
Z3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKworICAgIG1faXNJ
blByb2dyZXNzID0gdHJ1ZTsKKyAgICBSZWZQdHI8VW5kb01hbmFnZXI+IHByb3RlY3QodGhpcyk7
CisgICAgVW5kb01hbmFnZXJFbnRyeSBlbnRyeSA9ICptX3JlZG9TdGFjay5sYXN0KCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlb
aSAtIDFdLT5yZWFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIG1f
dW5kb1N0YWNrLmFwcGVuZChtX2luUHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAgIG1fcmVk
b1N0YWNrLnJlbW92ZUxhc3QoKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6dW5kbygpCit7Cisg
ICAgdW5kbyhBU1NFUlRfTk9fRVhDRVBUSU9OKTsKK30KKwordm9pZCBVbmRvTWFuYWdlcjo6cmVk
bygpCit7CisgICAgcmVkbyhBU1NFUlRfTk9fRVhDRVBUSU9OKTsKK30KKwordm9pZCBVbmRvTWFu
YWdlcjo6cmVnaXN0ZXJVbmRvU3RlcChQYXNzUmVmUHRyPFVuZG9TdGVwPiBzdGVwKQoreworICAg
IGlmICghbV9pc0luUHJvZ3Jlc3MpIHsKKyAgICAgICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+
IGVudHJ5ID0gYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpOworICAgICAgICBlbnRyeS0+
YXBwZW5kKHN0ZXApOworICAgICAgICBtX3VuZG9TdGFjay5hcHBlbmQoZW50cnkucmVsZWFzZSgp
KTsKKworICAgICAgICBjbGVhclJlZG8oQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgfSBlbHNl
CisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBlbmQoc3RlcCk7Cit9CisKK3ZvaWQgVW5k
b01hbmFnZXI6OnJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sK
KyAgICBpZiAoIW1faXNJblByb2dyZXNzKSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVu
dHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50
cnktPmFwcGVuZChzdGVwKTsKKyAgICAgICAgbV9yZWRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVh
c2UoKSk7CisgICAgfSBlbHNlCisgICAgICAgIG1faW5Qcm9ncmVzc0VudHJ5LT5hcHBlbmQoc3Rl
cCk7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyU3RhY2soVW5kb01hbmFnZXJTdGFjayYgc3RhY2sp
Cit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAg
ICAgICBjb25zdCBVbmRvTWFuYWdlckVudHJ5JiBlbnRyeSA9ICpzdGFja1tpXTsKKyAgICAgICAg
aWYgKGVudHJ5LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAo
ZW50cnlbMF0tPmlzRE9NVHJhbnNhY3Rpb24oKSkgeworICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBlbnRyeS5zaXplKCk7ICsraikgeworICAgICAgICAgICAgICAgIFVuZG9TdGVw
KiBzdGVwID0gZW50cnlbal0uZ2V0KCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0ZXAtPmlz
RE9NVHJhbnNhY3Rpb24oKSk7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8RE9NVHJhbnNh
Y3Rpb24qPihzdGVwKS0+c2V0VW5kb01hbmFnZXIoMCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgc3RhY2suY2xlYXIoKTsKIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6Y2xl
YXJVbmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghaXNDb25uZWN0ZWQoKSkgewor
ICAgIGlmIChtX2lzSW5Qcm9ncmVzcyB8fCAhaXNDb25uZWN0ZWQoKSkgewogICAgICAgICBlYyA9
IElOVkFMSURfQUNDRVNTX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3VuZG9T
dGFjay5jbGVhcigpOworICAgIGNsZWFyU3RhY2sobV91bmRvU3RhY2spOwogfQogCiB2b2lkIFVu
ZG9NYW5hZ2VyOjpjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nv
bm5lY3RlZCgpKSB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7
CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIG1fcmVkb1N0YWNrLmNsZWFyKCk7CisgICAgY2xlYXJTdGFjayhtX3JlZG9TdGFjayk7
CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyVW5kb1JlZG8oKQogewotICAgIG1fdW5kb1N0
YWNrLmNsZWFyKCk7Ci0gICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKKyAgICBjbGVhclN0YWNrKG1f
dW5kb1N0YWNrKTsKKyAgICBjbGVhclN0YWNrKG1fcmVkb1N0YWNrKTsKIH0KIAogYm9vbCBVbmRv
TWFuYWdlcjo6aXNDb25uZWN0ZWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRv
TWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFn
ZXIuaAkocmV2aXNpb24gMTI0OTc1KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9VbmRvTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMywxMSBAQAogCiAjaWYgRU5BQkxFKFVO
RE9fTUFOQUdFUikKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVm
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CkBAIC00MiwzMiArNDUsNTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBE
aWN0aW9uYXJ5OworY2xhc3MgRE9NVHJhbnNhY3Rpb247CiBjbGFzcyBOb2RlOwogCi1jbGFzcyBV
bmRvTWFuYWdlciA6IHB1YmxpYyBSZWZDb3VudGVkPFVuZG9NYW5hZ2VyPiB7Cit0eXBlZGVmIFZl
Y3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gVW5kb01hbmFnZXJFbnRyeTsKK3R5cGVkZWYgVmVjdG9y
PE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiA+IFVuZG9NYW5hZ2VyU3RhY2s7CisKK2NsYXNzIFVu
ZG9NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8VW5kb01hbmFnZXI+LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxVbmRvTWFuYWdlcj4g
Y3JlYXRlKE5vZGUqIGhvc3QpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVuZG9NYW5hZ2VyPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5vZGUqIGhvc3QpOworICAgIE5vZGUqIHVu
ZG9TY29wZUhvc3QoKSBjb25zdCB7IHJldHVybiBtX3VuZG9TY29wZUhvc3Q7IH0KICAgICB2b2lk
IGRpc2Nvbm5lY3QoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOwogCi0gICAg
dm9pZCB0cmFuc2FjdChjb25zdCBEaWN0aW9uYXJ5JiB0cmFuc2FjdGlvbiwgYm9vbCBtZXJnZSwg
RXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgdHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2Fj
dGlvbj4sIGJvb2wgbWVyZ2UsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgdW5kbyhFeGNl
cHRpb25Db2RlJik7CiAgICAgdm9pZCByZWRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVu
ZG8oKTsKKyAgICB2b2lkIHJlZG8oKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5kb1N0YWNrLnNpemUoKSArIG1fcmVkb1N0YWNrLnNpemUoKTsgfQorICAgIHVu
c2lnbmVkIHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOyB9CiAK
ICAgICB2b2lkIGNsZWFyVW5kbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVhclJlZG8o
RXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgY2xlYXJVbmRvUmVkbygpOworICAgIAorICAgIGJv
b2wgY2FuVW5kbygpIGNvbnN0IHsgcmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7IH0KKyAg
ICBib29sIGNhblJlZG8oKSBjb25zdCB7IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOyB9
CisgICAgCisgICAgdm9pZCByZWdpc3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsK
KyAgICB2b2lkIHJlZ2lzdGVyUmVkb1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAor
ICAgIGNvbnN0IFVuZG9NYW5hZ2VyU3RhY2smIHVuZG9TdGFjaygpIGNvbnN0IHsgcmV0dXJuIG1f
dW5kb1N0YWNrOyB9CisgICAgY29uc3QgVW5kb01hbmFnZXJTdGFjayYgcmVkb1N0YWNrKCkgY29u
c3QgeyByZXR1cm4gbV9yZWRvU3RhY2s7IH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBVbmRv
TWFuYWdlcihOb2RlKiBob3N0KTsKKyAgICBleHBsaWNpdCBVbmRvTWFuYWdlcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgTm9kZSogaG9zdCk7CiAgICAgYm9vbCBpc0Nvbm5lY3RlZCgpOwogICAg
IAogICAgIE5vZGUqIG1fdW5kb1Njb3BlSG9zdDsKLSAgICBWZWN0b3I8UmVmUHRyPFVuZG9TdGVw
PiA+IG1fdW5kb1N0YWNrOwotICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+ID4gbV9yZWRvU3Rh
Y2s7CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3VuZG9TdGFjazsKKyAgICBVbmRvTWFuYWdlclN0
YWNrIG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7CisgICAgT3duUHRyPFVu
ZG9NYW5hZ2VyRW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5OwogfTsKICAgICAKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCShyZXZpc2lvbiAxMjQ5NzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzMsOCArMzMsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29u
ZGl0aW9uYWw9VU5ET19NQU5BR0VSCiAgICAgXSBVbmRvTWFuYWdlciB7Ci0gICAgICAgIHZvaWQg
dHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFuc2FjdGlvbiwgaW4gYm9vbGVhbiBtZXJnZSkKLSAg
ICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3VzdG9tXSB2b2lkIHRy
YW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNhY3Rpb24sIGluIGJvb2xlYW4gbWVyZ2UpOwogCiAg
ICAgICAgIHZvaWQgdW5kbygpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKQEAg
LTQyLDYgKzQxLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3Ro
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBwb3NpdGlvbjsKIAog
ICAgICAgICB2b2lkIGNsZWFyVW5kbygpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHJldmlzaW9uIDEyNDk3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuYXBwbHkoKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHJlYXBwbHkoKSA9IDA7CiAgICAgdmlydHVhbCBFZGl0QWN0aW9uIGVkaXRp
bmdBY3Rpb24oKSBjb25zdCA9IDA7CisjaWYgRU5BQkxFKFVORE9fTUFOQUdFUikKKyAgICB2aXJ0
dWFsIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0ID0gMDsKKyNlbmRpZgogfTsKIAogfQpJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTI0OTc1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMDcgIFN1a29sc2FrIFNha3NodXdv
bmcgIDxzdWtvbHNha0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCB1bmRvTWFuYWdl
cidzIHVuZG8sIHJlZG8sIGxlbmd0aCwgcG9zaXRpb24sIGNsZWFyVW5kbywgYW5kIGNsZWFyUmVk
bworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODk3MjIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGVkaXRp
bmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9u
LXN1cnZpdmVzLWdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRv
bWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2Fj
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2Vy
LXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVkLgorCiAyMDEyLTA4LTA3ICBK
b3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5b3V0IFRlc3Qg
c3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1sIGlzIGZsYWt5
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1j
YWxsZWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5k
b21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1jYWxs
ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdHMg
dGhhdCBpZiB0aGVyZSBpcyBhIHNldHRlciBmb3IgImRhdGEiIGRlZmluZWQgb24gT2JqZWN0LnBy
b3RvdHlwZSwgaXQgd2lsbCBub3QgYmUgY2FsbGVkIHdoZW4gd2UgY3JlYXRlIGEgRE9NIHRyYW5z
YWN0aW9uLgorCitQQVNTIFRoZSBzZXR0ZXIgZm9yICJkYXRhIiBpcyBjYWxsZWQgd2hlbiB3ZSBz
ZXQgdGhlICJkYXRhIiBwcm9wZXJ0eSBvZiBhbiBvYmplY3QgdmlhIHNjcmlwdC4gCitQQVNTIFRo
ZSBzZXR0ZXIgZm9yICJkYXRhIiBpcyBub3QgY2FsbGVkIHdoZW4gd2UgY3JlYXRlIGEgRE9NIHRy
YW5zYWN0aW9uLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kYXRh
LXNldHRlci1ub3QtY2FsbGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy91bmRvbWFuYWdlci9kYXRhLXNldHRlci1ub3QtY2FsbGVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1jYWxsZWQu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPlNldHRlciBvZiBkYXRhIHByb3BlcnR5IGlzIG5vdCBjYWxsZWQ8
L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IGlmIHRoZXJlIGlz
IGEgc2V0dGVyIGZvciAiZGF0YSIgZGVmaW5lZCBvbiBPYmplY3QucHJvdG90eXBlLCBpdCB3aWxs
IG5vdAorYmUgY2FsbGVkIHdoZW4gd2UgY3JlYXRlIGEgRE9NIHRyYW5zYWN0aW9uLgorPHNjcmlw
dD4KK3ZhciBjYWxsZWQ7CisKK09iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygiZGF0
YSIsIGZ1bmN0aW9uKGQpIHsKKyAgICBjYWxsZWQgPSB0cnVlOworfSk7CisKK3Rlc3QoZnVuY3Rp
b24oKSB7CisgICAgY2FsbGVkID0gZmFsc2U7CisgICAgdmFyIG9iaiA9IG5ldyBPYmplY3QoKTsK
KyAgICBvYmouZGF0YSA9IDE7CisgICAgYXNzZXJ0X3RydWUoY2FsbGVkKTsKK30sICJUaGUgc2V0
dGVyIGZvciBcImRhdGFcIiBpcyBjYWxsZWQgd2hlbiB3ZSBzZXQgdGhlIFwiZGF0YVwiIHByb3Bl
cnR5IG9mIGFuIG9iamVjdCB2aWEgc2NyaXB0LiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGNhbGxlZCA9IGZhbHNlOworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAg
ICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbiAoKSB7IH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rp
b24gKCkgeyB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uICgpIHsgfQorICAgIH0pOworICAg
IGFzc2VydF9mYWxzZShjYWxsZWQpOworfSwgIlRoZSBzZXR0ZXIgZm9yIFwiZGF0YVwiIGlzIG5v
dCBjYWxsZWQgd2hlbiB3ZSBjcmVhdGUgYSBET00gdHJhbnNhY3Rpb24uIik7Cis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
ZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2Mt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGF0IHVuZG9NYW5hZ2VyIGtlZXBzIERPTVRy
YW5zYWN0aW9uIG9iamVjdHMgYWxpdmUgZHVyaW5nIGl0cyBsaWZldGltZSBhbmQgdGhlcmVmb3Jl
IGRvZXMgbm90IGNyYXNoIGFmdGVyIHRoZSBHQyBydW5zLgorCitQQVNTIEFmdGVyIHRoZSBHQyBy
dW5zLCB1bmRvTWFuYWdlci51bmRvKCkgc3RpbGwgd29ya3MuIAorUEFTUyBBZnRlciB0aGUgR0Mg
cnVucyBhZ2FpbiwgdW5kb01hbmFnZXIucmVkbygpIHN0aWxsIHdvcmtzLiAKKwpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJh
bnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPkRPTVRyYW5zYWN0aW9uIHN1cnZpdmVzIEdDPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KK1RoaXMgdGVzdHMgdGhhdCB1bmRvTWFuYWdlciBrZWVwcyBET01UcmFuc2FjdGlvbiBv
YmplY3RzIGFsaXZlIGR1cmluZyBpdHMgbGlmZXRpbWUKK2FuZCB0aGVyZWZvcmUgZG9lcyBub3Qg
Y3Jhc2ggYWZ0ZXIgdGhlIEdDIHJ1bnMuCisKKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3Jp
cHQ+Cit2YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCit2YXIgdSA9
IGRvY3VtZW50LnVuZG9NYW5hZ2VyOwordS50cmFuc2FjdCh7CisJImV4ZWN1dGUiOiBmdW5jdGlv
bigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAoImV4ZWN1dGVcbiIpOworCX0sCisJInVuZG8iOiBm
dW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAoInVuZG9cbiIpOworCX0sCisJInJlZG8i
OiBmdW5jdGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAoInJlZG9cbiIpOworCX0KK30pOwor
Cit0ZXN0KGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorCQlHQ0NvbnRy
b2xsZXIuY29sbGVjdCgpOworCXUudW5kbygpOworCQorCWFzc2VydF90cnVlKGxvZy5pbm5lclRl
eHQgPT0gImV4ZWN1dGVcbnVuZG9cbiIpOworfSwgIkFmdGVyIHRoZSBHQyBydW5zLCB1bmRvTWFu
YWdlci51bmRvKCkgc3RpbGwgd29ya3MuIik7CisJCit0ZXN0KGZ1bmN0aW9uKCkgeworCWlmICh3
aW5kb3cuR0NDb250cm9sbGVyKQorCQlHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCXUucmVkbygp
OworCQorCWFzc2VydF90cnVlKGxvZy5pbm5lclRleHQgPT0gImV4ZWN1dGVcbnVuZG9cbnJlZG9c
biIpOworfSwgIkFmdGVyIHRoZSBHQyBydW5zIGFnYWluLCB1bmRvTWFuYWdlci5yZWRvKCkgc3Rp
bGwgd29ya3MuIik7CisKK2xvZy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3Vu
ZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFn
ZXItdHJhbnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitU
aGlzIHRlc3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKK1BBU1MgZG9jdW1l
bnQgaGFzIHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3Bl
cnR5IHRyYW5zYWN0LiAKK1BBU1MgQWZ0ZXIgYSB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBh
cHBsaWVzIHRoZSB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgdHJhbnNhY3QgY2Fs
bCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0
ZXIgYW4gdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2Fj
dGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxp
ZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9N
YW5hZ2VyIHJlYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90
aGVyIHJlZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rp
b24uIAorUEFTUyBBZnRlciB0aHJlZSB0cmFuc2FjdCBjYWxscyB0aGF0IGFyZSBtZXJnZWQgaW50
byBvbmUgZW50cnksIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucy4g
CitQQVNTIEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSB0aHJl
ZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIAorUEFTUyBBZnRlciBhIHJlZG8g
Y2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhl
IGNvcnJlY3Qgb3JkZXIuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXRyYW5zYWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPlVuZG9NYW5hZ2VyLnRyYW5zYWN0KCk8L3RpdGxlPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHRyYW5zYWN0KCkgbWV0aG9k
LgorCis8ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPHNjcmlw
dD4KKwordGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50
LCAidW5kb01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIu
Iik7CisKK3ZhciB1bmRvTWFuYWdlciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOworCit0ZXN0KGZ1
bmN0aW9uKCkgeworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHVuZG9NYW5hZ2VyLCAidHJhbnNh
Y3QiKTsKK30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIik7CisKK3ZhciBl
ZGl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAgICAgfSwK
KyAgICAgICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1M
ICs9ICIxdSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAg
ICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9LCBmYWxz
ZSk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlICIpOworfSwgIkFmdGVy
IGEgdHJhbnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rpb24uIik7
CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAg
ICAiZXhlY3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0g
IjJlICI7CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAg
ICAgICBlZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8i
OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAg
ICAgICB9CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICIxZSAyZSAiKTsKK30sICJBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2Vy
IGFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsK
KyAgICB1bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwg
PT0gIjFlIDJlIDJ1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5h
cHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7Cisg
ICAgdW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICIxZSAyZSAydSAxdSAiKTsKK30sICJBZnRlciBhbm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFn
ZXIgdW5hcHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhU
TUwgPT0gIjFlIDJlIDJ1IDF1IDFyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFu
YWdlciByZWFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVy
SFRNTCA9PSAiMWUgMmUgMnUgMXUgMXIgMnIgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciByZWRvIGNh
bGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCitl
ZGl0LmlubmVySFRNTCA9ICIiOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2Vy
LnRyYW5zYWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGVkaXQuaW5uZXJIVE1MICs9ICIxZSAiOworICAgICAgICB9LAorICAgICAgICAidW5kbyI6IGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjF1ICI7CisgICAgICAg
IH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVy
SFRNTCArPSAiMXIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICB1bmRvTWFuYWdl
ci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiMmUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIydSAiOworICAgICAg
ICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5l
ckhUTUwgKz0gIjJyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICB1bmRvTWFuYWdl
ci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICBlZGl0LmlubmVySFRNTCArPSAiM2UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzdSAiOworICAgICAg
ICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5l
ckhUTUwgKz0gIjNyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgIik7Cit9LCAiQWZ0ZXIgdGhyZWUgdHJhbnNh
Y3QgY2FsbHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdlciBhcHBs
aWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
dW5kb01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIx
ZSAyZSAzZSAzdSAydSAxdSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2Vy
IHVuYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIp
OworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgMXIgMnIgM3IgIik7
Cit9LCAiQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgdGhyZWUg
dHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOworCitlZGl0LnN0eWxlLmRpc3Bs
YXkgPSAnbm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21h
bmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHVu
ZG8oKSwgcmVkbygpLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4KKworUEFTUyBkb2N1bWVudCBoYXMg
cHJvcGVydHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydGllcyB1
bmRvLCByZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBj
b3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAoMCkuIAor
UEFTUyBBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5hZ2VyJ3Mg
bGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIAorUEFTUyBBZnRlciBib2xkaW5nIHRoZSB0
ZXh0LCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhl
IHJlc3VsdCBpcyBhIGJvbGQgJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFn
ZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBw
bGFpbiAndGVzdCcuIAorUEFTUyBBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBp
cyAyIGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4gCitQQVNTIEFm
dGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEs
IGFuZCB0aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgcmVkb2luZywg
dW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1
bHQgaXMgYSBib2xkICd0ZXN0Jy4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21h
bmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5k
by1yZWRvLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlciBoYXMgdW5kbygpIGFuZCByZWRv
KCkgdGhhdCB3b3JrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgVW5k
b01hbmFnZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisKKzxkaXYg
aWQ9ImVkaXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQsICJ1bmRvTWFu
YWdlciIpOworfSwgImRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRvTWFuYWdlci4iKTsKKwordGVz
dChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFu
YWdlciwgInVuZG8iKTsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFu
YWdlciwgInJlZG8iKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5h
Z2VyLCAibGVuZ3RoIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFu
YWdlciwgInBvc2l0aW9uIik7Cit9LCAidW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywg
cmVkbywgbGVuZ3RoLCBhbmQgcG9zaXRpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAg
YXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDApOworICAgIGFzc2Vy
dF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworfSwgInVuZG9NYW5h
Z2VyIGhhcyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlv
biAoMCkuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIGVkaXQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZWRpdCIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3Np
dGlvbihlZGl0LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZh
bHNlLCAidGVzdCIpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
Lmxlbmd0aCA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3Np
dGlvbiA9PSAwKTsKK30sICJBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVu
ZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIik7CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICBy
YW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWRpdCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LmFkZFJhbmdlKHJhbmdlKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiQm9sZCIsIGZhbHNl
LCBudWxsKTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5n
dGggPT0gMik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24g
PT0gMCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7
Cit9LCAiQWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBh
bmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4iKTsKKyAg
ICAKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOwor
ICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsK
KyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAg
ICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOworfSwgIkFmdGVyIHVuZG9p
bmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUg
cmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAg
ICBkb2N1bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50
LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDIpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJI
VE1MID09ICIiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAy
IGFuZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4iKTsKKyAgICAKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOworfSwgIkFmdGVyIHJlZG9pbmcsIHVu
ZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0
IGlzIGEgcGxhaW4gJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1
bWVudC51bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQu
dW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9N
YW5hZ2VyLnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICI8Yj50ZXN0PC9iPiIpOworfSwgIkFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3Ro
IGlzIDIgYW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcu
Iik7CisKK2VkaXQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157175</attachid>
            <date>2012-08-08 04:13:37 -0700</date>
            <delta_ts>2012-08-17 10:36:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89722-20120808041310.patch</filename>
            <type>text/plain</type>
            <size>75073</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDEyLTA4LTA4ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dW5kb01hbmFnZXIncyB1bmRvLCByZWRvLCBsZW5ndGgsIHBvc2l0aW9uLCBjbGVhclVuZG8sIGFu
ZCBjbGVhclJlZG8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGVzdHM6IGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC5odG1s
CisgICAgICAgICAgICAgICBlZGl0aW5nL3VuZG9tYW5hZ2VyL2RvbXRyYW5zYWN0aW9uLXN1cnZp
dmVzLWdjLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFn
ZXItdHJhbnNhY3QuaHRtbAorICAgICAgICAgICAgICAgZWRpdGluZy91bmRvbWFuYWdlci91bmRv
bWFuYWdlci11bmRvLXJlZG8uaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMuY3BwOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMucHJpOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rp
b24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
VHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246
OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmV4ZWNTdGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6Z2V0RnVuY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246Omhhc0Z1bmN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRyYW5zYWN0aW9uOjpjYWxsRnVuY3Rpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0RPTVRyYW5zYWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChE
T01UcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6dW5kb01h
bmFnZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnNldFVuZG9NYW5hZ2Vy
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01UcmFuc2FjdGlvbk93bmVyOjpp
c1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp+RG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OnVuZG9NYW5hZ2VyKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp1bmRvTWFuYWdlcik6CisgICAgICAgICog
ZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oOgorICAgICAgICAqIGVkaXRpbmcvRE9NVHJh
bnNhY3Rpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6dW5hcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJl
YXBwbGllZEVkaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjYW5VbmRvKToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6dW5kbyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmNhblJlZG8pOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZWRvKToKKyAgICAgICAgKiBl
ZGl0aW5nL1VuZG9NYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpzdG9wKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Y2xlYXJTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFu
YWdlcjo6flVuZG9NYW5hZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp0cmFu
c2FjdCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6dW5kbyk6CisgICAgICAgIChX
ZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVkbyk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdl
cjo6cmVnaXN0ZXJVbmRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6cmVn
aXN0ZXJSZWRvU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpVbmRvTWFuYWdlcjo6Y2xlYXJVbmRv
KToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjpjbGVhclJlZG8pOgorICAgICAgICAo
V2ViQ29yZTo6VW5kb01hbmFnZXI6OmNsZWFyVW5kb1JlZG8pOgorICAgICAgICAqIGVkaXRpbmcv
VW5kb01hbmFnZXIuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoVW5kb01hbmFnZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VW5kb01hbmFnZXI6OnBvc2l0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlVuZG9NYW5hZ2VyOjpjYW5VbmRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5h
Z2VyOjpjYW5SZWRvKToKKyAgICAgICAgKFdlYkNvcmU6OlVuZG9NYW5hZ2VyOjp1bmRvU2NvcGVI
b3N0KToKKyAgICAgICAgKiBlZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbDoKKyAgICAgICAgKiBlZGl0
aW5nL1VuZG9TdGVwLmg6CisgICAgICAgIChVbmRvU3RlcCk6CisKIDIwMTItMDgtMDggIEtlbnRh
cm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgICdjbGFzcyBXcmFwcGVy
VHlwZUluZm8nIHNob3VsZCBiZSAnc3RydWN0IFdyYXBwZXJUeXBlSW5mbycKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzgzLDYgKzM4Myw3IEBAIFNFVChXZWJDb3JlX0lE
TF9GSUxFUwogICAgIGRvbS9XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsCiAgICAgZG9tL1doZWVs
RXZlbnQuaWRsCiAKKyAgICBlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbAogICAgIGVkaXRpbmcv
VW5kb01hbmFnZXIuaWRsCiAKICAgICBmaWxlYXBpL0Jsb2IuaWRsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMuY3BwCShyZXZpc2lvbiAxMjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMCw2ICsxMDAsOSBAQAogI2luY2x1
ZGUgIkpTRE9NU3RyaW5nTGlzdC5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXAuY3BwIgog
I2luY2x1ZGUgIkpTRE9NVG9rZW5MaXN0LmNwcCIKKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQor
I2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uY3BwIgorI2VuZGlmCiAjaW5jbHVkZSAiSlNET01V
UkwuY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmNwcCIKICNpbmNsdWRlICJKU0VsZW1lbnQu
Y3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMjUwMTgp
CisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0yNjUsNiArMjY1LDcgQEAgQklORElOR19JRExTID0gXAogICAgICQoV2ViQ29yZSkvZG9tL1dl
YktpdE5hbWVkRmxvdy5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1dlYktpdFRyYW5zaXRpb25F
dmVudC5pZGwgXAogICAgICQoV2ViQ29yZSkvZG9tL1doZWVsRXZlbnQuaWRsIFwKKyAgICAkKFdl
YkNvcmUpL2VkaXRpbmcvRE9NVHJhbnNhY3Rpb24uaWRsIFwKICAgICAkKFdlYkNvcmUpL2VkaXRp
bmcvVW5kb01hbmFnZXIuaWRsIFwKICAgICAkKFdlYkNvcmUpL2ZpbGVhcGkvQmxvYi5pZGwgXAog
ICAgICQoV2ViQ29yZSkvZmlsZWFwaS9GaWxlLmlkbCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMucHJpCShyZXZpc2lvbiAxMjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw2ICsyNjksNyBAQCBJRExfQklORElOR1Mg
Kz0gXAogICAgICQkUFdEL2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsIFwKICAgICAkJFBXRC9kb20v
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAgICAgJCRQV0QvZG9tL1doZWVsRXZlbnQuaWRs
IFwKKyAgICAkJFBXRC9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbCBcCiAgICAgJCRQV0QvZWRp
dGluZy9VbmRvTWFuYWdlci5pZGwgXAogICAgICQkUFdEL2ZpbGVhcGkvQmxvYi5pZGwgXAogICAg
ICQkUFdEL2ZpbGVhcGkvRmlsZS5pZGwgXApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiAxMjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDggQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NU3RyaW5nTWFwLmggXAogCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01Ub2tlbkxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRE9NVG9rZW5MaXN0LmggXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNE
T01UcmFuc2FjdGlvbi5jcHAgXAorCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNET01UcmFuc2Fj
dGlvbi5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRE9NVVJMLmNwcCBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0RPTVVSTC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RE9NV2luZG93LmNwcCBcCkBAIC04MjIsNiArODI0LDcgQEAgZG9tX2JpbmRpbmdfaWRscyArPSBc
CiAJJChXZWJDb3JlKS9kb20vV2ViS2l0TmFtZWRGbG93LmlkbCBcCiAJJChXZWJDb3JlKS9kb20v
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCBcCiAJJChXZWJDb3JlKS9kb20vV2hlZWxFdmVudC5p
ZGwgXAorCSQoV2ViQ29yZSkvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwgXAogCSQoV2ViQ29y
ZSkvZWRpdGluZy9VbmRvTWFuYWdlci5pZGwgXAogCSQoV2ViQ29yZSkvZmlsZWFwaS9CbG9iLmlk
bCBcCiAJJChXZWJDb3JlKS9maWxlYXBpL0ZpbGUuaWRsIFwKQEAgLTEzODQsNiArMTM4Nyw4IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJh
Y2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNo
VGFibGVNYXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01PYmplY3RIYXNo
VGFibGVNYXAuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24u
Y3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaCBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCBcCkBAIC0xNDMxLDYgKzE0MzYsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5n
TWFwQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01TdHJpbmdN
YXBDdXN0b20uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RD
dXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9u
Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmggXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBcCkBAIC0x
NTUyLDYgKzE1NTgsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVWludDMyQXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1VpbnQ4QXJyYXlDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NLZXlmcmFtZVJ1bGVDdXN0b20uY3BwIFwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQkocmV2aXNpb24gMTI1MDE4KQorKysgU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmlu
ZGluZ3MvanMvQmluZGluZ1N0YXRlLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVu
Y3Rpb24uY3BwIFwKICAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCBc
CisgICAgIGJpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0RPTVdyYXBwZXJXb3JsZC5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcCBc
CiAgICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAgXApAQCAtMTA5LDYgKzExMCw3IEBA
IFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20uY3Bw
IFwKICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKICAgICAgYmlu
ZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMvSlNE
T01UcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jh
c2UuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKICAgICAg
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgXApAQCAtMTkyLDYgKzE5NCw3IEBAIFNP
VVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9q
cy9KU1VpbnQ4Q2xhbXBlZEFycmF5Q3VzdG9tLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTVW5k
b01hbmFnZXJDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25D
dXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9t
LmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlQ3VzdG9tLmNw
cCBcCkBAIC0xMjkzLDYgKzEyOTYsNyBAQCBIRUFERVJTICs9IFwKICAgICBiaW5kaW5ncy9qcy9K
U0RPTUJpbmRpbmcuaCBcCiAgICAgYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaCBcCiAg
ICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uaCBcCisgICAgYmluZGluZ3MvanMv
SlNET01UcmFuc2FjdGlvbi5oIFwKICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaCBc
CiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaCBcCiAgICAgYmluZGluZ3MvanMv
SlNET01XaW5kb3dTaGVsbC5oIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UJKHJldmlzaW9uIDEyNTAx
OCkKKysrIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjk3
LDYgKzI5NywxNCBAQCBJRiAoRU5BQkxFX1dFQl9JTlRFTlRTKQogICAgICkKIEVORElGICgpCiAK
K0lGIChFTkFCTEVfVU5ET19NQU5BR0VSKQorICAgIExJU1QgKEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKKyAgICAgICAgYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uY3BwCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pT
VW5kb01hbmFnZXJDdXN0b20uY3BwCisgICAgKQorRU5ESUYgKCkKKwogTElTVChBUFBFTkQgU0NS
SVBUU19CSU5ESU5HUwogICAgICR7V0VCQ09SRV9ESVJ9L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvci5wbQogKQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTI1MDE4KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDEzLDYgKzEw
MTMsNyBAQAogICAgICAgICAgICAgJ2RvbS9XZWJLaXROYW1lZEZsb3cuaWRsJywKICAgICAgICAg
ICAgICdkb20vV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCcsCiAgICAgICAgICAgICAnZG9tL1do
ZWVsRXZlbnQuaWRsJywKKyAgICAgICAgICAgICdlZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbCcs
CiAgICAgICAgICAgICAnZWRpdGluZy9VbmRvTWFuYWdlci5pZGwnLAogICAgICAgICAgICAgJ2Zp
bGVhcGkvQmxvYi5pZGwnLAogICAgICAgICAgICAgJ2ZpbGVhcGkvRmlsZS5pZGwnLApAQCAtMTkz
MCw2ICsxOTMxLDggQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9u
LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwJywKKyAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0RP
TVdyYXBwZXJXb3JsZC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0dDQ29udHJvbGxl
ci5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
JywKQEAgLTE5NzcsNiArMTk4MCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01T
dHJpbmdNYXBDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVN0cmlu
Z01hcEN1c3RvbS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1
c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0
b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmgnLApAQCAtMjA5Nyw2ICsyMTAx
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU1VpbnQxNkFycmF5Q3VzdG9tLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTVWludDhBcnJheUN1c3RvbS5jcHAnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwJywKICAgICAgICAgICAgICdi
aW5kaW5ncy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTV2ViS2l0QW5pbWF0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvanMvSlNXZWJLaXRBbmltYXRpb25MaXN0Q3VzdG9tLmNwcCcsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24g
MTI1MDE4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQxMTgsNiArNDExOCw2MiBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRE9NVHJhbnNhY3Rpb24uY3BwIgorCQkJ
CT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxU
b29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUHJvZHVjdGlv
bnxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRv
b2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29u
ZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
RE9NVHJhbnNhY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0RPTVVSTC5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpA
QCAtMjI2MTUsNiArMjI2NzEsNjIgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmNwcCIKKwkJCQk+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQlF
eGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8
L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1VuZG9NYW5hZ2VyLmgiCisJ
CQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9IiQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNWYWxpZGl0
eVN0YXRlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0aW9uCkBAIC02NDA1OCw2ICs2
NDE3MCw2MiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcRE9NVHJhbnNhY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVs
ZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZy
b21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcRE9NVHJh
bnNhY3Rpb24uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXERPTVdyYXBwZXJXb3JsZC5jcHAiCiAJCQkJCT4KIAkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCkBAIC02NjMwMiw2ICs2NjQ3MCw1OCBAQAogCQkJCQk8L0ZpbGVD
b25maWd1cmF0aW9uPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwIgorCQkJCQk+CisJCQkJ
CTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxp
dGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJ
CTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwv
RmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0i
UmVsZWFzZV9DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1
ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIK
KwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJh
dGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRl
ZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJ
PC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNE
T01XaW5kb3dCYXNlLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTcw
MTUwLDYgKzcwMzcwLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNVbmRvTWFu
YWdlckN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJ
PgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4K
KwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJ
CQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJ
CQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJ
CQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
KwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxXaW4zMiIK
KwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJ
CQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmln
dXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19BbGx8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUHJv
ZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAiCiAJ
CQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjUwMTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTE5NjUsMTAgKzE5NjUsMTYgQEAKIAkJN0FGMTFBNUExMkU3Mjc0OTAwNjFG
MjNDIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGMTFBNTkxMkU3Mjc0OTAwNjFGMjNDIC8qIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oICovOyB9OwogCQk3QUZENEE4QjExMzFDMjc2MDAzNUI4ODMgLyogU2Ny
aXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0FGRDRBOEExMTMxQzI3NjAwMzVCODgzIC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QUZENEZGNDEx
MzI3N0I2MDAzNUI4ODMgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk3QjA5OTJGNTE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdl
ckN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QjA5OTJGNDE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi87
IH07CiAJCTdCMUVBMENFMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENDMTU3NkM1
QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJN0IxRUEwQ0YxNTc2QzVC
NTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5h
Z2VyLmggKi87IH07CisJCTdCMzUzN0M1MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdC
MzUzN0MzMTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKKwkJ
N0IzNTM3QzYxNUNCMkNCNTAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzUzN0M0MTVDQjJDQjUwMDgz
QUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi87IH07CisJCTdCMzUzOTNDMTVDQ0EwQUMwMDgz
QUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzUzOTNCMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RP
TVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKIAkJN0I5MTg0RDIxNTc1OEU0MjAwOTJBQTkz
IC8qIFVuZG9NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdCOTE4NENGMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5jcHAgKi87
IH07CiAJCTdCOTE4NEQzMTU3NThFNDIwMDkyQUE5MyAvKiBVbmRvTWFuYWdlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0I5MTg0RDAxNTc1OEU0MjAw
OTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggKi87IH07CisJCTdCQjM1QUVCMTVDQ0RERjQwMEYyQTY0
MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QkIzNUFFOTE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24u
Y3BwICovOyB9OworCQk3QkIzNUFFQzE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNhY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCQjM1QUVB
MTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oICovOyB9OwogCQk3RTMzQ0QwMTEy
N0YzNDBEMDBCRThGMTcgLyogUHVyZ2VQcmlvcml0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0UzM0NEMDAxMjdGMzQwRDAwQkU4RjE3IC8qIFB1cmdl
UHJpb3JpdHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk3RTM3RUYyRTEzMzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTM3RUYyRDEz
MzkyMDg4MDBCMjkyNTAgLyogU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgKi87IH07CiAJCTdFOTlB
RjUxMEIxMzg0NjQ2OEZCMDFBNSAvKiBXaW5kb3dGb2N1c0FsbG93ZWRJbmRpY2F0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0U5OUFGNTIwQjEz
ODQ2NDY4RkIwMUE1IC8qIFdpbmRvd0ZvY3VzQWxsb3dlZEluZGljYXRvci5jcHAgKi87IH07CkBA
IC05MTQzLDExICs5MTQ5LDE4IEBACiAJCTdBRjExQTU5MTJFNzI3NDkwMDYxRjIzQyAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yUnVudGltZUFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkQ0
QThBMTEzMUMyNzYwMDM1Qjg4MyAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FGRDRGRjMxMTMyNzdCNjAwMzVCODgzIC8qIFNjcmlwdERlYnVnTGlzdGVu
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdMaXN0ZW5l
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QjA5OTJGNDE1QUNGMUFEMDBFRDZE
MjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0IxRUEwQ0MxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNVbmRvTWFuYWdlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMUVBMENEMTU3NkM1QjUwMDYwMTc3RCAvKiBK
U1VuZG9NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVW5kb01h
bmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IzNTM3QzMxNUNCMkNCNTAw
ODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNET01UcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdCMzUzN0M0MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NVHJhbnNhY3Rpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0IzNTM5M0IxNUNDQTBBQzAwODNBQjY5IC8qIEpTRE9N
VHJhbnNhY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTdCOEMxRkU2MTVDQ0UzQzIwMDRCMzVEQyAvKiBET01UcmFuc2FjdGlvbi5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gRE9NVHJhbnNhY3Rpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QjkxODRDRjE1NzU4RTQyMDA5MkFBOTMgLyogVW5kb01hbmFnZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVW5kb01hbmFnZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMgLyogVW5k
b01hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5kb01hbmFnZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDExNTc1OEU0MjAwOTJBQTkz
IC8qIFVuZG9NYW5hZ2VyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVbmRvTWFuYWdlci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdCQjM1QUU5MTVDQ0RERjQwMEYyQTY0
MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBET01UcmFuc2FjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdC
QjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01UcmFuc2FjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzYwMTI4MDYwMDc4QkI3MEUzNjdBOTUgLyogRE5TUmVzb2x2ZVF1ZXVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEROU1Jlc29sdmVRdWV1ZS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFMzNDRDAwMTI3RjM0MEQwMEJFOEYx
NyAvKiBQdXJnZVByaW9yaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1
cmdlUHJpb3JpdHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0UzN0VGMkQxMzM5
MjA4ODAwQjI5MjUwIC8qIFN1YnJlc291cmNlTG9hZGVyQ0YuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gU3VicmVzb3VyY2VMb2FkZXJDRi5jcHA7IHBhdGggPSBjZi9T
dWJyZXNvdXJjZUxvYWRlckNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1
ODU5LDYgKzE1ODcyLDggQEAKIAkJN0I3RjY4NkQxNTc2QkZBMTAwM0ZBQkYyIC8qIEVkaXRpbmcg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTdCMzUzN0Mz
MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLywKKwkJCQk3QjM1MzdD
NDE1Q0IyQ0I1MDA4M0FCNjkgLyogSlNET01UcmFuc2FjdGlvbi5oICovLAogCQkJCTdCMUVBMEND
MTU3NkM1QjUwMDYwMTc3RCAvKiBKU1VuZG9NYW5hZ2VyLmNwcCAqLywKIAkJCQk3QjFFQTBDRDE1
NzZDNUI1MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5oICovLAogCQkJKTsKQEAgLTE3MTAzLDYg
KzE3MTE4LDcgQEAKIAkJCQlDRUNBREZDMzE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmUuaCAqLywKIAkJCQlDRUNBREZDNDE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9u
Q29tbWFuZC5jcHAgKi8sCiAJCQkJQ0VDQURGQzUxNTM3NzhGRjAwRTM3MDY4IC8qIERpY3RhdGlv
bkNvbW1hbmQuaCAqLywKKwkJCQk3QjhDMUZFNjE1Q0NFM0MyMDA0QjM1REMgLyogRE9NVHJhbnNh
Y3Rpb24uaWRsICovLAogCQkJCTkzMzA5RDkzMDk5RTY0OTEwMDU2RTU4MSAvKiBFZGl0QWN0aW9u
LmggKi8sCiAJCQkJOTMzMDlEOTQwOTlFNjQ5MTAwNTZFNTgxIC8qIEVkaXRDb21tYW5kLmNwcCAq
LywKIAkJCQk5MzMwOUQ5NTA5OUU2NDkxMDA1NkU1ODEgLyogRWRpdENvbW1hbmQuaCAqLywKQEAg
LTIwMDg5LDYgKzIwMTA1LDggQEAKIAkJCQkzMTYwMjNFRjE1MzJDNDBDMDBENTBGRjQgLyogRGlj
dGlvbmFyeS5oICovLAogCQkJCUJDNTNEQTYxMTE0MzE0QkQwMDBEODE3RSAvKiBET01PYmplY3RI
YXNoVGFibGVNYXAuY3BwICovLAogCQkJCUJDNTNEQTVGMTE0MzE0MUEwMDBEODE3RSAvKiBET01P
YmplY3RIYXNoVGFibGVNYXAuaCAqLywKKwkJCQk3QkIzNUFFOTE1Q0NEREY0MDBGMkE2NDMgLyog
RE9NVHJhbnNhY3Rpb24uY3BwICovLAorCQkJCTdCQjM1QUVBMTVDQ0RERjQwMEYyQTY0MyAvKiBE
T01UcmFuc2FjdGlvbi5oICovLAogCQkJCUJDNTNEQTQ3MTE0MzEzNEQwMDBEODE3RSAvKiBET01X
cmFwcGVyV29ybGQuY3BwICovLAogCQkJCUJDNTNEQTJEMTE0MzEyMUUwMDBEODE3RSAvKiBET01X
cmFwcGVyV29ybGQuaCAqLywKIAkJCQkxNDMyRTg0ODBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250
cm9sbGVyLmNwcCAqLywKQEAgLTIwMjU1LDYgKzIwMjczLDcgQEAKIAkJCQk5QTFCNkY5NjE1ODg2
OUM4MDAxMUE4QzQgLyogSlNET01TdHJpbmdMaXN0Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzY0NjQ5
QjExRDgyMzhDMDA2NDU1QjAgLyogSlNET01TdHJpbmdNYXBDdXN0b20uY3BwICovLAogCQkJCTE0
RTBCQzU1MTM2MTQ4QTgwMDJBRDEyRSAvKiBKU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgKi8sCisJ
CQkJN0IzNTM5M0IxNUNDQTBBQzAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3Bw
ICovLAogCQkJCUJDRDlDMjVFMEMxN0FBNjcwMDVDOTBBMiAvKiBKU0RPTVdpbmRvd0N1c3RvbS5j
cHAgKi8sCiAJCQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9t
LmggKi8sCiAJCQkJQTgwQTk0MjIxNDlGMjI1RTAwOTg5MjkxIC8qIEpTRE9NV2luZG93V2ViQXVk
aW9DdXN0b20uY3BwICovLApAQCAtMjAzNDYsNiArMjAzNjUsNyBAQAogCQkJCTQ5RUVDRjc2MTA1
MDhEOUMwMDA5OUZBQiAvKiBKU1VpbnQzMkFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk0OUVFQ0Y3
NTEwNTA4RDlDMDAwOTlGQUIgLyogSlNVaW50OEFycmF5Q3VzdG9tLmNwcCAqLywKIAkJCQk5MUEz
OTA1QTE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENsYW1wZWRBcnJheUN1c3RvbS5jcHAgKi8s
CisJCQkJN0IwOTkyRjQxNUFDRjFBRDAwRUQ2RDIwIC8qIEpTVW5kb01hbmFnZXJDdXN0b20uY3Bw
ICovLAogCQkJCUZEOEU5QkRFMTNENENEMkIwMDUwREM3MiAvKiBKU1dhdmVTaGFwZXJOb2RlQ3Vz
dG9tLmNwcCAqLywKIAkJCQk0OUVFRDE0QzEwNTE5NzFBMDAwOTlGQUIgLyogSlNXZWJHTFJlbmRl
cmluZ0NvbnRleHRDdXN0b20uY3BwICovLAogCQkJCTMxOUU2ODg2MTMyN0M5MTEwMDRBQzkxQSAv
KiBKU1dlYktpdEFuaW1hdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0yMzEyOSw2ICsyMzE0OSw3IEBA
CiAJCQkJMTg4NjA0QjQwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwNUZENjlFMDEyODQ1RDQzMDBCMkJFQjMgLyogRE9NVGltZVN0YW1wLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3NkZDMkIwQzEyMzcwREEwMDA2QTk5MUEgLyogRE9NVG9rZW5MaXN0Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3QkIzNUFFQzE1Q0NEREY0MDBGMkE2NDMgLyogRE9NVHJhbnNh
Y3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMUEzN0JFMDk3QzcxNUYwMDE5RjNEOCAvKiBE
T01UcmF2ZXJzYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTg1NTI2Q0QyMEFCMEI3RDkwMDAzMDJF
QSAvKiBET01UcmVlV2Fsa2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTBCNDFDMzBBRDlFN0U3
MDBBNkVENEYgLyogRE9NVHJlZVdhbGtlckludGVybmFsLmggaW4gSGVhZGVycyAqLywKQEAgLTIz
Nzg0LDYgKzIzODA1LDcgQEAKIAkJCQlDNTEzN0NGMzExQTU4Mzc4MDA0QURCOTkgLyogSlNET01T
dHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzY0NjQ5ODExRDgyMzQ5MDA2NDU1QjAg
LyogSlNET01TdHJpbmdNYXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTc2OTQ1NjNEMTIxNEQ5N0Mw
MDA3Q0JBRSAvKiBKU0RPTVRva2VuTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJN0IzNTM3QzYx
NUNCMkNCNTAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFMzdFMDA2MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM2OTMyNzQwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93QmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNjUyRkJCQkMwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9t
LmggaW4gSGVhZGVycyAqLywKQEAgLTI2Mzg5LDYgKzI2NDExLDcgQEAKIAkJCQk5MzNBMTRBQTBC
N0QxRDA5MDBBNTNGRkQgLyogRE9NVGV4dEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTg4
NjA0QjMwRjJFNjU0QTAwMEI2NDQzIC8qIERPTVRpbWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTc2RkMyQjBCMTIzNzBEQTAwMDZBOTkxQSAvKiBET01Ub2tlbkxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJN0JCMzVBRUIxNUNDRERGNDAwRjJBNjQzIC8qIERPTVRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg1NTI2Q0QzMEFCMEI3REEwMDAzMDJFQSAvKiBET01UcmVlV2Fs
a2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJODVDN0Y0OTIwQUFGNzlEQzAwNDAxNEREIC8qIERP
TVVJRXZlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRTM3REZEQTEyREJBRkI4MDBBNkIyMzMg
LyogRE9NVVJMLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjY5ODksNiArMjcwMTIsOCBAQAogCQkJ
CUJDNjQ2NDlDMTFEODIzOEMwMDY0NTVCMCAvKiBKU0RPTVN0cmluZ01hcEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Njk0NTYzQzEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxp
c3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFMEJDNTYxMzYxNDhBODAwMkFEMTJFIC8qIEpT
RE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCMzUzN0M1MTVDQjJD
QjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdC
MzUzOTNDMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTJFMzdFMDA1MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5k
b3cuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0NEQxIC8qIEpT
RE9NV2luZG93QmFzZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3NDYxLDYgKzI3NDg2LDcgQEAK
IAkJCQk5MTA4OUQzMzE0QzMzNjA1MDA1QUZDNDkgLyogSlNVaW50OENsYW1wZWRBcnJheS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk5MUEzOTA1QjE0QzBGNjExMDBGNjc5MDEgLyogSlNVaW50OENs
YW1wZWRBcnJheUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QjFFQTBDRTE1NzZDNUI1
MDA2MDE3N0QgLyogSlNVbmRvTWFuYWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QjA5OTJG
NTE1QUNGMUFEMDBFRDZEMjAgLyogSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxNUM3NzA5NDEwMEQzQ0E4MDA1QkEyNjcgLyogSlNWYWxpZGl0eVN0YXRlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUZEODJEN0Y3MTNENEM4QkQwMDRFNDM3MiAvKiBKU1dhdmVTaGFw
ZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEOEU5QkRGMTNENENEMkIwMDUwREM3MiAv
KiBKU1dhdmVTaGFwZXJOb2RlQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRE9N
VHJhbnNhY3Rpb24uaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJKU01h
aW5UaHJlYWRFeGVjU3RhdGUuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5oIgorCit1c2luZyBu
YW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitET01UcmFuc2FjdGlv
bjo6RE9NVHJhbnNhY3Rpb24oRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQorICAgIDog
bV9pc29sYXRlZFdvcmxkKGlzb2xhdGVkV29ybGQpCisgICAgLCBtX3VuZG9NYW5hZ2VyKDApCit7
Cit9CisKK1Bhc3NSZWZQdHI8RE9NVHJhbnNhY3Rpb24+IERPTVRyYW5zYWN0aW9uOjpjcmVhdGUo
RE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKQoreworICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRE9NVHJhbnNhY3Rpb24oaXNvbGF0ZWRXb3JsZCkpOworfQorCit2b2lkIERPTVRyYW5zYWN0
aW9uOjphcHBseSgpCit7CisgICAgbV9pc0F1dG9tYXRpYyA9IGhhc0Z1bmN0aW9uKCJleGVjdXRl
QXV0b21hdGljIik7CisgICAgaWYgKCFtX2lzQXV0b21hdGljKQorICAgICAgICBjYWxsRnVuY3Rp
b24oImV4ZWN1dGUiKTsKK30KKwordm9pZCBET01UcmFuc2FjdGlvbjo6dW5hcHBseSgpCit7Cisg
ICAgaWYgKCFtX2lzQXV0b21hdGljKQorICAgICAgICBjYWxsRnVuY3Rpb24oInVuZG8iKTsKKyAg
ICAKKyAgICBpZiAobV91bmRvTWFuYWdlcikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0
ZXJSZWRvU3RlcCh0aGlzKTsKK30KKwordm9pZCBET01UcmFuc2FjdGlvbjo6cmVhcHBseSgpCit7
CisgICAgaWYgKCFtX2lzQXV0b21hdGljKQorICAgICAgICBjYWxsRnVuY3Rpb24oInJlZG8iKTsK
KyAgICAKKyAgICBpZiAobV91bmRvTWFuYWdlcikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVn
aXN0ZXJVbmRvU3RlcCh0aGlzKTsKK30KKworRXhlY1N0YXRlKiBET01UcmFuc2FjdGlvbjo6ZXhl
Y1N0YXRlKCkKK3sKKyAgICBpZiAoIW1fdW5kb01hbmFnZXIgfHwgIW1fdW5kb01hbmFnZXItPnVu
ZG9TY29wZUhvc3QoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCA9IG1fdW5kb01hbmFnZXItPnVuZG9TY29wZUhvc3QoKS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWNvbnRleHQgfHwgY29udGV4dC0+aXNKU0V4ZWN1dGlvbkZvcmJpZGRlbigp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCBtX2lzb2xhdGVkV29ybGQpOworICAgIGlm
ICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCk7Cit9CisKK2Jvb2wgRE9NVHJhbnNhY3Rpb246OmdldEZ1bmN0aW9u
KGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgZnVuY3Rpb24sIEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBKU09i
amVjdCogd3JhcHBlciA9IGFzT2JqZWN0KHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0aGlzKSk7
CisKKyAgICBKU1ZhbHVlIGRhdGEgPSB3cmFwcGVyLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVj
LCBET01UUkFOU0FDVElPTl9EQVRBKSk7CisgICAgaWYgKCFkYXRhLmlzT2JqZWN0KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZ1bmN0aW9uID0gYXNPYmplY3QoZGF0YSktPmdldChl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5TmFtZSkpOworICAgIHJldHVybiBmdW5jdGlv
bi5pc0Z1bmN0aW9uKCk7Cit9CisKK2Jvb2wgRE9NVHJhbnNhY3Rpb246Omhhc0Z1bmN0aW9uKGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjU3Rh
dGUoKTsKKyAgICBpZiAoIWV4ZWMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEpTVmFs
dWUgZnVuY3Rpb247CisgICAgcmV0dXJuIGdldEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgZnVuY3Rp
b24sIGV4ZWMpOworfQorCit2b2lkIERPTVRyYW5zYWN0aW9uOjpjYWxsRnVuY3Rpb24oY29uc3Qg
Y2hhciogcHJvcGVydHlOYW1lKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNTdGF0ZSgp
OworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSBmdW5jdGlv
bjsKKyAgICBpZiAoIWdldEZ1bmN0aW9uKHByb3BlcnR5TmFtZSwgZnVuY3Rpb24sIGV4ZWMpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxU
eXBlICE9IENhbGxUeXBlTm9uZSkgeworICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGZ1bmN0
aW9uOworICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBKU01haW5U
aHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
dGhpc1ZhbHVlLCBhcmdzKTsKKyAgICB9Cit9CisKK30KKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01UcmFuc2FjdGlvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisg
KiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisg
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBET01UcmFuc2FjdGlvbl9oCisjZGVmaW5lIERPTVRyYW5z
YWN0aW9uX2gKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNsdWRlICJET01XcmFw
cGVyV29ybGQuaCIKKyNpbmNsdWRlICJVbmRvU3RlcC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKworI2RlZmluZSBET01UUkFOU0FDVElPTl9EQVRBICJkYXRhIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIE5vZGU7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xh
c3MgVW5kb01hbmFnZXI7CisKK2NsYXNzIERPTVRyYW5zYWN0aW9uIDogcHVibGljIFVuZG9TdGVw
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4gY3JlYXRl
KERPTVdyYXBwZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCk7CisgICAgCisgICAgdm9pZCBhcHBseSgp
OworICAgIHZvaWQgdW5hcHBseSgpIE9WRVJSSURFOworICAgIHZvaWQgcmVhcHBseSgpIE9WRVJS
SURFOworICAgIAorICAgIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIEVkaXRBY3Rpb25VbnNwZWNpZmllZDsgfQorICAgIGJvb2wgaXNET01UcmFuc2Fj
dGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICBVbmRvTWFu
YWdlciogdW5kb01hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX3VuZG9NYW5hZ2VyOyB9CisgICAg
dm9pZCBzZXRVbmRvTWFuYWdlcihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIHsgbV91bmRvTWFu
YWdlciA9IHVuZG9NYW5hZ2VyOyB9CisKK3ByaXZhdGU6CisgICAgRE9NVHJhbnNhY3Rpb24oRE9N
V3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxkKTsKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlY1N0
YXRlKCk7CisgICAgYm9vbCBnZXRGdW5jdGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6SlNWYWx1ZSYgZnVuY3Rpb24sIEpTQzo6RXhlY1N0YXRlKik7CisgICAgYm9vbCBoYXNGdW5j
dGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpOworICAgIHZvaWQgY2FsbEZ1bmN0aW9uKGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSk7CisKKyAgICBET01XcmFwcGVyV29ybGQqIG1faXNvbGF0
ZWRXb3JsZDsKKyAgICBVbmRvTWFuYWdlciogbV91bmRvTWFuYWdlcjsKKyAgICBib29sIG1faXNB
dXRvbWF0aWM7Cit9OworCit9CisKKyNlbmRpZgorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAkocmV2aXNpb24g
MTI1MDE4KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUgIkpTRE9NU3Ry
aW5nTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIgog
I2luY2x1ZGUgIkpTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCIKKyNpbmNsdWRlICJKU0RPTVRyYW5z
YWN0aW9uQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuY3BwIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmNw
cCIKQEAgLTE1OCw2ICsxNTksNyBAQAogI2luY2x1ZGUgIkpTVWludDMyQXJyYXlDdXN0b20uY3Bw
IgogI2luY2x1ZGUgIkpTVWludDhBcnJheUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNVaW50OENs
YW1wZWRBcnJheUN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNVbmRvTWFuYWdlckN1c3RvbS5jcHAi
CiAjaW5jbHVkZSAiSlNXZWJLaXRBbmltYXRpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTV2Vi
S2l0QW5pbWF0aW9uTGlzdEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNXZWJLaXRDU1NLZXlmcmFt
ZVJ1bGVDdXN0b20uY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01U
cmFuc2FjdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRP
X01BTkFHRVIpCisKKyNpbmNsdWRlICJKU0RPTVRyYW5zYWN0aW9uLmgiCisKKyNpbmNsdWRlICJV
bmRvTWFuYWdlci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2Jvb2wgSlNET01UcmFuc2FjdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVS
b290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIEpTRE9NVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uV3JhcHBlciA9
IGpzQ2FzdDxKU0RPTVRyYW5zYWN0aW9uKj4oaGFuZGxlLmdldCgpLmFzQ2VsbCgpKTsKKyAgICBE
T01UcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24gPSBzdGF0aWNfY2FzdDxET01UcmFuc2FjdGlvbio+
KHRyYW5zYWN0aW9uV3JhcHBlci0+aW1wbCgpKTsKKyAgICBVbmRvTWFuYWdlciogdW5kb01hbmFn
ZXIgPSB0cmFuc2FjdGlvbi0+dW5kb01hbmFnZXIoKTsKKyAgICBpZiAoIXVuZG9NYW5hZ2VyKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCF1bmRvTWFuYWdlci0+dW5kb1Njb3BlSG9z
dCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHZpc2l0b3IuY29udGFpbnNP
cGFxdWVSb290KHJvb3QodW5kb01hbmFnZXItPnVuZG9TY29wZUhvc3QoKSkpOworfQorCit9CisK
KyNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNVbmRv
TWFuYWdlckN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICog
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCisKKyNpbmNs
dWRlICJKU1VuZG9NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTRE9NVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisK
K3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSBK
U1VuZG9NYW5hZ2VyOjp0cmFuc2FjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5o
ZXJpdHMoJkpTVW5kb01hbmFnZXI6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihleGVjKTsKKyAgICBKU1VuZG9NYW5hZ2VyKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVW5k
b01hbmFnZXIqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lO
SEVSSVRTKGNhc3RlZFRoaXMsICZKU1VuZG9NYW5hZ2VyOjpzX2luZm8pOworICAgIFVuZG9NYW5h
Z2VyKiBpbXBsID0gc3RhdGljX2Nhc3Q8VW5kb01hbmFnZXIqPihjYXN0ZWRUaGlzLT5pbXBsKCkp
OworCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKwor
ICAgIEpTVmFsdWUgZGljdGlvbmFyeSA9IE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4ZWMsIDAs
IERlZmF1bHRJc1VuZGVmaW5lZCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIWRpY3Rpb25hcnkuaXNPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IG9mIHR5cGUgRE9NVHJhbnNhY3Rpb24uIikpOwor
CisgICAgYm9vbCBtZXJnZShNQVlCRV9NSVNTSU5HX1BBUkFNRVRFUihleGVjLCAxLCBEZWZhdWx0
SXNVbmRlZmluZWQpLnRvQm9vbGVhbigpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgUmVmUHRyPERPTVRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbiA9IERPTVRyYW5zYWN0aW9uOjpjcmVhdGUoY3VycmVudFdvcmxkKGV4
ZWMpKTsKKyAgICBKU09iamVjdCogdHJhbnNhY3Rpb25XcmFwcGVyID0gYXNPYmplY3QodG9KUyhl
eGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdHJhbnNhY3Rpb24uZ2V0KCkpKTsKKwor
ICAgIElkZW50aWZpZXIgZGF0YU5hbWUoZXhlYywgRE9NVFJBTlNBQ1RJT05fREFUQSk7CisgICAg
dHJhbnNhY3Rpb25XcmFwcGVyLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBkYXRhTmFt
ZSwgZGljdGlvbmFyeSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGltcGwtPnRyYW5zYWN0KHRyYW5zYWN0aW9uLCBtZXJnZSwgZWMpOwor
ICAgIGlmIChlYykKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMTI1MDE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYyLDExICs2NjIsNiBAQCBEb2N1bWVudDo6fkRvY3Vt
ZW50KCkKICAgICBjbGVhclN0eWxlUmVzb2x2ZXIoKTsgLy8gV2UgbmVlZCB0byBkZXN0b3J5IENT
U0ZvbnRTZWxlY3RvciBiZWZvcmUgZGVzdHJveWluZyBtX2NhY2hlZFJlc291cmNlTG9hZGVyLgog
ICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuY2xlYXIoKTsKIAotI2lmIEVOQUJMRShVTkRPX01B
TkFHRVIpCi0gICAgaWYgKG1fdW5kb01hbmFnZXIpCi0gICAgICAgIG1fdW5kb01hbmFnZXItPmRp
c2Nvbm5lY3QoKTsKLSNlbmRpZgotCiAgICAgLy8gV2UgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEo
KSBoZXJlIHNpbmNlIGEgRG9jdW1lbnQgY2xhc3MgaW5oZXJpdHMgVHJlZVNjb3BlCiAgICAgLy8g
YXMgd2VsbCBhcyBOb2RlLiBTZWUgYSBjb21tZW50IG9uIFRyZWVTY29wZS5oIGZvciB0aGUgcmVh
c29uLgogICAgIGlmIChoYXNSYXJlRGF0YSgpKQpAQCAtNjEzMiw3ICs2MTI3LDcgQEAgdm9pZCBE
b2N1bWVudDo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5TwogUGFzc1JlZlB0cjxVbmRvTWFuYWdl
cj4gRG9jdW1lbnQ6OnVuZG9NYW5hZ2VyKCkKIHsKICAgICBpZiAoIW1fdW5kb01hbmFnZXIpCi0g
ICAgICAgIG1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKHRoaXMpOworICAgICAg
ICBtX3VuZG9NYW5hZ2VyID0gVW5kb01hbmFnZXI6OmNyZWF0ZSh0aGlzLCB0aGlzKTsKICAgICBy
ZXR1cm4gbV91bmRvTWFuYWdlcjsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkocmV2aXNpb24gMTI1MDE4KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMjM3LDcgKzIyMzcsNyBAQCBQYXNzUmVmUHRyPFVuZG9NYW5hZ2Vy
PiBFbGVtZW50Ojp1bmRvTWFuCiAgICAgfQogICAgIEVsZW1lbnRSYXJlRGF0YSogZGF0YSA9IGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpOwogICAgIGlmICghZGF0YS0+bV91bmRvTWFuYWdlcikKLSAg
ICAgICAgZGF0YS0+bV91bmRvTWFuYWdlciA9IFVuZG9NYW5hZ2VyOjpjcmVhdGUodGhpcyk7Cisg
ICAgICAgIGRhdGEtPm1fdW5kb01hbmFnZXIgPSBVbmRvTWFuYWdlcjo6Y3JlYXRlKGRvY3VtZW50
KCksIHRoaXMpOwogICAgIHJldHVybiBkYXRhLT5tX3VuZG9NYW5hZ2VyOwogfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5oCShyZXZpc2lv
biAxMjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5k
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB1bmFwcGx5KCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSBPVkVS
UklERTsKICAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBPVkVSUklERSB7IHJl
dHVybiBtX2VkaXRBY3Rpb247IH0KKyNpZiBFTkFCTEUoVU5ET19NQU5BR0VSKQorICAgIGJvb2wg
aXNET01UcmFuc2FjdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5k
aWYKICAgICB2b2lkIGFwcGVuZChTaW1wbGVFZGl0Q29tbWFuZCopOwogICAgIGJvb2wgd2FzQ3Jl
YXRlTGlua0NvbW1hbmQoKSBjb25zdCB7IHJldHVybiBtX2VkaXRBY3Rpb24gPT0gRWRpdEFjdGlv
bkNyZWF0ZUxpbms7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2Fj
dGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2Fj
dGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RPTVRyYW5z
YWN0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKwor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVVORE9fTUFOQUdFUiwKKyAgICAg
ICAgSlNDdXN0b21Jc1JlYWNoYWJsZQorICAgIF0gRE9NVHJhbnNhY3Rpb24geworICAgIH07CisK
K30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDEyNTAxOCkKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYs
NiArODYsNyBAQAogI2luY2x1ZGUgIlRleHRFdmVudC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRv
ci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKKyNpbmNsdWRlICJVbmRvTWFuYWdlci5o
IgogI2luY2x1ZGUgIlVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmgiCiAjaW5jbHVkZSAiaHRt
bGVkaXRpbmcuaCIKICNpbmNsdWRlICJtYXJrdXAuaCIKQEAgLTgwMiw4ICs4MDMsMTIgQEAgdm9p
ZCBFZGl0b3I6OmFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHI8QwogICAgICAgICAvLyBPbmx5IHJl
Z2lzdGVyIGEgbmV3IHVuZG8gY29tbWFuZCBpZiB0aGUgY29tbWFuZCBwYXNzZWQgaW4gaXMKICAg
ICAgICAgLy8gZGlmZmVyZW50IGZyb20gdGhlIGxhc3QgY29tbWFuZAogICAgICAgICBtX2xhc3RF
ZGl0Q29tbWFuZCA9IGNtZDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikKICAgICAgICAgaWYg
KGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAobV9sYXN0
RWRpdENvbW1hbmQtPmVuc3VyZUNvbXBvc2l0aW9uKCkpOworI2Vsc2UKKyAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChtX2xhc3RFZGl0
Q29tbWFuZC0+ZW5zdXJlQ29tcG9zaXRpb24oKSk7CisjZW5kaWYKICAgICB9CiAKICAgICByZXNw
b25kVG9DaGFuZ2VkQ29udGVudHMobmV3U2VsZWN0aW9uKTsKQEAgLTgyMCw4ICs4MjUsMTIgQEAg
dm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFzc1JlZlB0cgogICAgIG1fYWx0ZXJuYXRp
dmVUZXh0Q29udHJvbGxlci0+cmVzcG9uZFRvVW5hcHBsaWVkRWRpdGluZyhjbWQuZ2V0KCkpOwog
ICAgIAogICAgIG1fbGFzdEVkaXRDb21tYW5kID0gMDsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdF
UikKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5yZWdpc3RlclJlZG9TdGVw
KGNtZCk7CisjZWxzZQorICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnJl
Z2lzdGVyUmVkb1N0ZXAoY21kKTsKKyNlbmRpZgogICAgIHJlc3BvbmRUb0NoYW5nZWRDb250ZW50
cyhuZXdTZWxlY3Rpb24pOwogfQogCkBAIC04MzUsOCArODQ0LDEyIEBAIHZvaWQgRWRpdG9yOjpy
ZWFwcGxpZWRFZGl0aW5nKFBhc3NSZWZQdHIKICAgICBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1h
bmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVj
dGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7CiAgICAgCiAgICAgbV9sYXN0RWRpdENvbW1hbmQgPSAw
OworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAg
Y2xpZW50KCktPnJlZ2lzdGVyVW5kb1N0ZXAoY21kKTsKKyNlbHNlCisgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVnaXN0ZXJVbmRvU3RlcChjbWQpOworI2VuZGlmCiAg
ICAgcmVzcG9uZFRvQ2hhbmdlZENvbnRlbnRzKG5ld1NlbGVjdGlvbik7CiB9CiAKQEAgLTEyNDIs
MjQgKzEyNTUsNDAgQEAgdm9pZCBFZGl0b3I6OmNsZWFyVW5kb1JlZG9PcGVyYXRpb25zKCkKIAog
Ym9vbCBFZGl0b3I6OmNhblVuZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VSKQogICAg
IHJldHVybiBjbGllbnQoKSAmJiBjbGllbnQoKS0+Y2FuVW5kbygpOworI2Vsc2UKKyAgICByZXR1
cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+Y2FuVW5kbygpOworI2VuZGlm
CiB9CiAKIHZvaWQgRWRpdG9yOjp1bmRvKCkKIHsKKyNpZiAhRU5BQkxFKFVORE9fTUFOQUdFUikK
ICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT51bmRvKCk7CisjZWxzZQorICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVuZG9NYW5hZ2VyKCktPnVuZG8oKTsKKyNlbmRpZgogfQog
CiBib29sIEVkaXRvcjo6Y2FuUmVkbygpCiB7CisjaWYgIUVOQUJMRShVTkRPX01BTkFHRVIpCiAg
ICAgcmV0dXJuIGNsaWVudCgpICYmIGNsaWVudCgpLT5jYW5SZWRvKCk7CisjZWxzZQorICAgIHJl
dHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT51bmRvTWFuYWdlcigpLT5jYW5SZWRvKCk7CisjZW5k
aWYKIH0KIAogdm9pZCBFZGl0b3I6OnJlZG8oKQogeworI2lmICFFTkFCTEUoVU5ET19NQU5BR0VS
KQogICAgIGlmIChjbGllbnQoKSkKICAgICAgICAgY2xpZW50KCktPnJlZG8oKTsKKyNlbHNlCisg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dW5kb01hbmFnZXIoKS0+cmVkbygpOworI2VuZGlmCiB9
CiAKIHZvaWQgRWRpdG9yOjpkaWRCZWdpbkVkaXRpbmcoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9VbmRvTWFuYWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9VbmRvTWFuYWdlci5jcHAJKHJldmlzaW9uIDEyNTAxOCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVW5kb01hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxOCArMzMsMjMg
QEAKIAogI2lmIEVOQUJMRShVTkRPX01BTkFHRVIpCiAKKyNpbmNsdWRlICJET01UcmFuc2FjdGlv
bi5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKLSNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFz
c1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6OmNyZWF0ZShOb2RlKiBob3N0KQorUGFz
c1JlZlB0cjxVbmRvTWFuYWdlcj4gVW5kb01hbmFnZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBOb2RlKiBob3N0KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcg
VW5kb01hbmFnZXIoaG9zdCkpOworICAgIFJlZlB0cjxVbmRvTWFuYWdlcj4gdW5kb01hbmFnZXIg
PSBhZG9wdFJlZihuZXcgVW5kb01hbmFnZXIoY29udGV4dCwgaG9zdCkpOworICAgIHVuZG9NYW5h
Z2VyLT5zdXNwZW5kSWZOZWVkZWQoKTsKKyAgICByZXR1cm4gdW5kb01hbmFnZXIucmVsZWFzZSgp
OwogfQogCi1VbmRvTWFuYWdlcjo6VW5kb01hbmFnZXIoTm9kZSogaG9zdCkKLSAgICA6IG1fdW5k
b1Njb3BlSG9zdChob3N0KQorVW5kb01hbmFnZXI6OlVuZG9NYW5hZ2VyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIE5vZGUqIGhvc3QpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCwgdGhpcykKKyAgICAsIG1fdW5kb1Njb3BlSG9zdChob3N0KQorICAgICwgbV9pc0luUHJv
Z3Jlc3MoZmFsc2UpCiB7CiB9CiAKQEAgLTUzLDU0ICs1OCwxNTEgQEAgdm9pZCBVbmRvTWFuYWdl
cjo6ZGlzY29ubmVjdCgpCiAgICAgbV91bmRvU2NvcGVIb3N0ID0gMDsKIH0KIAotdm9pZCBVbmRv
TWFuYWdlcjo6dHJhbnNhY3QoY29uc3QgRGljdGlvbmFyeSYsIGJvb2wsIEV4Y2VwdGlvbkNvZGUm
IGVjKQordm9pZCBVbmRvTWFuYWdlcjo6c3RvcCgpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3RlZCgp
KSB7CisgICAgZGlzY29ubmVjdCgpOworfQorCitzdGF0aWMgdm9pZCBjbGVhclN0YWNrKFVuZG9N
YW5hZ2VyU3RhY2smIHN0YWNrKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RhY2su
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVW5kb01hbmFnZXJFbnRyeSYgZW50cnkgPSAq
c3RhY2tbaV07CisgICAgICAgIGlmIChlbnRyeS5pc0VtcHR5KCkpCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgaWYgKGVudHJ5WzBdLT5pc0RPTVRyYW5zYWN0aW9uKCkpIHsKKyAgICAg
ICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgZW50cnkuc2l6ZSgpOyArK2opIHsKKyAgICAg
ICAgICAgICAgICBVbmRvU3RlcCogc3RlcCA9IGVudHJ5W2pdLmdldCgpOworICAgICAgICAgICAg
ICAgIEFTU0VSVChzdGVwLT5pc0RPTVRyYW5zYWN0aW9uKCkpOworICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PERPTVRyYW5zYWN0aW9uKj4oc3RlcCktPnNldFVuZG9NYW5hZ2VyKDApOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHN0YWNrLmNsZWFyKCk7Cit9CisKK1Vu
ZG9NYW5hZ2VyOjp+VW5kb01hbmFnZXIoKQoreworICAgIGNsZWFyU3RhY2sobV91bmRvU3RhY2sp
OworICAgIGNsZWFyU3RhY2sobV9yZWRvU3RhY2spOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjp0
cmFuc2FjdChQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiwgYm9vbCBtZXJn
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nv
bm5lY3RlZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQotICAgIFJlZlB0cjxVbmRvU3RlcD4gc3RlcDsKLSAgICBtX3VuZG9TdGFj
ay5hcHBlbmQoc3RlcCk7CisgICAgY2xlYXJSZWRvKEFTU0VSVF9OT19FWENFUFRJT04pOworICAg
IHRyYW5zYWN0aW9uLT5zZXRVbmRvTWFuYWdlcih0aGlzKTsKKworICAgIG1faXNJblByb2dyZXNz
ID0gdHJ1ZTsKKyAgICBSZWZQdHI8VW5kb01hbmFnZXI+IHByb3RlY3QodGhpcyk7CisgICAgdHJh
bnNhY3Rpb24tPmFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIGlm
ICghbWVyZ2UgfHwgbV91bmRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICBtX3VuZG9TdGFjay5h
cHBlbmQoYWRvcHRQdHIobmV3IFVuZG9NYW5hZ2VyRW50cnkpKTsKKyAgICBtX3VuZG9TdGFjay5s
YXN0KCktPmFwcGVuZCh0cmFuc2FjdGlvbik7CiB9CiAKIHZvaWQgVW5kb01hbmFnZXI6OnVuZG8o
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3RlZCgpKSB7CisgICAgaWYg
KG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChtX3VuZG9TdGFj
ay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2luUHJvZ3Jlc3NFbnRyeSA9IGFk
b3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKworICAgIG1faXNJblByb2dyZXNzID0gdHJ1
ZTsKKyAgICBSZWZQdHI8VW5kb01hbmFnZXI+IHByb3RlY3QodGhpcyk7CisgICAgVW5kb01hbmFn
ZXJFbnRyeSBlbnRyeSA9ICptX3VuZG9TdGFjay5sYXN0KCk7CisgICAgZm9yIChzaXplX3QgaSA9
IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlbaSAtIDFdLT51bmFwcGx5
KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIG1fcmVkb1N0YWNrLmFwcGVu
ZChtX2luUHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAgIGlmICghbV91bmRvU3RhY2suaXNF
bXB0eSgpKQorICAgICAgICBtX3VuZG9TdGFjay5yZW1vdmVMYXN0KCk7CiB9CiAKIHZvaWQgVW5k
b01hbmFnZXI6OnJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5lY3Rl
ZCgpKSB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAg
IGlmIChtX3JlZG9TdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2luUHJv
Z3Jlc3NFbnRyeSA9IGFkb3B0UHRyKG5ldyBVbmRvTWFuYWdlckVudHJ5KTsKKworICAgIG1faXNJ
blByb2dyZXNzID0gdHJ1ZTsKKyAgICBSZWZQdHI8VW5kb01hbmFnZXI+IHByb3RlY3QodGhpcyk7
CisgICAgVW5kb01hbmFnZXJFbnRyeSBlbnRyeSA9ICptX3JlZG9TdGFjay5sYXN0KCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IGVudHJ5LnNpemUoKTsgaSA+IDA7IC0taSkKKyAgICAgICAgZW50cnlb
aSAtIDFdLT5yZWFwcGx5KCk7CisgICAgbV9pc0luUHJvZ3Jlc3MgPSBmYWxzZTsKKworICAgIG1f
dW5kb1N0YWNrLmFwcGVuZChtX2luUHJvZ3Jlc3NFbnRyeS5yZWxlYXNlKCkpOworICAgIGlmICgh
bV9yZWRvU3RhY2suaXNFbXB0eSgpKQorICAgICAgICBtX3JlZG9TdGFjay5yZW1vdmVMYXN0KCk7
Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnVuZG8oKQoreworICAgIHVuZG8oQVNTRVJUX05PX0VY
Q0VQVElPTik7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZG8oKQoreworICAgIHJlZG8oQVNT
RVJUX05PX0VYQ0VQVElPTik7Cit9CisKK3ZvaWQgVW5kb01hbmFnZXI6OnJlZ2lzdGVyVW5kb1N0
ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4gc3RlcCkKK3sKKyAgICBpZiAoIW1faXNJblByb2dyZXNz
KSB7CisgICAgICAgIE93blB0cjxVbmRvTWFuYWdlckVudHJ5PiBlbnRyeSA9IGFkb3B0UHRyKG5l
dyBVbmRvTWFuYWdlckVudHJ5KTsKKyAgICAgICAgZW50cnktPmFwcGVuZChzdGVwKTsKKyAgICAg
ICAgbV91bmRvU3RhY2suYXBwZW5kKGVudHJ5LnJlbGVhc2UoKSk7CisKKyAgICAgICAgY2xlYXJS
ZWRvKEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIH0gZWxzZQorICAgICAgICBtX2luUHJvZ3Jl
c3NFbnRyeS0+YXBwZW5kKHN0ZXApOworfQorCit2b2lkIFVuZG9NYW5hZ2VyOjpyZWdpc3RlclJl
ZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+IHN0ZXApCit7CisgICAgaWYgKCFtX2lzSW5Qcm9n
cmVzcykgeworICAgICAgICBPd25QdHI8VW5kb01hbmFnZXJFbnRyeT4gZW50cnkgPSBhZG9wdFB0
cihuZXcgVW5kb01hbmFnZXJFbnRyeSk7CisgICAgICAgIGVudHJ5LT5hcHBlbmQoc3RlcCk7Cisg
ICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChlbnRyeS5yZWxlYXNlKCkpOworICAgIH0gZWxzZQor
ICAgICAgICBtX2luUHJvZ3Jlc3NFbnRyeS0+YXBwZW5kKHN0ZXApOwogfQogCiB2b2lkIFVuZG9N
YW5hZ2VyOjpjbGVhclVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgaWYgKCFpc0Nvbm5l
Y3RlZCgpKSB7CisgICAgaWYgKG1faXNJblByb2dyZXNzIHx8ICFpc0Nvbm5lY3RlZCgpKSB7CiAg
ICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7CisgICAgY2xlYXJTdGFjayhtX3VuZG9TdGFjayk7CiB9
CiAKIHZvaWQgVW5kb01hbmFnZXI6OmNsZWFyUmVkbyhFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAg
ICBpZiAoIWlzQ29ubmVjdGVkKCkpIHsKKyAgICBpZiAobV9pc0luUHJvZ3Jlc3MgfHwgIWlzQ29u
bmVjdGVkKCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgbV9yZWRvU3RhY2suY2xlYXIoKTsKKyAgICBjbGVhclN0YWNrKG1f
cmVkb1N0YWNrKTsKIH0KIAogdm9pZCBVbmRvTWFuYWdlcjo6Y2xlYXJVbmRvUmVkbygpCiB7Ci0g
ICAgbV91bmRvU3RhY2suY2xlYXIoKTsKLSAgICBtX3JlZG9TdGFjay5jbGVhcigpOworICAgIGNs
ZWFyU3RhY2sobV91bmRvU3RhY2spOworICAgIGNsZWFyU3RhY2sobV9yZWRvU3RhY2spOwogfQog
CiBib29sIFVuZG9NYW5hZ2VyOjppc0Nvbm5lY3RlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1VuZG9NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9VbmRvTWFuYWdlci5oCShyZXZpc2lvbiAxMjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1VuZG9NYW5hZ2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDExIEBACiAKICNp
ZiBFTkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlVuZG9TdGVwLmgiCisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KQEAgLTQyLDMyICs0NSw1MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLWNsYXNzIERpY3Rpb25hcnk7CitjbGFzcyBET01UcmFuc2FjdGlvbjsKIGNsYXNzIE5vZGU7
CiAKLWNsYXNzIFVuZG9NYW5hZ2VyIDogcHVibGljIFJlZkNvdW50ZWQ8VW5kb01hbmFnZXI+IHsK
K3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxVbmRvU3RlcD4gPiBVbmRvTWFuYWdlckVudHJ5OwordHlw
ZWRlZiBWZWN0b3I8T3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+ID4gVW5kb01hbmFnZXJTdGFjazsK
KworY2xhc3MgVW5kb01hbmFnZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxVbmRvTWFuYWdlcj4sIHB1
YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFVu
ZG9NYW5hZ2VyPiBjcmVhdGUoTm9kZSogaG9zdCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VW5k
b01hbmFnZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm9kZSogaG9zdCk7CiAg
ICAgdm9pZCBkaXNjb25uZWN0KCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIH5VbmRvTWFuYWdlcigpOwogCi0gICAgdm9pZCB0cmFuc2FjdChjb25zdCBE
aWN0aW9uYXJ5JiB0cmFuc2FjdGlvbiwgYm9vbCBtZXJnZSwgRXhjZXB0aW9uQ29kZSYpOworICAg
IHZvaWQgdHJhbnNhY3QoUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4sIGJvb2wgbWVyZ2UsIEV4
Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZvaWQgdW5kbyhFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCByZWRvKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHVuZG8oKTsKKyAgICB2b2lkIHJlZG8o
KTsKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5kb1N0YWNrLnNp
emUoKSArIG1fcmVkb1N0YWNrLnNpemUoKTsgfQorICAgIHVuc2lnbmVkIHBvc2l0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9yZWRvU3RhY2suc2l6ZSgpOyB9CiAKICAgICB2b2lkIGNsZWFyVW5kbyhF
eGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBjbGVhclJlZG8oRXhjZXB0aW9uQ29kZSYpOwogICAg
IHZvaWQgY2xlYXJVbmRvUmVkbygpOworICAgIAorICAgIGJvb2wgY2FuVW5kbygpIGNvbnN0IHsg
cmV0dXJuICFtX3VuZG9TdGFjay5pc0VtcHR5KCk7IH0KKyAgICBib29sIGNhblJlZG8oKSBjb25z
dCB7IHJldHVybiAhbV9yZWRvU3RhY2suaXNFbXB0eSgpOyB9CisgICAgCisgICAgdm9pZCByZWdp
c3RlclVuZG9TdGVwKFBhc3NSZWZQdHI8VW5kb1N0ZXA+KTsKKyAgICB2b2lkIHJlZ2lzdGVyUmVk
b1N0ZXAoUGFzc1JlZlB0cjxVbmRvU3RlcD4pOworICAgIAorICAgIE5vZGUqIHVuZG9TY29wZUhv
c3QoKSBjb25zdCB7IHJldHVybiBtX3VuZG9TY29wZUhvc3Q7IH0KIAogcHJpdmF0ZToKLSAgICBl
eHBsaWNpdCBVbmRvTWFuYWdlcihOb2RlKiBob3N0KTsKKyAgICBleHBsaWNpdCBVbmRvTWFuYWdl
cihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTm9kZSogaG9zdCk7CiAgICAgYm9vbCBpc0Nvbm5l
Y3RlZCgpOwogICAgIAogICAgIE5vZGUqIG1fdW5kb1Njb3BlSG9zdDsKLSAgICBWZWN0b3I8UmVm
UHRyPFVuZG9TdGVwPiA+IG1fdW5kb1N0YWNrOwotICAgIFZlY3RvcjxSZWZQdHI8VW5kb1N0ZXA+
ID4gbV9yZWRvU3RhY2s7CisgICAgVW5kb01hbmFnZXJTdGFjayBtX3VuZG9TdGFjazsKKyAgICBV
bmRvTWFuYWdlclN0YWNrIG1fcmVkb1N0YWNrOworICAgIGJvb2wgbV9pc0luUHJvZ3Jlc3M7Cisg
ICAgT3duUHRyPFVuZG9NYW5hZ2VyRW50cnk+IG1faW5Qcm9ncmVzc0VudHJ5OwogfTsKICAgICAK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb01hbmFnZXIuaWRsCShyZXZpc2lvbiAx
MjUwMTgpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9NYW5hZ2VyLmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOCArMzMsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgaW50ZXJmYWNlIFsK
ICAgICAgICAgQ29uZGl0aW9uYWw9VU5ET19NQU5BR0VSCiAgICAgXSBVbmRvTWFuYWdlciB7Ci0g
ICAgICAgIHZvaWQgdHJhbnNhY3QoaW4gRGljdGlvbmFyeSB0cmFuc2FjdGlvbiwgaW4gYm9vbGVh
biBtZXJnZSkKLSAgICAgICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBbQ3Vz
dG9tXSB2b2lkIHRyYW5zYWN0KGluIERpY3Rpb25hcnkgdHJhbnNhY3Rpb24sIGluIGJvb2xlYW4g
bWVyZ2UpOwogCiAgICAgICAgIHZvaWQgdW5kbygpCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKQEAgLTQyLDYgKzQxLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBw
b3NpdGlvbjsKIAogICAgICAgICB2b2lkIGNsZWFyVW5kbygpCiAgICAgICAgICAgICByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1VuZG9TdGVwLmgJKHJldmlzaW9u
IDEyNTAxOCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVW5kb1N0ZXAuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVuYXBwbHko
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlYXBwbHkoKSA9IDA7CiAgICAgdmlydHVhbCBFZGl0
QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCA9IDA7CisjaWYgRU5BQkxFKFVORE9fTUFOQUdF
UikKKyAgICB2aXJ0dWFsIGJvb2wgaXNET01UcmFuc2FjdGlvbigpIGNvbnN0ID0gMDsKKyNlbmRp
ZgogfTsKIAogfQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTI1MDE4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMDggIFN1a29s
c2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVu
dCB1bmRvTWFuYWdlcidzIHVuZG8sIHJlZG8sIGxlbmd0aCwgcG9zaXRpb24sIGNsZWFyVW5kbywg
YW5kIGNsZWFyUmVkbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODk3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXIt
bm90LWNhbGxlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL2Rv
bXRyYW5zYWN0aW9uLXN1cnZpdmVzLWdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFu
YWdlci10cmFuc2FjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3VuZG9tYW5hZ2Vy
L3VuZG9tYW5hZ2VyLXVuZG8tcmVkby1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVk
aXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWw6IEFkZGVkLgorCiAy
MDEyLTA4LTA4ICBNYXR0IEFyc2VuYXVsdCAgPGFyc2VubTJAZ21haWwuY29tPgogCiAgICAgICAg
IENyYXNoIHdoZW4gaW5zcGVjdGluZyBhbiBlbGVtZW50IHdpdGggYm9yZGVyLWltYWdlCkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1jYWxsZWQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFn
ZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1jYWxsZWQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RoaXMgdGVzdHMgdGhhdCBp
ZiB0aGVyZSBpcyBhIHNldHRlciBmb3IgImRhdGEiIGRlZmluZWQgb24gT2JqZWN0LnByb3RvdHlw
ZSwgaXQgd2lsbCBub3QgYmUgY2FsbGVkIHdoZW4gd2UgY3JlYXRlIGEgRE9NIHRyYW5zYWN0aW9u
LgorCitQQVNTIFRoZSBzZXR0ZXIgZm9yICJkYXRhIiBpcyBjYWxsZWQgd2hlbiB3ZSBzZXQgdGhl
ICJkYXRhIiBwcm9wZXJ0eSBvZiBhbiBvYmplY3QgdmlhIHNjcmlwdC4gCitQQVNTIFRoZSBzZXR0
ZXIgZm9yICJkYXRhIiBpcyBub3QgY2FsbGVkIHdoZW4gd2UgY3JlYXRlIGEgRE9NIHRyYW5zYWN0
aW9uLiAKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9kYXRhLXNldHRl
ci1ub3QtY2FsbGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRv
bWFuYWdlci9kYXRhLXNldHRlci1ub3QtY2FsbGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1jYWxsZWQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlNldHRlciBvZiBkYXRhIHByb3BlcnR5IGlzIG5vdCBjYWxsZWQ8L3RpdGxl
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IGlmIHRoZXJlIGlzIGEgc2V0
dGVyIGZvciAiZGF0YSIgZGVmaW5lZCBvbiBPYmplY3QucHJvdG90eXBlLCBpdCB3aWxsIG5vdAor
YmUgY2FsbGVkIHdoZW4gd2UgY3JlYXRlIGEgRE9NIHRyYW5zYWN0aW9uLgorPHNjcmlwdD4KK3Zh
ciBjYWxsZWQ7CisKK09iamVjdC5wcm90b3R5cGUuX19kZWZpbmVTZXR0ZXJfXygiZGF0YSIsIGZ1
bmN0aW9uKGQpIHsKKyAgICBjYWxsZWQgPSB0cnVlOworfSk7CisKK3Rlc3QoZnVuY3Rpb24oKSB7
CisgICAgY2FsbGVkID0gZmFsc2U7CisgICAgdmFyIG9iaiA9IG5ldyBPYmplY3QoKTsKKyAgICBv
YmouZGF0YSA9IDE7CisgICAgYXNzZXJ0X3RydWUoY2FsbGVkKTsKK30sICJUaGUgc2V0dGVyIGZv
ciBcImRhdGFcIiBpcyBjYWxsZWQgd2hlbiB3ZSBzZXQgdGhlIFwiZGF0YVwiIHByb3BlcnR5IG9m
IGFuIG9iamVjdCB2aWEgc2NyaXB0LiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGNhbGxl
ZCA9IGZhbHNlOworICAgIGRvY3VtZW50LnVuZG9NYW5hZ2VyLnRyYW5zYWN0KHsKKyAgICAgICAg
ImV4ZWN1dGUiOiBmdW5jdGlvbiAoKSB7IH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24gKCkg
eyB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uICgpIHsgfQorICAgIH0pOworICAgIGFzc2Vy
dF9mYWxzZShjYWxsZWQpOworfSwgIlRoZSBzZXR0ZXIgZm9yIFwiZGF0YVwiIGlzIG5vdCBjYWxs
ZWQgd2hlbiB3ZSBjcmVhdGUgYSBET00gdHJhbnNhY3Rpb24uIik7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJh
bnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci9k
b210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGF0IHVuZG9NYW5hZ2VyIGtlZXBzIERPTVRyYW5zYWN0
aW9uIG9iamVjdHMgYWxpdmUgZHVyaW5nIGl0cyBsaWZldGltZSBhbmQgdGhlcmVmb3JlIGRvZXMg
bm90IGNyYXNoIGFmdGVyIHRoZSBHQyBydW5zLgorCitQQVNTIEFmdGVyIHRoZSBHQyBydW5zLCB1
bmRvTWFuYWdlci51bmRvKCkgc3RpbGwgd29ya3MuIAorUEFTUyBBZnRlciB0aGUgR0MgcnVucyBh
Z2FpbiwgdW5kb01hbmFnZXIucmVkbygpIHN0aWxsIHdvcmtzLiAKKwpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy91bmRvbWFuYWdlci9kb210cmFuc2FjdGlvbi1zdXJ2aXZlcy1nYy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rp
b24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
dW5kb21hbmFnZXIvZG9tdHJhbnNhY3Rpb24tc3Vydml2ZXMtZ2MuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0OSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkRPTVRyYW5zYWN0aW9uIHN1cnZpdmVzIEdDPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
K1RoaXMgdGVzdHMgdGhhdCB1bmRvTWFuYWdlciBrZWVwcyBET01UcmFuc2FjdGlvbiBvYmplY3Rz
IGFsaXZlIGR1cmluZyBpdHMgbGlmZXRpbWUKK2FuZCB0aGVyZWZvcmUgZG9lcyBub3QgY3Jhc2gg
YWZ0ZXIgdGhlIEdDIHJ1bnMuCisKKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+Cit2
YXIgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworCit2YXIgdSA9IGRvY3Vt
ZW50LnVuZG9NYW5hZ2VyOwordS50cmFuc2FjdCh7CisJImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsK
KwkJbG9nLmlubmVyVGV4dCArPSAoImV4ZWN1dGVcbiIpOworCX0sCisJInVuZG8iOiBmdW5jdGlv
bigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAoInVuZG9cbiIpOworCX0sCisJInJlZG8iOiBmdW5j
dGlvbigpIHsKKwkJbG9nLmlubmVyVGV4dCArPSAoInJlZG9cbiIpOworCX0KK30pOworCit0ZXN0
KGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cuR0NDb250cm9sbGVyKQorCQlHQ0NvbnRyb2xsZXIu
Y29sbGVjdCgpOworCXUudW5kbygpOworCQorCWFzc2VydF90cnVlKGxvZy5pbm5lclRleHQgPT0g
ImV4ZWN1dGVcbnVuZG9cbiIpOworfSwgIkFmdGVyIHRoZSBHQyBydW5zLCB1bmRvTWFuYWdlci51
bmRvKCkgc3RpbGwgd29ya3MuIik7CisJCit0ZXN0KGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cu
R0NDb250cm9sbGVyKQorCQlHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOworCXUucmVkbygpOworCQor
CWFzc2VydF90cnVlKGxvZy5pbm5lclRleHQgPT0gImV4ZWN1dGVcbnVuZG9cbnJlZG9cbiIpOwor
fSwgIkFmdGVyIHRoZSBHQyBydW5zIGFnYWluLCB1bmRvTWFuYWdlci5yZWRvKCkgc3RpbGwgd29y
a3MuIik7CisKK2xvZy5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOworPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5h
Z2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3VuZG9tYW5hZ2VyL3VuZG9tYW5hZ2VyLXRyYW5zYWN0LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdHJh
bnNhY3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitUaGlzIHRl
c3RzIFVuZG9NYW5hZ2VyJ3MgdHJhbnNhY3QoKSBtZXRob2QuCisKK1BBU1MgZG9jdW1lbnQgaGFz
IHByb3BlcnR5IHVuZG9NYW5hZ2VyLiAKK1BBU1MgdW5kb01hbmFnZXIgaGFzIHByb3BlcnR5IHRy
YW5zYWN0LiAKK1BBU1MgQWZ0ZXIgYSB0cmFuc2FjdCBjYWxsLCB1bmRvTWFuYWdlciBhcHBsaWVz
IHRoZSB0cmFuc2FjdGlvbi4gCitQQVNTIEFmdGVyIGFub3RoZXIgdHJhbnNhY3QgY2FsbCwgdW5k
b01hbmFnZXIgYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYW4g
dW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4g
CitQQVNTIEFmdGVyIGFub3RoZXIgdW5kbyBjYWxsLCB1bmRvTWFuYWdlciB1bmFwcGxpZXMgdGhl
IGZpcnN0IHRyYW5zYWN0aW9uLiAKK1BBU1MgQWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2Vy
IHJlYXBwbGllcyB0aGUgZmlyc3QgdHJhbnNhY3Rpb24uIAorUEFTUyBBZnRlciBhbm90aGVyIHJl
ZG8gY2FsbCwgdW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIAor
UEFTUyBBZnRlciB0aHJlZSB0cmFuc2FjdCBjYWxscyB0aGF0IGFyZSBtZXJnZWQgaW50byBvbmUg
ZW50cnksIHVuZG9NYW5hZ2VyIGFwcGxpZXMgdGhlIHRocmVlIHRyYW5zYWN0aW9ucy4gCitQQVNT
IEFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVzIHRoZSB0aHJlZSB0cmFu
c2FjdGlvbnMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIAorUEFTUyBBZnRlciBhIHJlZG8gY2FsbCwg
dW5kb01hbmFnZXIgcmVhcHBsaWVzIHRoZSB0aHJlZSB0cmFuc2FjdGlvbnMgaW4gdGhlIGNvcnJl
Y3Qgb3JkZXIuIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL3VuZG9t
YW5hZ2VyLXRyYW5zYWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91
bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci10cmFuc2FjdC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPlVuZG9NYW5hZ2VyLnRyYW5zYWN0KCk8L3RpdGxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHRyYW5zYWN0KCkgbWV0aG9kLgorCis8
ZGl2IGlkPSJlZGl0IiBjb250ZW50RWRpdGFibGU9InRydWUiPjwvZGl2PgorPHNjcmlwdD4KKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LCAidW5k
b01hbmFnZXIiKTsKK30sICJkb2N1bWVudCBoYXMgcHJvcGVydHkgdW5kb01hbmFnZXIuIik7CisK
K3ZhciB1bmRvTWFuYWdlciA9IGRvY3VtZW50LnVuZG9NYW5hZ2VyOworCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGFzc2VydF9pZGxfYXR0cmlidXRlKHVuZG9NYW5hZ2VyLCAidHJhbnNhY3QiKTsK
K30sICJ1bmRvTWFuYWdlciBoYXMgcHJvcGVydHkgdHJhbnNhY3QuIik7CisKK3ZhciBlZGl0ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXQiKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB1bmRvTWFuYWdlci50cmFuc2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCArPSAiMWUgIjsKKyAgICAgICAgfSwKKyAgICAg
ICAgInVuZG8iOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIx
dSAiOworICAgICAgICB9LAorICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAg
ICAgZWRpdC5pbm5lckhUTUwgKz0gIjFyICI7CisgICAgICAgIH0KKyAgICB9LCBmYWxzZSk7Cisg
ICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFlICIpOworfSwgIkFmdGVyIGEgdHJh
bnNhY3QgY2FsbCwgdW5kb01hbmFnZXIgYXBwbGllcyB0aGUgdHJhbnNhY3Rpb24uIik7CisKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAgICAiZXhl
Y3V0ZSI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjJlICI7
CisgICAgICAgIH0sCisgICAgICAgICJ1bmRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBl
ZGl0LmlubmVySFRNTCArPSAiMnUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInJlZG8iOiBmdW5j
dGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIyciAiOworICAgICAgICB9
CisgICAgfSwgZmFsc2UpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAy
ZSAiKTsKK30sICJBZnRlciBhbm90aGVyIHRyYW5zYWN0IGNhbGwsIHVuZG9NYW5hZ2VyIGFwcGxp
ZXMgdGhlIHNlY29uZCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAgICB1
bmRvTWFuYWdlci51bmRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjFl
IDJlIDJ1ICIpOworfSwgIkFmdGVyIGFuIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5hcHBsaWVz
IHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5k
b01hbmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAy
ZSAydSAxdSAiKTsKK30sICJBZnRlciBhbm90aGVyIHVuZG8gY2FsbCwgdW5kb01hbmFnZXIgdW5h
cHBsaWVzIHRoZSBmaXJzdCB0cmFuc2FjdGlvbi4iKTsKKwordGVzdChmdW5jdGlvbigpIHsKKyAg
ICB1bmRvTWFuYWdlci5yZWRvKCk7CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0g
IjFlIDJlIDJ1IDF1IDFyICIpOworfSwgIkFmdGVyIGEgcmVkbyBjYWxsLCB1bmRvTWFuYWdlciBy
ZWFwcGxpZXMgdGhlIGZpcnN0IHRyYW5zYWN0aW9uLiIpOworCit0ZXN0KGZ1bmN0aW9uKCkgewor
ICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9
PSAiMWUgMmUgMnUgMXUgMXIgMnIgIik7Cit9LCAiQWZ0ZXIgYW5vdGhlciByZWRvIGNhbGwsIHVu
ZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgc2Vjb25kIHRyYW5zYWN0aW9uLiIpOworCitlZGl0Lmlu
bmVySFRNTCA9ICIiOworCit0ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnRyYW5z
YWN0KHsKKyAgICAgICAgImV4ZWN1dGUiOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGVkaXQu
aW5uZXJIVE1MICs9ICIxZSAiOworICAgICAgICB9LAorICAgICAgICAidW5kbyI6IGZ1bmN0aW9u
KCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwgKz0gIjF1ICI7CisgICAgICAgIH0sCisg
ICAgICAgICJyZWRvIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0LmlubmVySFRNTCAr
PSAiMXIgIjsKKyAgICAgICAgfQorICAgIH0sIGZhbHNlKTsKKyAgICB1bmRvTWFuYWdlci50cmFu
c2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0
LmlubmVySFRNTCArPSAiMmUgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIydSAiOworICAgICAgICB9LAor
ICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwg
Kz0gIjJyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICB1bmRvTWFuYWdlci50cmFu
c2FjdCh7CisgICAgICAgICJleGVjdXRlIjogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBlZGl0
LmlubmVySFRNTCArPSAiM2UgIjsKKyAgICAgICAgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGVkaXQuaW5uZXJIVE1MICs9ICIzdSAiOworICAgICAgICB9LAor
ICAgICAgICAicmVkbyI6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgZWRpdC5pbm5lckhUTUwg
Kz0gIjNyICI7CisgICAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgICBhc3NlcnRfdHJ1ZShlZGl0
LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgIik7Cit9LCAiQWZ0ZXIgdGhyZWUgdHJhbnNhY3QgY2Fs
bHMgdGhhdCBhcmUgbWVyZ2VkIGludG8gb25lIGVudHJ5LCB1bmRvTWFuYWdlciBhcHBsaWVzIHRo
ZSB0aHJlZSB0cmFuc2FjdGlvbnMuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdW5kb01h
bmFnZXIudW5kbygpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICIxZSAyZSAz
ZSAzdSAydSAxdSAiKTsKK30sICJBZnRlciBhbiB1bmRvIGNhbGwsIHVuZG9NYW5hZ2VyIHVuYXBw
bGllcyB0aGUgdGhyZWUgdHJhbnNhY3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOworCit0
ZXN0KGZ1bmN0aW9uKCkgeworICAgIHVuZG9NYW5hZ2VyLnJlZG8oKTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAiMWUgMmUgM2UgM3UgMnUgMXUgMXIgMnIgM3IgIik7Cit9LCAi
QWZ0ZXIgYSByZWRvIGNhbGwsIHVuZG9NYW5hZ2VyIHJlYXBwbGllcyB0aGUgdGhyZWUgdHJhbnNh
Y3Rpb25zIGluIHRoZSBjb3JyZWN0IG9yZGVyLiIpOworCitlZGl0LnN0eWxlLmRpc3BsYXkgPSAn
bm9uZSc7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8tZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXIt
dW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRvLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMiBAQAorVGhpcyB0ZXN0cyBVbmRvTWFuYWdlcidzIHVuZG8oKSwg
cmVkbygpLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4KKworUEFTUyBkb2N1bWVudCBoYXMgcHJvcGVy
dHkgdW5kb01hbmFnZXIuIAorUEFTUyB1bmRvTWFuYWdlciBoYXMgcHJvcGVydGllcyB1bmRvLCBy
ZWRvLCBsZW5ndGgsIGFuZCBwb3NpdGlvbi4gCitQQVNTIHVuZG9NYW5hZ2VyIGhhcyBjb3JyZWN0
IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAoMCkuIAorUEFTUyBB
ZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3Ro
IGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIAorUEFTUyBBZnRlciBib2xkaW5nIHRoZSB0ZXh0LCB1
bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBwb3NpdGlvbiBpcyAwLCBhbmQgdGhlIHJlc3Vs
dCBpcyBhIGJvbGQgJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgdW5kb2luZywgdW5kb01hbmFnZXIncyBs
ZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMSwgYW5kIHRoZSByZXN1bHQgaXMgYSBwbGFpbiAn
dGVzdCcuIAorUEFTUyBBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFu
ZCBwb3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4gCitQQVNTIEFmdGVyIHJl
ZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0
aGUgcmVzdWx0IGlzIGEgcGxhaW4gJ3Rlc3QnLiAKK1BBU1MgQWZ0ZXIgcmVkb2luZywgdW5kb01h
bmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9zaXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMg
YSBib2xkICd0ZXN0Jy4gCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIv
dW5kb21hbmFnZXItdW5kby1yZWRvLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy91bmRvbWFuYWdlci91bmRvbWFuYWdlci11bmRvLXJlZG8uaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvdW5kb21hbmFnZXItdW5kby1yZWRv
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5VbmRvTWFuYWdlciBoYXMgdW5kbygpIGFuZCByZWRvKCkgdGhh
dCB3b3JrPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdHMgVW5kb01hbmFn
ZXIncyB1bmRvKCksIHJlZG8oKSwgbGVuZ3RoLCBhbmQgcG9zaXRpb24uCisKKzxkaXYgaWQ9ImVk
aXQiIGNvbnRlbnRFZGl0YWJsZT0idHJ1ZSI+PC9kaXY+Cis8c2NyaXB0PgorCit0ZXN0KGZ1bmN0
aW9uKCkgeworICAgIGFzc2VydF9vd25fcHJvcGVydHkoZG9jdW1lbnQsICJ1bmRvTWFuYWdlciIp
OworfSwgImRvY3VtZW50IGhhcyBwcm9wZXJ0eSB1bmRvTWFuYWdlci4iKTsKKwordGVzdChmdW5j
dGlvbigpIHsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFuYWdlciwg
InVuZG8iKTsKKyAgICBhc3NlcnRfaWRsX2F0dHJpYnV0ZShkb2N1bWVudC51bmRvTWFuYWdlciwg
InJlZG8iKTsKKyAgICBhc3NlcnRfb3duX3Byb3BlcnR5KGRvY3VtZW50LnVuZG9NYW5hZ2VyLCAi
bGVuZ3RoIik7CisgICAgYXNzZXJ0X293bl9wcm9wZXJ0eShkb2N1bWVudC51bmRvTWFuYWdlciwg
InBvc2l0aW9uIik7Cit9LCAidW5kb01hbmFnZXIgaGFzIHByb3BlcnRpZXMgdW5kbywgcmVkbywg
bGVuZ3RoLCBhbmQgcG9zaXRpb24uIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0
X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIubGVuZ3RoID09IDApOworICAgIGFzc2VydF90cnVl
KGRvY3VtZW50LnVuZG9NYW5hZ2VyLnBvc2l0aW9uID09IDApOworfSwgInVuZG9NYW5hZ2VyIGhh
cyBjb3JyZWN0IGluaXRpYWwgdmFsdWVzIGZvciBsZW5ndGggKDApIGFuZCBwb3NpdGlvbiAoMCku
Iik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIGVkaXQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiZWRpdCIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihl
ZGl0LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0SFRNTCIsIGZhbHNlLCAi
dGVzdCIpOworICAgIAorICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0
aCA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9
PSAwKTsKK30sICJBZnRlciBpbnNlcnRpbmcgdGV4dCAndGVzdCcgaW4gYSBESVYsIHVuZG9NYW5h
Z2VyJ3MgbGVuZ3RoIGlzIDEgYW5kIHBvc2l0aW9uIGlzIDAuIik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICByYW5nZS5z
ZWxlY3ROb2RlQ29udGVudHMoZWRpdCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJh
bmdlKHJhbmdlKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiQm9sZCIsIGZhbHNlLCBudWxs
KTsKKyAgICAKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5sZW5ndGggPT0g
Mik7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01hbmFnZXIucG9zaXRpb24gPT0gMCk7
CisgICAgYXNzZXJ0X3RydWUoZWRpdC5pbm5lckhUTUwgPT0gIjxiPnRlc3Q8L2I+Iik7Cit9LCAi
QWZ0ZXIgYm9sZGluZyB0aGUgdGV4dCwgdW5kb01hbmFnZXIncyBsZW5ndGggaXMgMiBhbmQgcG9z
aXRpb24gaXMgMCwgYW5kIHRoZSByZXN1bHQgaXMgYSBib2xkICd0ZXN0Jy4iKTsKKyAgICAKK3Rl
c3QoZnVuY3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudW5kbygpOworICAgIAor
ICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBh
c3NlcnRfdHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3Nl
cnRfdHJ1ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOworfSwgIkFmdGVyIHVuZG9pbmcsIHVu
ZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0
IGlzIGEgcGxhaW4gJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1
bWVudC51bmRvTWFuYWdlci51bmRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQu
dW5kb01hbmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9N
YW5hZ2VyLnBvc2l0aW9uID09IDIpOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09
ICIiKTsKK30sICJBZnRlciB1bmRvaW5nLCB1bmRvTWFuYWdlcidzIGxlbmd0aCBpcyAyIGFuZCBw
b3NpdGlvbiBpcyAyLCBhbmQgdGhlIHJlc3VsdCBpcyBlbXB0eS4iKTsKKyAgICAKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIucmVkbygpOworICAgIAorICAgIGFz
c2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2VyLmxlbmd0aCA9PSAyKTsKKyAgICBhc3NlcnRf
dHJ1ZShkb2N1bWVudC51bmRvTWFuYWdlci5wb3NpdGlvbiA9PSAxKTsKKyAgICBhc3NlcnRfdHJ1
ZShlZGl0LmlubmVySFRNTCA9PSAidGVzdCIpOworfSwgIkFmdGVyIHJlZG9pbmcsIHVuZG9NYW5h
Z2VyJ3MgbGVuZ3RoIGlzIDIgYW5kIHBvc2l0aW9uIGlzIDEsIGFuZCB0aGUgcmVzdWx0IGlzIGEg
cGxhaW4gJ3Rlc3QnLiIpOworICAgIAordGVzdChmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC51
bmRvTWFuYWdlci5yZWRvKCk7CisgICAgCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQudW5kb01h
bmFnZXIubGVuZ3RoID09IDIpOworICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnVuZG9NYW5hZ2Vy
LnBvc2l0aW9uID09IDApOworICAgIGFzc2VydF90cnVlKGVkaXQuaW5uZXJIVE1MID09ICI8Yj50
ZXN0PC9iPiIpOworfSwgIkFmdGVyIHJlZG9pbmcsIHVuZG9NYW5hZ2VyJ3MgbGVuZ3RoIGlzIDIg
YW5kIHBvc2l0aW9uIGlzIDAsIGFuZCB0aGUgcmVzdWx0IGlzIGEgYm9sZCAndGVzdCcuIik7CisK
K2VkaXQuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159157</attachid>
            <date>2012-08-17 10:37:01 -0700</date>
            <delta_ts>2012-08-17 10:37:01 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-89722-20120817103625.patch</filename>
            <type>text/plain</type>
            <size>21674</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyNTkxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTE3ICBTdWtvbHNh
ayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
VW5kb01hbmFnZXIncyBKU0MgYmluZGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg5NzIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy91bmRvbWFuYWdlci9kYXRhLXNldHRlci1u
b3QtY2FsbGVkLmh0bWwKKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAg
ICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9ET01UcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlv
bjo6RE9NVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6YXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rpb246OnVuYXBwbHkpOgorICAgICAgICAoV2ViQ29yZTo6
RE9NVHJhbnNhY3Rpb246OnJlYXBwbHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01UcmFuc2FjdGlvbjo6ZG9tR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVRyYW5zYWN0aW9uOjpnZXRGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01U
cmFuc2FjdGlvbjo6aGFzRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RE9NVHJhbnNhY3Rp
b246OmNhbGxGdW5jdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rpb24u
aDoKKyAgICAgICAgKERPTVRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Jp
bmRpbmdzQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNhY3Rp
b25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01UcmFuc2FjdGlvbk93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyk6Cisg
ICAgICAgICogYmluZGluZ3MvanMvSlNVbmRvTWFuYWdlckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdCk6CisgICAgICAgICogZWRpdGluZy9ET01U
cmFuc2FjdGlvbi5pZGw6CisKIDIwMTItMDgtMTcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmll
dy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjU4
OTIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyNTkxMCkK
KysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTIyMTUsNiArMjIxNSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1c3RvbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVRva2VuTGlzdEN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwIFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTI1OTEwKQorKysg
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3
IEBAIFNPVVJDRVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ0xpc3RDdXN0b20u
Y3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01TdHJpbmdNYXBDdXN0b20uY3BwIFwKICAgICAg
YmluZGluZ3MvanMvSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIFwKKyAgICAgYmluZGluZ3MvanMv
SlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0Jhc2UuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIFwKICAg
ICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgXApJbmRleDogU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFr
ZQkocmV2aXNpb24gMTI1OTEwKQorKysgU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yODYsNiArMjg2LDcgQEAgRU5ESUYgKCkKIElGIChFTkFCTEVfVU5ET19N
QU5BR0VSKQogICAgIExJU1QgKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAgICAgYmluZGlu
Z3MvanMvRE9NVHJhbnNhY3Rpb24uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTRE9NVHJhbnNh
Y3Rpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20u
Y3BwCiAgICAgKQogRU5ESUYgKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDEyNTkx
MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMTk4
NSw2ICsxOTg1LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9KU0RPTVN0cmluZ01hcEN1
c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NU3RyaW5nTWFwQ3VzdG9t
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NVG9rZW5MaXN0Q3VzdG9tLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHAnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTI1OTEwKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAg
LTY2NDMwLDYgKzY2NDMwLDU4IEBACiAJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CiAJCQkJPC9G
aWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNET01U
cmFuc2FjdGlvbkN1c3RvbS5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1
ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0ZXxX
aW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRv
b2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1
Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJ
CQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFt
ZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVdpbmRvd0Jhc2UuY3BwIgogCQkJ
CQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI1OTEwKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTY0LDYgKzE5NjQsNyBAQAogCQk3QjFFQTBDRjE1NzZDNUI1MDA2MDE3N0Qg
LyogSlNVbmRvTWFuYWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0IxRUEwQ0QxNTc2QzVCNTAwNjAxNzdEIC8qIEpTVW5kb01hbmFnZXIuaCAqLzsg
fTsKICAJCTdCMzUzN0M1MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdCMzUzN0MzMTVD
QjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKICAJCTdCMzUzN0M2
MTVDQjJDQjUwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjM1MzdDNDE1Q0IyQ0I1MDA4M0FCNjkgLyog
SlNET01UcmFuc2FjdGlvbi5oICovOyB9OworIAkJN0IzNTM5M0MxNUNDQTBBQzAwODNBQjY5IC8q
IEpTRE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0IzNTM5M0IxNUNDQTBBQzAwODNBQjY5IC8qIEpTRE9NVHJhbnNh
Y3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk3QjkxODREMjE1NzU4RTQyMDA5MkFBOTMgLyogVW5k
b01hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNwcCAqLzsgfTsKIAkJ
N0I5MTg0RDMxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QjkxODREMDE1NzU4RTQyMDA5MkFBOTMg
LyogVW5kb01hbmFnZXIuaCAqLzsgfTsKIAkJN0JCMzVBRUIxNUNDRERGNDAwRjJBNjQzIC8qIERP
TVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdCQjM1QUU5MTVDQ0RERjQwMEYyQTY0MyAvKiBET01UcmFuc2FjdGlvbi5jcHAgKi87
IH07CkBAIC05MTM5LDYgKzkxNDAsNyBAQAogCQk3QjFFQTBDRDE1NzZDNUI1MDA2MDE3N0QgLyog
SlNVbmRvTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1VuZG9N
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdCMzUzN0MzMTVDQjJDQjUw
MDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRE9NVHJhbnNhY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogIAkJN0IzNTM3QzQxNUNCMkNCNTAwODNBQjY5IC8qIEpTRE9NVHJhbnNhY3Rpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01UcmFuc2FjdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworIAkJN0IzNTM5M0IxNUNDQTBBQzAwODNBQjY5IC8qIEpT
RE9NVHJhbnNhY3Rpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNET01UcmFuc2FjdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAgCQk3QjhDMUZFNjE1Q0NFM0MyMDA0QjM1REMgLyogRE9NVHJhbnNhY3Rpb24uaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTVRyYW5zYWN0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0I5MTg0Q0YxNTc1OEU0MjAwOTJBQTkzIC8qIFVuZG9NYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVuZG9NYW5hZ2VyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0I5MTg0RDAxNTc1OEU0MjAwOTJBQTkzIC8q
IFVuZG9NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuZG9NYW5h
Z2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDI2MCw2ICsyMDI2Miw3IEBA
CiAJCQkJOUExQjZGOTYxNTg4NjlDODAwMTFBOEM0IC8qIEpTRE9NU3RyaW5nTGlzdEN1c3RvbS5j
cHAgKi8sCiAJCQkJQkM2NDY0OUIxMUQ4MjM4QzAwNjQ1NUIwIC8qIEpTRE9NU3RyaW5nTWFwQ3Vz
dG9tLmNwcCAqLywKIAkJCQkxNEUwQkM1NTEzNjE0OEE4MDAyQUQxMkUgLyogSlNET01Ub2tlbkxp
c3RDdXN0b20uY3BwICovLAorCQkJCTdCMzUzOTNCMTVDQ0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRy
YW5zYWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0Q5QzI1RTBDMTdBQTY3MDA1QzkwQTIgLyog
SlNET01XaW5kb3dDdXN0b20uY3BwICovLAogCQkJCTY1MkZCQkJCMERFMjdDQjYwMDAxRDM4NiAv
KiBKU0RPTVdpbmRvd0N1c3RvbS5oICovLAogCQkJCUE4MEE5NDIyMTQ5RjIyNUUwMDk4OTI5MSAv
KiBKU0RPTVdpbmRvd1dlYkF1ZGlvQ3VzdG9tLmNwcCAqLywKQEAgLTI2OTkwLDYgKzI2OTkzLDcg
QEAKIAkJCQk3Njk0NTYzQzEyMTREOTdDMDAwN0NCQUUgLyogSlNET01Ub2tlbkxpc3QuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMTRFMEJDNTYxMzYxNDhBODAwMkFEMTJFIC8qIEpTRE9NVG9rZW5M
aXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdCMzUzN0M1MTVDQjJDQjUwMDgzQUI2
OSAvKiBKU0RPTVRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdCMzUzOTNDMTVD
Q0EwQUMwMDgzQUI2OSAvKiBKU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTJFMzdFMDA1MTJEQkM1QTQwMEE2QjIzMyAvKiBKU0RPTVVSTC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkxNDAzQkEwQzA5RUIxOEM3MDA3OTdDN0YgLyogSlNET01XaW5kb3cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkM2OTMyNzMwRDdFMjkzOTAwQUU0NEQxIC8qIEpTRE9NV2luZG93
QmFzZS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0RPTVRyYW5zYWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9ET01UcmFuc2FjdGlvbi5jcHAJKHJldmlzaW9uIDEyNTkxMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgs
MzEgKzI4LDExMyBAQAogCiAjaW5jbHVkZSAiRE9NVHJhbnNhY3Rpb24uaCIKIAorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIkpT
TWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIkpTVW5kb01hbmFnZXIuaCIKKyNpbmNs
dWRlICJVbmRvTWFuYWdlci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgCi1ET01UcmFuc2FjdGlvbjo6RE9NVHJhbnNhY3Rpb24oKQotICAgIDog
bV91bmRvTWFuYWdlcigwKQorRE9NVHJhbnNhY3Rpb246OkRPTVRyYW5zYWN0aW9uKERPTVdyYXBw
ZXJXb3JsZCogaXNvbGF0ZWRXb3JsZCkKKyAgICA6IG1faXNvbGF0ZWRXb3JsZChpc29sYXRlZFdv
cmxkKQorICAgICwgbV91bmRvTWFuYWdlcigwKQogewogfQogCi1QYXNzUmVmUHRyPERPTVRyYW5z
YWN0aW9uPiBET01UcmFuc2FjdGlvbjo6Y3JlYXRlKCkKK1Bhc3NSZWZQdHI8RE9NVHJhbnNhY3Rp
b24+IERPTVRyYW5zYWN0aW9uOjpjcmVhdGUoRE9NV3JhcHBlcldvcmxkKiBpc29sYXRlZFdvcmxk
KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NVHJhbnNhY3Rpb24oKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBET01UcmFuc2FjdGlvbihpc29sYXRlZFdvcmxkKSk7CiB9CiAKIHZv
aWQgRE9NVHJhbnNhY3Rpb246OmFwcGx5KCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50IEpT
QyBiaW5kaW5ncworICAgIG1faXNBdXRvbWF0aWMgPSBoYXNGdW5jdGlvbigiZXhlY3V0ZUF1dG9t
YXRpYyIpOworICAgIGlmICghbV9pc0F1dG9tYXRpYykKKyAgICAgICAgY2FsbEZ1bmN0aW9uKCJl
eGVjdXRlIik7CiB9CiAKIHZvaWQgRE9NVHJhbnNhY3Rpb246OnVuYXBwbHkoKQogewotICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQgSlNDIGJpbmRpbmdzCisgICAgaWYgKCFtX2lzQXV0b21hdGljKQor
ICAgICAgICBjYWxsRnVuY3Rpb24oInVuZG8iKTsKKyAgICAKKyAgICBpZiAobV91bmRvTWFuYWdl
cikKKyAgICAgICAgbV91bmRvTWFuYWdlci0+cmVnaXN0ZXJSZWRvU3RlcCh0aGlzKTsKIH0KIAog
dm9pZCBET01UcmFuc2FjdGlvbjo6cmVhcHBseSgpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVu
dCBKU0MgYmluZGluZ3MKKyAgICBpZiAoIW1faXNBdXRvbWF0aWMpCisgICAgICAgIGNhbGxGdW5j
dGlvbigicmVkbyIpOworICAgIAorICAgIGlmIChtX3VuZG9NYW5hZ2VyKQorICAgICAgICBtX3Vu
ZG9NYW5hZ2VyLT5yZWdpc3RlclVuZG9TdGVwKHRoaXMpOworfQorCitKU0RPTUdsb2JhbE9iamVj
dCogRE9NVHJhbnNhY3Rpb246OmRvbUdsb2JhbE9iamVjdCgpCit7CisgICAgaWYgKCFtX3VuZG9N
YW5hZ2VyIHx8ICFtX3VuZG9NYW5hZ2VyLT51bmRvU2NvcGVIb3N0KCkpCisgICAgICAgIHJldHVy
biAwOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBtX3VuZG9NYW5hZ2Vy
LT51bmRvU2NvcGVIb3N0KCktPmRvY3VtZW50KCk7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCBtX2lz
b2xhdGVkV29ybGQpOworfQorCitKU1ZhbHVlIERPTVRyYW5zYWN0aW9uOjpnZXRGdW5jdGlvbihj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBKU09iamVjdCogd3JhcHBlciA9IGFzT2JqZWN0KHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCB0aGlzKSk7CisgICAgaWYgKCF3cmFwcGVyKQorICAgICAg
ICByZXR1cm4gSlNWYWx1ZSgpOworCisgICAgSlNWYWx1ZSBkYXRhID0gd3JhcHBlci0+Z2V0KGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgRE9NVFJBTlNBQ1RJT05fREFUQSkpOworICAgIGlmICghZGF0
YS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOworCisgICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IGFzT2JqZWN0KGRhdGEpLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBpZiAoIWZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWUoKTsKKworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKworYm9vbCBET01UcmFu
c2FjdGlvbjo6aGFzRnVuY3Rpb24oY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQoreworICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkb21HbG9iYWxPYmplY3QoKTsKKyAgICBp
ZiAoIWdsb2JhbE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIGlmICghZXhlYykK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGdldEZ1bmN0aW9uKHByb3BlcnR5
TmFtZSwgZXhlYywgZ2xvYmFsT2JqZWN0KS5pc0Z1bmN0aW9uKCk7Cit9CisKK3ZvaWQgRE9NVHJh
bnNhY3Rpb246OmNhbGxGdW5jdGlvbihjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCit7CisgICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGRvbUdsb2JhbE9iamVjdCgpOworICAg
IGlmICghZ2xvYmFsT2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBpZiAoIWV4ZWMpCisgICAgICAg
IHJldHVybjsKKworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRGdW5jdGlvbihwcm9wZXJ0eU5h
bWUsIGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAgaWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBl
IGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBpZiAoY2Fs
bFR5cGUgIT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QsIG1fdW5kb01hbmFnZXIpOworICAgICAgICBNYXJrZWRBcmd1
bWVudEJ1ZmZlciBhcmdzOworICAgICAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhl
YywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKKyAgICB9
CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVRyYW5zYWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NVHJhbnNhY3Rp
b24uaAkocmV2aXNpb24gMTI1OTEwKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9N
VHJhbnNhY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDE5IEBACiAKICNpZiBF
TkFCTEUoVU5ET19NQU5BR0VSKQogCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5j
bHVkZSAiVW5kb1N0ZXAuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKKyNkZWZpbmUgRE9N
VFJBTlNBQ1RJT05fREFUQSAiZGF0YSIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBV
bmRvTWFuYWdlcjsKIAogY2xhc3MgRE9NVHJhbnNhY3Rpb24gOiBwdWJsaWMgVW5kb1N0ZXAgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPERPTVRyYW5zYWN0aW9uPiBjcmVhdGUoKTsK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01UcmFuc2FjdGlvbj4gY3JlYXRlKERPTVdyYXBwZXJX
b3JsZCopOwogCiAgICAgdm9pZCBhcHBseSgpOwogICAgIHZpcnR1YWwgdm9pZCB1bmFwcGx5KCkg
T1ZFUlJJREU7CkBAIC00OSw5ICs1MiwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVbmRvTWFu
YWdlcihVbmRvTWFuYWdlciogdW5kb01hbmFnZXIpIHsgbV91bmRvTWFuYWdlciA9IHVuZG9NYW5h
Z2VyOyB9CiAKIHByaXZhdGU6Ci0gICAgRE9NVHJhbnNhY3Rpb24oKTsKKyAgICBET01UcmFuc2Fj
dGlvbihET01XcmFwcGVyV29ybGQqKTsKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZG9tR2xvYmFs
T2JqZWN0KCk7CisgICAgSlNDOjpKU1ZhbHVlIGdldEZ1bmN0aW9uKGNvbnN0IGNoYXIqLCBKU0M6
OkV4ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgYm9vbCBoYXNGdW5jdGlvbihj
b25zdCBjaGFyKik7CisgICAgdm9pZCBjYWxsRnVuY3Rpb24oY29uc3QgY2hhciopOwogCisgICAg
RE9NV3JhcHBlcldvcmxkKiBtX2lzb2xhdGVkV29ybGQ7CiAgICAgVW5kb01hbmFnZXIqIG1fdW5k
b01hbmFnZXI7CisgICAgYm9vbCBtX2lzQXV0b21hdGljOwogfTsKIAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCShyZXZp
c2lvbiAxMjU5MTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBACiAjaW5jbHVkZSAiSlNE
T01TdHJpbmdMaXN0Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ01hcEN1c3RvbS5j
cHAiCiAjaW5jbHVkZSAiSlNET01Ub2tlbkxpc3RDdXN0b20uY3BwIgorI2luY2x1ZGUgIkpTRE9N
VHJhbnNhY3Rpb25DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5jcHAiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3dDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTRE9NV2luZG93U2hl
bGwuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01UcmFuc2FjdGlv
bkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01UcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBHT09H
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgR09PR0xFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
CisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVU5ET19N
QU5BR0VSKQorCisjaW5jbHVkZSAiSlNET01UcmFuc2FjdGlvbi5oIgorCisjaW5jbHVkZSAiVW5k
b01hbmFnZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitib29sIEpTRE9NVHJhbnNhY3Rpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKK3sKKyAgICBKU0RPTVRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbldyYXBwZXIgPSBq
c0Nhc3Q8SlNET01UcmFuc2FjdGlvbio+KGhhbmRsZS5nZXQoKS5hc0NlbGwoKSk7CisgICAgRE9N
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uID0gc3RhdGljX2Nhc3Q8RE9NVHJhbnNhY3Rpb24qPih0
cmFuc2FjdGlvbldyYXBwZXItPmltcGwoKSk7CisgICAgVW5kb01hbmFnZXIqIHVuZG9NYW5hZ2Vy
ID0gdHJhbnNhY3Rpb24tPnVuZG9NYW5hZ2VyKCk7CisgICAgaWYgKCF1bmRvTWFuYWdlciB8fCAh
dW5kb01hbmFnZXItPnVuZG9TY29wZUhvc3QoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiB2aXNpdG9yLmNvbnRhaW5zT3BhcXVlUm9vdChyb290KHVuZG9NYW5hZ2VyLT51bmRv
U2NvcGVIb3N0KCkpKTsKK30KKworfQorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTVW5kb01hbmFnZXJDdXN0b20uY3BwCShyZXZpc2lvbiAxMjU5
MTApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1VuZG9NYW5hZ2VyQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTMgKzI4LDQ2IEBACiAKICNpbmNsdWRlICJKU1VuZG9N
YW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJET01UcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIkpTRE9N
VHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CisKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotSlNWYWx1ZSBKU1VuZG9NYW5hZ2Vy
Ojp0cmFuc2FjdChFeGVjU3RhdGUqKQorSlNWYWx1ZSBKU1VuZG9NYW5hZ2VyOjp0cmFuc2FjdChF
eGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCBKU0MgYmluZGluZ3MK
KyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cygmSlNVbmRvTWFuYWdlcjo6c19pbmZvKSkKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworICAgIEpTVW5kb01hbmFnZXIqIGNhc3RlZFRoaXMg
PSBqc0Nhc3Q8SlNVbmRvTWFuYWdlcio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVW5kb01hbmFnZXI6OnNfaW5mbyk7
CisgICAgVW5kb01hbmFnZXIqIGltcGwgPSBzdGF0aWNfY2FzdDxVbmRvTWFuYWdlcio+KGNhc3Rl
ZFRoaXMtPmltcGwoKSk7CisKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAg
ICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoZXhlYykpOworCisgICAgSlNWYWx1ZSBkaWN0aW9uYXJ5ID0gTUFZQkVfTUlTU0lOR19QQVJB
TUVURVIoZXhlYywgMCwgRGVmYXVsdElzVW5kZWZpbmVkKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghZGljdGlv
bmFyeS5pc09iamVjdCgpKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIlRoZSBmaXJzdCBhcmd1bWVudCBpcyBub3Qgb2YgdHlwZSBET01UcmFu
c2FjdGlvbi4iKSk7CisKKyAgICBib29sIG1lcmdlKE1BWUJFX01JU1NJTkdfUEFSQU1FVEVSKGV4
ZWMsIDEsIERlZmF1bHRJc1VuZGVmaW5lZCkudG9Cb29sZWFuKCkpOworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBSZWZQ
dHI8RE9NVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gRE9NVHJhbnNhY3Rpb246OmNyZWF0ZShj
dXJyZW50V29ybGQoZXhlYykpOworICAgIEpTT2JqZWN0KiB0cmFuc2FjdGlvbldyYXBwZXIgPSBh
c09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0cmFuc2FjdGlv
bi5nZXQoKSkpOworCisgICAgSWRlbnRpZmllciBkYXRhTmFtZShleGVjLCBET01UUkFOU0FDVElP
Tl9EQVRBKTsKKyAgICB0cmFuc2FjdGlvbldyYXBwZXItPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGRhdGFOYW1lLCBkaWN0aW9uYXJ5LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbC0+dHJhbnNhY3QodHJhbnNhY3Rpb24s
IG1lcmdlLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RPTVRyYW5zYWN0aW9uLmlkbAkocmV2aXNpb24gMTI1OTEwKQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9ET01UcmFuc2FjdGlvbi5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2
LDcgKzI2LDcgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29u
ZGl0aW9uYWw9VU5ET19NQU5BR0VSLAotICAgICAgICBWOEN1c3RvbUlzUmVhY2hhYmxlCisgICAg
ICAgIEN1c3RvbUlzUmVhY2hhYmxlCiAgICAgXSBET01UcmFuc2FjdGlvbiB7CiAgICAgfTsKIApJ
bmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0No
YW5nZUxvZwkocmV2aXNpb24gMTI1OTEwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMTcgIFN1a29sc2FrIFNha3NodXdv
bmcgIDxzdWtvbHNha0Bnb29nbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBVbmRvTWFuYWdl
cidzIEpTQyBiaW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODk3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0
ZXItbm90LWNhbGxlZC5odG1sOiBBZGRlZC4KKwogMjAxMi0wOC0xNyAgQW5uYSBDYXZlbmRlciA8
YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFJlbW92aW5nIHRyYWNr
LWFjdGl2ZS1jdWVzLmh0bWwgZnJvbSBUZXh0RXhwZWN0YXRpb25zLCBwYXNzaW5nIG5vdy4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxl
ZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy91bmRvbWFu
YWdlci9kYXRhLXNldHRlci1ub3QtY2FsbGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVGhpcyB0ZXN0cyB0aGF0
IGlmIHRoZXJlIGlzIGEgc2V0dGVyIGZvciAiZGF0YSIgZGVmaW5lZCBvbiBPYmplY3QucHJvdG90
eXBlLCBpdCB3aWxsIG5vdCBiZSBjYWxsZWQgd2hlbiB3ZSBjcmVhdGUgYSBET00gdHJhbnNhY3Rp
b24uCisKK1BBU1MgVGhlIHNldHRlciBmb3IgImRhdGEiIGlzIGNhbGxlZCB3aGVuIHdlIHNldCB0
aGUgImRhdGEiIHByb3BlcnR5IG9mIGFuIG9iamVjdCB2aWEgc2NyaXB0LiAKK1BBU1MgVGhlIHNl
dHRlciBmb3IgImRhdGEiIGlzIG5vdCBjYWxsZWQgd2hlbiB3ZSBjcmVhdGUgYSBET00gdHJhbnNh
Y3Rpb24uIAorCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3VuZG9tYW5hZ2VyL2RhdGEtc2V0
dGVyLW5vdC1jYWxsZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Vu
ZG9tYW5hZ2VyL2RhdGEtc2V0dGVyLW5vdC1jYWxsZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvdW5kb21hbmFnZXIvZGF0YS1zZXR0ZXItbm90LWNhbGxlZC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+U2V0dGVyIG9mIGRhdGEgcHJvcGVydHkgaXMgbm90IGNhbGxlZDwvdGl0
bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3RzIHRoYXQgaWYgdGhlcmUgaXMgYSBz
ZXR0ZXIgZm9yICJkYXRhIiBkZWZpbmVkIG9uIE9iamVjdC5wcm90b3R5cGUsIGl0IHdpbGwgbm90
CitiZSBjYWxsZWQgd2hlbiB3ZSBjcmVhdGUgYSBET00gdHJhbnNhY3Rpb24uCis8c2NyaXB0Pgor
dmFyIGNhbGxlZDsKKworT2JqZWN0LnByb3RvdHlwZS5fX2RlZmluZVNldHRlcl9fKCJkYXRhIiwg
ZnVuY3Rpb24oZCkgeworICAgIGNhbGxlZCA9IHRydWU7Cit9KTsKKwordGVzdChmdW5jdGlvbigp
IHsKKyAgICBjYWxsZWQgPSBmYWxzZTsKKyAgICB2YXIgb2JqID0gbmV3IE9iamVjdCgpOworICAg
IG9iai5kYXRhID0gMTsKKyAgICBhc3NlcnRfdHJ1ZShjYWxsZWQpOworfSwgIlRoZSBzZXR0ZXIg
Zm9yIFwiZGF0YVwiIGlzIGNhbGxlZCB3aGVuIHdlIHNldCB0aGUgXCJkYXRhXCIgcHJvcGVydHkg
b2YgYW4gb2JqZWN0IHZpYSBzY3JpcHQuIik7CisKK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgY2Fs
bGVkID0gZmFsc2U7CisgICAgZG9jdW1lbnQudW5kb01hbmFnZXIudHJhbnNhY3QoeworICAgICAg
ICAiZXhlY3V0ZSI6IGZ1bmN0aW9uICgpIHsgfSwKKyAgICAgICAgInVuZG8iOiBmdW5jdGlvbiAo
KSB7IH0sCisgICAgICAgICJyZWRvIjogZnVuY3Rpb24gKCkgeyB9CisgICAgfSk7CisgICAgYXNz
ZXJ0X2ZhbHNlKGNhbGxlZCk7Cit9LCAiVGhlIHNldHRlciBmb3IgXCJkYXRhXCIgaXMgbm90IGNh
bGxlZCB3aGVuIHdlIGNyZWF0ZSBhIERPTSB0cmFuc2FjdGlvbi4iKTsKKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>