<?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>120421</bug_id>
          
          <creation_ts>2013-08-28 08:22:11 -0700</creation_ts>
          <short_desc>[ATK] Missing WTR AccessibilityUIElement::addNotificationListener implementation</short_desc>
          <delta_ts>2013-09-20 08:14:21 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>98350</blocked>
    
    <blocked>121668</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Denis Nomiyama (dnomi)">d.nomiyama</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>d.nomiyama</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mario</cc>
    
    <cc>rakuco</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>922015</commentid>
    <comment_count>0</comment_count>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-08-28 08:22:11 -0700</bug_when>
    <thetext>AccessibilityUIElement for WTR in the GTK+ port does not support event notification listeners (AccessilibityNotificationHandler).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927807</commentid>
    <comment_count>1</comment_count>
      <attachid>211317</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-11 09:08:35 -0700</bug_when>
    <thetext>Created attachment 211317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927837</commentid>
    <comment_count>2</comment_count>
      <attachid>211317</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-11 10:02:06 -0700</bug_when>
    <thetext>Comment on attachment 211317
Patch

Attachment 211317 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/1736954</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927887</commentid>
    <comment_count>3</comment_count>
      <attachid>211317</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-11 11:30:14 -0700</bug_when>
    <thetext>Comment on attachment 211317
Patch

I will fix the compilation issue on efl-wk2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927905</commentid>
    <comment_count>4</comment_count>
      <attachid>211337</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-11 11:53:51 -0700</bug_when>
    <thetext>Created attachment 211337
Patch

Fixed compilation problem on efl-wk2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>927907</commentid>
    <comment_count>5</comment_count>
      <attachid>211337</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2013-09-11 11:59:10 -0700</bug_when>
    <thetext>Comment on attachment 211337
Patch

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

&gt; Tools/ChangeLog:77
&gt; +2013-09-11  Denis Nomiyama  &lt;d.nomiyama@samsung.com&gt;

two change log entries

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:71
&gt; +static gboolean axObjectEventListener(GSignalInvocationHint *signalHint, guint numParamValues, const GValue *paramValues, gpointer data)

* are on wrong side

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:74
&gt; +    if (numParamValues &lt; 1)

this looks like it should be if (!numParamValues) return

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:79
&gt; +        return TRUE;

true instead of TRUE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928029</commentid>
    <comment_count>6</comment_count>
      <attachid>211337</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-11 16:10:20 -0700</bug_when>
    <thetext>Comment on attachment 211337
Patch

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

Thanks a lot for the review and sorry for the mistakes. I will fix them and I&apos;ll also apply some of the fixes for the issues found at bug 120669.

&gt;&gt; Tools/ChangeLog:77
&gt;&gt; +2013-09-11  Denis Nomiyama  &lt;d.nomiyama@samsung.com&gt;
&gt; 
&gt; two change log entries

Ops. I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:71
&gt;&gt; +static gboolean axObjectEventListener(GSignalInvocationHint *signalHint, guint numParamValues, const GValue *paramValues, gpointer data)
&gt; 
&gt; * are on wrong side

Sure, I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:74
&gt;&gt; +    if (numParamValues &lt; 1)
&gt; 
&gt; this looks like it should be if (!numParamValues) return

Nice one. I&apos;ll change it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:79
&gt;&gt; +        return TRUE;
&gt; 
&gt; true instead of TRUE

Ok I&apos;ll fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928043</commentid>
    <comment_count>7</comment_count>
      <attachid>211366</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-11 16:54:43 -0700</bug_when>
    <thetext>Created attachment 211366
Patch

Fixed the patch according to the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928223</commentid>
    <comment_count>8</comment_count>
      <attachid>211366</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-12 03:30:18 -0700</bug_when>
    <thetext>Comment on attachment 211366
Patch

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

Thanks for the patch Denis. It looks good already but still needs some more work. See my review below...

&gt; Tools/ChangeLog:37
&gt; +        * WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:
&gt; +        Added.

I guess in cases like this is better to leave the &quot;Added.&quot; in the previous line, even it&apos;s long, since it makes it more readable.

&gt; Tools/WebKitTestRunner/CMakeLists.txt:27
&gt; +    ${WEBKIT_TESTRUNNER_DIR}/InjectedBundle/atk
&gt;      ${WEBKIT_TESTRUNNER_DIR}/InjectedBundle/Bindings

Wrong alphabetical order. I believe uppercase &apos;B&apos; should come before lowercase &apos;a&apos;

&gt; Tools/WebKitTestRunner/GNUmakefile.am:137
&gt; +	-I$(srcdir)/Tools/WebKitTestRunner/InjectedBundle/atk \

Same here.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:26
&gt; +

You don&apos;t need this extra line. See &quot;#include Statements&quot; in http://www.webkit.org/coding/coding-style.html

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:49
&gt; +static guint stateChangeListenerId = 0;
&gt; +static guint focusEventListenerId = 0;
&gt; +static guint activeDescendantChangedListenerId = 0;
&gt; +static guint childrenChangedListenerId = 0;
&gt; +static guint propertyChangedListenerId = 0;
&gt; +static guint visibleDataChangedListenerId = 0;
&gt; +static NotificationHandlersMap notificationHandlers;
&gt; +static AccessibilityNotificationHandler* globalNotificationHandler = 0;
&gt; +static bool loggingAccessibilityEvents = false;
&gt; +
&gt; +static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName, const gchar* signalValue)

This refactoring might be a good opportunity to move into using unnamed namespaces for this static declarations, which are the recommended alternative in C++

Also, it might be a good opportunity too to move from glib specific types (e.g. guint) into more general types (e.g. unsigned) for things that are not going to be part of public APIs

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:59
&gt; +    const gchar* objectName = atk_object_get_name(accessible);

Following the lead of the comment above, s/gchar/char. Similar considerations in the rest of the code after this point

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:107
&gt; +#if PLATFORM(GTK)

Couldn&apos;t this be #if PLATFORM(GTK) || PLATFORM(EFL) ?

I guess the answer is &quot;probably yes&quot; but that it&apos;s perhaps better to leave it out of this patch because of consistency with what we did for DRT, since we can&apos;t test it really in EFL. However, I think it might be worth to let EFL guys know about it because that bit might help them pass some additional tests as well.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:166
&gt; +#if PLATFORM(GTK)

Same consideration here about EFL

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:197
&gt; +#if PLATFORM(GTK)

And here

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:1135
&gt; +

Nit. I would probably remove this blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928256</commentid>
    <comment_count>9</comment_count>
      <attachid>211366</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-12 05:38:15 -0700</bug_when>
    <thetext>Comment on attachment 211366
Patch

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

Many thanks for the review. I&apos;ll make the changes.
I have done some extra tests and found a problem with disconnectAccessibilityCallbacks(), which is not returning a value (true) at the end.
Another problem was that connectAccessibilityCallbacks() assumes that notification handlers are added to HashMap after the call. And I modified logAccessibilityEvents() and setNotificationFunctionCallback() to reflect this assumption.

&gt;&gt; Tools/ChangeLog:37
&gt;&gt; +        Added.
&gt; 
&gt; I guess in cases like this is better to leave the &quot;Added.&quot; in the previous line, even it&apos;s long, since it makes it more readable.

Ok.

&gt;&gt; Tools/WebKitTestRunner/CMakeLists.txt:27
&gt;&gt;      ${WEBKIT_TESTRUNNER_DIR}/InjectedBundle/Bindings
&gt; 
&gt; Wrong alphabetical order. I believe uppercase &apos;B&apos; should come before lowercase &apos;a&apos;

Ops. I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/GNUmakefile.am:137
&gt;&gt; +	-I$(srcdir)/Tools/WebKitTestRunner/InjectedBundle/atk \
&gt; 
&gt; Same here.

Ok.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:26
&gt;&gt; +
&gt; 
&gt; You don&apos;t need this extra line. See &quot;#include Statements&quot; in http://www.webkit.org/coding/coding-style.html

Ok. I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:49
&gt;&gt; +static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName, const gchar* signalValue)
&gt; 
&gt; This refactoring might be a good opportunity to move into using unnamed namespaces for this static declarations, which are the recommended alternative in C++
&gt; 
&gt; Also, it might be a good opportunity too to move from glib specific types (e.g. guint) into more general types (e.g. unsigned) for things that are not going to be part of public APIs

Sure, I&apos;ll modify them.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:107
&gt;&gt; +#if PLATFORM(GTK)
&gt; 
&gt; Couldn&apos;t this be #if PLATFORM(GTK) || PLATFORM(EFL) ?
&gt; 
&gt; I guess the answer is &quot;probably yes&quot; but that it&apos;s perhaps better to leave it out of this patch because of consistency with what we did for DRT, since we can&apos;t test it really in EFL. However, I think it might be worth to let EFL guys know about it because that bit might help them pass some additional tests as well.

Ok. Search for the respective bug report for EFL or will create one if not there yet.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:1135
&gt;&gt; +
&gt; 
&gt; Nit. I would probably remove this blank line.

Ok. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928257</commentid>
    <comment_count>10</comment_count>
      <attachid>211366</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-12 05:39:35 -0700</bug_when>
    <thetext>Comment on attachment 211366
Patch

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

&gt; Tools/ChangeLog:3
&gt; +        [GTK] Missing WTR AccessibilityUIElement::addNotificationListener implementation

This patch does not seem GTK-specific. Please use [ATK] flag instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928258</commentid>
    <comment_count>11</comment_count>
      <attachid>211366</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-12 05:49:09 -0700</bug_when>
    <thetext>Comment on attachment 211366
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:267
&gt; +#if PLATFORM(GTK) || PLATFORM(EFL)

#if PLATFORM(GTK) || (PLATFORM(EFL) &amp;&amp; HAVE(ACCESSIBILITY))

Ditto in the other places.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:52
&gt; +        m_globalNotificationHandler = adoptRef(new AccessibilityNotificationHandler);

Please use the factory method.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h:38
&gt; +    AccessibilityNotificationHandler(void);

Please make this constructor private and omit the &quot;void&quot;. There is already a create() factory method.

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h:42
&gt; +    GRefPtr&lt;AtkObject&gt; platformElement(void) const { return m_platformElement; }

Ditto for the void</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928261</commentid>
    <comment_count>12</comment_count>
      <attachid>211366</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-12 06:19:28 -0700</bug_when>
    <thetext>Comment on attachment 211366
Patch

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

Many thanks for the comments. I will address the issues.

&gt;&gt; Tools/ChangeLog:3
&gt;&gt; +        [GTK] Missing WTR AccessibilityUIElement::addNotificationListener implementation
&gt; 
&gt; This patch does not seem GTK-specific. Please use [ATK] flag instead.

Sure. I have changed the bug title and will update the ChangeLog.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:267
&gt;&gt; +#if PLATFORM(GTK) || PLATFORM(EFL)
&gt; 
&gt; #if PLATFORM(GTK) || (PLATFORM(EFL) &amp;&amp; HAVE(ACCESSIBILITY))
&gt; 
&gt; Ditto in the other places.

Ok. I&apos;ll fix them.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:52
&gt;&gt; +        m_globalNotificationHandler = adoptRef(new AccessibilityNotificationHandler);
&gt; 
&gt; Please use the factory method.

Ok. I&apos;ll change it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h:38
&gt;&gt; +    AccessibilityNotificationHandler(void);
&gt; 
&gt; Please make this constructor private and omit the &quot;void&quot;. There is already a create() factory method.

Sure, I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h:42
&gt;&gt; +    GRefPtr&lt;AtkObject&gt; platformElement(void) const { return m_platformElement; }
&gt; 
&gt; Ditto for the void

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928270</commentid>
    <comment_count>13</comment_count>
      <attachid>211426</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-12 07:05:28 -0700</bug_when>
    <thetext>Created attachment 211426
Patch

Changed patch according to review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928303</commentid>
    <comment_count>14</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-12 08:36:34 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Created an attachment (id=211426) [details]
&gt; Patch
&gt; 
&gt; Changed patch according to review comments.

The patch looks good to me, but I&apos;d rather give Christopher a chance to comment on it, and approve it he wants so, before actually going for it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928345</commentid>
    <comment_count>15</comment_count>
      <attachid>211426</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-09-12 09:44:06 -0700</bug_when>
    <thetext>Comment on attachment 211426
Patch

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

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:51
&gt; +    if (m_globalNotificationHandler)

Don&apos;t you mean the opposite?

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:53
&gt; +    m_globalNotificationHandler-&gt;logAccessibilityEvents();

Weird that this does not crash

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:85
&gt; +    String notificationName;

Couldn&apos;t this be a const char* ?

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:108
&gt; +#if PLATFORM(GTK)

Why is this GTK-specific? Are we missing something in EFL?

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:169
&gt; +#if PLATFORM(GTK)

Why no EFL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928834</commentid>
    <comment_count>16</comment_count>
      <attachid>211426</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-13 07:39:20 -0700</bug_when>
    <thetext>Comment on attachment 211426
Patch

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

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:51
&gt;&gt; +    if (m_globalNotificationHandler)
&gt; 
&gt; Don&apos;t you mean the opposite?

Ops, yes. I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:53
&gt;&gt; +    m_globalNotificationHandler-&gt;logAccessibilityEvents();
&gt; 
&gt; Weird that this does not crash

The pointer is ok, but a new global handler is created every time the logging is enabled.. I&apos;ll fix it.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:85
&gt;&gt; +    String notificationName;
&gt; 
&gt; Couldn&apos;t this be a const char* ?

True and it makes the code simpler and quicker. I&apos;ll give it a try.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:108
&gt;&gt; +#if PLATFORM(GTK)
&gt; 
&gt; Why is this GTK-specific? Are we missing something in EFL?

I&apos;m not able to test the EFL port to ensure this also works on EFL. I&apos;m planning to raise a bug to let EFL engineers know about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928924</commentid>
    <comment_count>17</comment_count>
      <attachid>211567</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-13 11:15:59 -0700</bug_when>
    <thetext>Created attachment 211567
Patch

Modified the patch according to the review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931219</commentid>
    <comment_count>18</comment_count>
      <attachid>211567</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-20 01:45:17 -0700</bug_when>
    <thetext>Comment on attachment 211567
Patch

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

Curiously enough, I found a couple of things now that I thing it would be great to fix/improve before landing the patch, which is already great.

Setting r- because of those. See comments below...

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:93
&gt; +        if (!g_strcmp0(g_value_get_string(&amp;paramValues[1]), &quot;invalid-entry&quot;))
&gt; +            notificationName = &quot;AXInvalidStatusChanged&quot;;

I think we should also cover the other cases with this patch that are managed by DRT already: CheckedStateChanged, AXLayoutComplete, AXFocusedUIElementChanged and AXValueChanged.

Potentially, that change might help us remove more tests from TestExpectations, or at least help us get closer to that (in case there were additional issues pending to be resolved)

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:577
&gt; +
&gt; +    // In case of &apos;aria-invalid&apos; when the attribute empty or has &quot;false&quot; for ATK
&gt; +    // according to http://www.w3.org/WAI/PF/aria-implementation/#mapping attribute
&gt; +    // is not mapped but layout tests will expect &apos;false&apos;.
&gt; +    if (attributeValue.isEmpty() &amp;&amp; atkAttributeName == &quot;aria-invalid&quot;)
&gt; +        return JSStringCreateWithUTF8CString(&quot;false&quot;);
&gt; +

This bit is not actually related to this bug, since it just adds the mapping in WKTR to read the exposed value for aria-invalid and has nothing to do with the notifications stuff.

Maybe file a new bug just for it depending on this bug, and move the removal of aria-invalid test from TestExpectations file there?

&gt; LayoutTests/platform/gtk-wk2/TestExpectations:-504
&gt; -# [GTK] Missing WTR AccessibilityUIElement::addNotificationListener implementation
&gt; -webkit.org/b/120421 accessibility/aria-invalid.html [ Timeout ]
&gt; -

As mentioned above, this could be moved to a separate bug if we file one for the aria-invalid mapping thing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931246</commentid>
    <comment_count>19</comment_count>
      <attachid>211567</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-20 03:20:05 -0700</bug_when>
    <thetext>Comment on attachment 211567
Patch

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

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:93
&gt;&gt; +            notificationName = &quot;AXInvalidStatusChanged&quot;;
&gt; 
&gt; I think we should also cover the other cases with this patch that are managed by DRT already: CheckedStateChanged, AXLayoutComplete, AXFocusedUIElementChanged and AXValueChanged.
&gt; 
&gt; Potentially, that change might help us remove more tests from TestExpectations, or at least help us get closer to that (in case there were additional issues pending to be resolved)

Sure, good point. I&apos;ll add the other cases.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:577
&gt;&gt; +
&gt; 
&gt; This bit is not actually related to this bug, since it just adds the mapping in WKTR to read the exposed value for aria-invalid and has nothing to do with the notifications stuff.
&gt; 
&gt; Maybe file a new bug just for it depending on this bug, and move the removal of aria-invalid test from TestExpectations file there?

Ok. I&apos;ve raised another bug for it (bug 121668)

&gt;&gt; LayoutTests/platform/gtk-wk2/TestExpectations:-504
&gt;&gt; -
&gt; 
&gt; As mentioned above, this could be moved to a separate bug if we file one for the aria-invalid mapping thing

Ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931301</commentid>
    <comment_count>20</comment_count>
      <attachid>212155</attachid>
    <who name="Denis Nomiyama (dnomi)">d.nomiyama</who>
    <bug_when>2013-09-20 06:14:50 -0700</bug_when>
    <thetext>Created attachment 212155
Patch

Modified patch according to review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931331</commentid>
    <comment_count>21</comment_count>
      <attachid>212155</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2013-09-20 07:49:24 -0700</bug_when>
    <thetext>Comment on attachment 212155
Patch

Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931347</commentid>
    <comment_count>22</comment_count>
      <attachid>212155</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-20 08:14:17 -0700</bug_when>
    <thetext>Comment on attachment 212155
Patch

Clearing flags on attachment: 212155

Committed r156164: &lt;http://trac.webkit.org/changeset/156164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931348</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-20 08:14:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211317</attachid>
            <date>2013-09-11 09:08:35 -0700</date>
            <delta_ts>2013-09-11 11:53:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120421-20130911170848.patch</filename>
            <type>text/plain</type>
            <size>33822</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NTE0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWE0ZDM3ZWUyNjc3YmM0MWU4YjhlOGI3NmUyOTdhYjFh
YWUzOThmZi4uZDJmODNjM2M0ZmNmYjhjZTU0NjAyODMyMTU4NDUyNjQ4YzFmNzI0OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDEzLTA5LTExICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBub3RpZmljYXRpb24g
bGlzdGVuZXIgZm9yIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9yCisgICAgICAgIFdlYktpdFRl
c3RSdW5uZXIuIFRoZSBzaWduYWwgaXMgZ2VuZXJhdGVkIGJ5CisgICAgICAgIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbigpIGFuZCByZWNlaXZlZCBieQorICAgICAgICBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoKS4gYXhPYmplY3RFdmVudExpc3RlbmVyKCkgd2lsbCB0aGVu
IGludm9rZQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKCkgd2l0aCB0aGUgcmVzcGVj
dGl2ZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVy
cyBhcmUgc3RvcmVkIGluIEhhc2hNYXAgaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXJBdGsuY3BwLgorCisgICAgICAgIE1vdmVkIEFUSyBzaWduYWwgaGFuZGxpbmcg
KHByaW50QWNjZXNzaWJpbGl0eUV2ZW50IGFuZAorICAgICAgICBheE9iamVjdEV2ZW50TGlzdGVu
ZXIpIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIEFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC9oLgorICAgICAgICAqIFdlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBNb3Zl
ZAorICAgICAgICBsaXN0ZW5lciBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXJBdGsuY3BwLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDogTW92ZWQKKyAgICAgICAgbGlzdGVuZXIgSURzIHRvIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQg
YQorICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlciBmb3IgR1RLKyBhbmQgRUZMLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgTW92ZWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQgYW5k
IGF4T2JqZWN0RXZlbnRMaXN0ZW5lciB0bworICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlckF0ay5jcHAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTogTW92ZWQgbGlzdGVuZXIKKyAgICAgICAgSURzIHRv
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBNb3ZlZCBs
aXN0ZW5lcgorICAgICAgICBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJB
dGsuY3BwLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcDoKKyAgICAgICAgQWRkZWQuCisg
ICAgICAgIChXVFI6OnByaW50QWNjZXNzaWJpbGl0eUV2ZW50KTogUHJpbnRzIGFjY2Vzc2liaWxp
dHkgZXZlbnRzLiBUaGlzCisgICAgICAgIGZ1bmN0aW9uIHdhcyBtb3ZlZCBmcm9tIEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6YXhPYmplY3RFdmVudExpc3Rl
bmVyKTogQ2FsbGJhY2sgZm9yIHNpZ25hbHMuIFRoaXMgZnVuY3Rpb24gd2FzCisgICAgICAgIG1v
dmVkIGZyb20gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIpOgorICAgICAgICBJbml0aWFsaXplIGVsZW1lbnQgYW5kIGZ1bmN0aW9uIGNhbGxi
YWNrLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6fkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyBoYW5kbGVy
IGZyb20gSGFzaE1hcCBhbmQgZGlzY29ubmVjdHMgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKyAg
ICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmxvZ0FjY2Vzc2li
aWxpdHlFdmVudHMpOiBTZXRzCisgICAgICAgIGxvZ2dpbmcgbW9kZSBhbmQgY29ubmVjdHMgY2Fs
bGJhY2tzLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6
c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgIFNldHMgdGhlIG5vdGlm
aWNhdGlvbiBjYWxsYmFjayBhbmQgY29ubmVjdHMgY2FsbGJhY2sgdG8gc2lnbmFscy4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OnJlbW92ZUFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyB0aGUgbm90aWZpY2F0
aW9uIGNhbGxiYWNrIGZyb20gSGFzaE1hcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXI6OmNvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKToKKyAgICAg
ICAgQ29ubmVjdHMgYXhPYmplY3RFdmVudExpc3RlbmVyIHRvIEFUSyBzaWduYWxzLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFjY2Vz
c2liaWxpdHlDYWxsYmFja3MpOgorICAgICAgICBEaXNjb25uZWN0cyBjYWxsYmFjay4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5oOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0ZSk6IENyZWF0ZXMgYSBuZXcgaW5z
dGFuY2UKKyAgICAgICAgb2YgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuCisgICAg
ICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpzZXRQbGF0Zm9ybUVs
ZW1lbnQpOiBTZXRzIHRoZQorICAgICAgICBlbGVtZW50LgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6cGxhdGZvcm1FbGVtZW50KTogR2V0cyB0aGUKKyAg
ICAgICAgZWxlbWVudC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXI6Om5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICBHZXRzIHRoZSBu
b3RpZmljYXRpb24gY2FsbGJhY2suCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6
OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKTogUmV0dXJucyBm
YWxzZSBpbgorICAgICAgICBjYXNlIG9mIGFyaWEtaW52YWxpZCBhbmQgZW1wdHkgdmFsdWUuCisg
ICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3Rl
bmVyKTogQ3JlYXRlcworICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlciwgc2V0IHRoZSBwbGF0
Zm9ybSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9uCisgICAgICAgIGNhbGxiYWNrLgorICAg
ICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0
ZW5lcik6IERlbGV0ZXMgdGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVyLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKwogMjAxMy0wOS0xMCAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
Zml4IGFmdGVyIHRoZSB1bnJldmlld2VkIHIxNTU0OTggdG8gdW5icmVhayB0aGUgZmFpbHVyZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzBiNGFhZWNhZmQxMTk1ZjBh
Y2JjMGU2ZmIxOGEzZjEwYjI1MmE4Zi4uN2I0NzI1ODZjMjIxM2IzZjA0NTdjNmVhYTExMmU2ZmQx
Mzg5MGU1MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5h
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5
NCw4IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9
IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY3Rp
dmF0ZUZvbnRzLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
Y3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBcCiAJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwYWJsZS5o
IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pTV3Jh
cHBlci5jcHAgXApAQCAtMTMyLDYgKzEzNCw3IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGVfbGFfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIgXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUgXAorCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrIFwKIAktSSQoc3JjZGlyKS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZSBcCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDIxMmU5OTExMTEzYzA3OWNhOTdi
YzcyMjgyN2JmYjg1ZDM0MTFkNTguLmRiOGFhYzIxOTA2NjI2NjAzYzA5YWEyYjIwNGY2MjY3Y2Qz
ZGZmZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC00NCwxNCArNDQs
NiBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6Y3JlYXRlKCkKIH0KIAogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCkKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKLSAg
ICA6IG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKDApCi0gICAgLCBtX2ZvY3VzRXZlbnRMaXN0ZW5l
cklkKDApCi0gICAgLCBtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCgwKQotICAg
ICwgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKDApCi0gICAgLCBtX3Byb3BlcnR5Q2hhbmdl
ZExpc3RlbmVySWQoMCkKLSAgICAsIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCgwKQot
I2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNDdkZTM0
MjA2MWVhYWJlZjM4MDdiMjVkMDI2Njc4NzI5OTJhYmIzLi45MGQ4ZmE3NjVlY2JlM2RjYTVhNGQ4
ZDNmMDkxNjIxMjljOTUwN2IyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC0z
Myw2ICszMyw5IEBACiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNl
bmRpZgorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlckF0ay5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewogICAgIApAQCAtNjks
MTIgKzcyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpCi0gICAgdW5zaWduZWQgbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQ7Ci0gICAgdW5z
aWduZWQgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZDsKLSAgICB1bnNpZ25lZCBtX2FjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkTGlzdGVuZXJJZDsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQ2hhbmdlZExp
c3RlbmVySWQ7Ci0gICAgdW5zaWduZWQgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkOwotICAg
IHVuc2lnbmVkIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZDsKKyAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxl
cjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCBiYjFiZGU1
ZDM1YWJmZTdjZjgzMTc3MzNmMjU2YmY0MTg2YTE1NTlhLi41ZjZlZGIyYTEzNDZmZWZiYTc4OTQ5
OTA4OTZjMWZhOWM5ODI0ZjU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtNTAs
NiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogUGxhdGZvcm1VSUVsZW1lbnQ7
CiAKIHR5cGVkZWYgQ09NUHRyPElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlm
IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgogI2luY2x1
ZGUgPGF0ay9hdGsuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiB0eXBlZGVm
IEdSZWZQdHI8QXRrT2JqZWN0PiBQbGF0Zm9ybVVJRWxlbWVudDsKQEAgLTI2Miw2ICsyNjMsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5zaWduZWQgbG9jYXRpb24sIHVu
c2lnbmVkIGxlbmd0aCk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9ub3Rp
ZmljYXRpb25IYW5kbGVyOworI2VuZGlmCiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKaW5kZXggM2I1OGMw
ZGEwMzM4YjQ1NjY1ZWE5NTdiNGM2YmY5ZDhmMGEyNDA0NC4uMDQ2NjJiNzI2OWVlYmZjNzY3MmE0
YzU2OTZkZTUzMjUxMTQ4MGQ5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcApAQCAtMzksNjMgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0
YXRpYyB2b2lkIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KEF0a09iamVjdCogYWNjZXNzaWJsZSwg
Y29uc3QgZ2NoYXIqIHNpZ25hbE5hbWUsIGNvbnN0IGdjaGFyKiBzaWduYWxWYWx1ZSkKLXsKLSAg
ICAvLyBEbyBub3QgaGFuZGxlIHN0YXRlLWNoYW5nZTpkZWZ1bmN0IHNpZ25hbHMsIGFzIHRoZSBB
dGtPYmplY3QKLSAgICAvLyBhc3NvY2lhdGVkIHRvIHRoZW0gd2lsbCBub3QgYmUgdmFsaWQgYXQg
dGhpcyBwb2ludCBhbHJlYWR5LgotICAgIGlmICghc2lnbmFsTmFtZSB8fCAhZ19zdHJjbXAwKHNp
Z25hbE5hbWUsICJzdGF0ZS1jaGFuZ2U6ZGVmdW5jdCIpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFyKiBvYmplY3ROYW1lID0gYXRrX29iamVjdF9nZXRf
bmFtZShhY2Nlc3NpYmxlKTsKLSAgICBBdGtSb2xlIG9iamVjdFJvbGUgPSBhdGtfb2JqZWN0X2dl
dF9yb2xlKGFjY2Vzc2libGUpOwotCi0gICAgLy8gVHJ5IHRvIGFsd2F5cyBwcm92aWRlIGEgbmFt
ZSB0byBiZSBsb2dnZWQgZm9yIHRoZSBvYmplY3QuCi0gICAgaWYgKCFvYmplY3ROYW1lIHx8ICpv
YmplY3ROYW1lID09ICdcMCcpCi0gICAgICAgIG9iamVjdE5hbWUgPSAiKE5vIG5hbWUpIjsKLQot
ICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3Ry
ZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVw
KHNpZ25hbE5hbWUpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJp
bmcoZ19zdHJkdXBfcHJpbnRmKCJBY2Nlc3NpYmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAv
IE5hbWU6IFwiJXNcIiAvIFJvbGU6ICVkXG4iLCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9i
amVjdE5hbWUsIG9iamVjdFJvbGUpKTsKLSAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0
cHV0VGV4dChTdHJpbmc6OmZyb21VVEY4KGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZy5nZXQoKSkp
OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gYXhPYmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZv
Y2F0aW9uSGludCAqc2lnbmFsSGludCwgZ3VpbnQgbnVtUGFyYW1WYWx1ZXMsIGNvbnN0IEdWYWx1
ZSAqcGFyYW1WYWx1ZXMsIGdwb2ludGVyIGRhdGEpCi17Ci0gICAgLy8gQXQgbGVhc3Qgd2Ugc2hv
dWxkIHJlY2VpdmUgdGhlIGluc3RhbmNlIGVtaXR0aW5nIHRoZSBzaWduYWwuCi0gICAgaWYgKG51
bVBhcmFtVmFsdWVzIDwgMSkKLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICBBdGtPYmplY3Qq
IGFjY2Vzc2libGUgPSBBVEtfT0JKRUNUKGdfdmFsdWVfZ2V0X29iamVjdCgmcGFyYW1WYWx1ZXNb
MF0pKTsKLSAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkp
Ci0gICAgICAgIHJldHVybiBUUlVFOwotCi0gICAgR1NpZ25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5Owot
ICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWU7Ci0gICAgR093blB0cjxnY2hhcj4gc2lnbmFs
VmFsdWU7Ci0KLSAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWdu
YWxRdWVyeSk7Ci0KLSAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwg
InN0YXRlLWNoYW5nZSIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50
Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkp
KTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVl
X2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJmb2N1cy1ldmVudCIpKSB7Ci0gICAgICAgIHNp
Z25hbE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKLSAgICAgICAgc2lnbmFsVmFs
dWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZh
bHVlc1sxXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFs
X25hbWUsICJjaGlsZHJlbi1jaGFuZ2VkIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19z
dHJkdXAoImNoaWxkcmVuLWNoYW5nZWQiKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0
cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0g
ICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAicHJvcGVy
dHktY2hhbmdlIikpCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJv
cGVydHktY2hhbmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkp
OwotICAgIGVsc2UKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoc2lnbmFsUXVlcnku
c2lnbmFsX25hbWUpKTsKLQotICAgIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUs
IHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZhbHVlLmdldCgpKTsKLQotICAgIHJldHVybiBUUlVF
OwotfQotCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKCkKIHsKICAgICAvLyBFbnN1cmUgbm8gY2FsbGJhY2tzIGFyZSBjb25uZWN0ZWQgYmVmb3Jl
LgpAQCAtMTA1LDEzICs0OCw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0Fj
Y2Vzc2liaWxpdHlFdmVudHMoKQogICAgIC8vIHRoZSByb290IGFjY2Vzc2libGUgb2JqZWN0LCB3
aGljaCB3aWxsIGNyZWF0ZSB0aGUgZnVsbCBoaWVyYXJjaHkuCiAgICAgcm9vdEVsZW1lbnQoKTsK
IAotICAgIC8vIEFkZCBnbG9iYWwgbGlzdGVuZXJzIGZvciBBdGtPYmplY3QncyBzaWduYWxzLgot
ICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpzdGF0ZS1jaGFuZ2UiKTsK
LSAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpmb2N1cy1ldmVudCIpOwot
ICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxf
ZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDphY3Rp
dmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7Ci0gICAgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklk
ID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAi
QVRLOkF0a09iamVjdDpjaGlsZHJlbi1jaGFuZ2VkIik7Ci0gICAgbV9wcm9wZXJ0eUNoYW5nZWRM
aXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExp
c3RlbmVyLCAiQVRLOkF0a09iamVjdDpwcm9wZXJ0eS1jaGFuZ2UiKTsKLSAgICBtX3Zpc2libGVE
YXRhQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9i
amVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnZpc2libGUtZGF0YS1jaGFuZ2VkIik7
CisgICAgaWYgKG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKKyAgICAgICAgbV9nbG9iYWxO
b3RpZmljYXRpb25IYW5kbGVyID0gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKTsKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPmxvZ0FjY2Vzc2li
aWxpdHlFdmVudHMoKTsKIAogICAgIC8vIEVuc3VyZSB0aGUgQXRrIGludGVyZmFjZSB0eXBlcyBh
cmUgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlCiAgICAgLy8gdGhlIEF0a0RvY3VtZW50IHNpZ25hbCBo
YW5kbGVycyBiZWxvdyB3b24ndCBnZXQgcmVnaXN0ZXJlZC4KQEAgLTEyMywzMSArNjIsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKIAog
dm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7
Ci0gICAgLy8gQXRrT2JqZWN0IHNpZ25hbHMuCi0gICAgaWYgKG1fc3RhdGVDaGFuZ2VMaXN0ZW5l
cklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fc3RhdGVD
aGFuZ2VMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSAwOwot
ICAgIH0KLSAgICBpZiAobV9mb2N1c0V2ZW50TGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVt
b3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkKTsKLSAgICAg
ICAgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX2FjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9l
dmVudF9saXN0ZW5lcihtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAg
ICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAg
aWYgKG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2ds
b2JhbF9ldmVudF9saXN0ZW5lcihtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOwotICAgICAg
ICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9wcm9w
ZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fcHJvcGVy
dHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX3Zpc2libGVEYXRhQ2hh
bmdlZExpc3RlbmVySWQpIHsKLSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIobV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV92aXNpYmxlRGF0
YUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9CisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25I
YW5kbGVyID0gMDsKIH0KIAogc3RhdGljIEF0a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtP
YmplY3QqIHBhcmVudCwgY29uc3QgY2hhciogaWQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEyNDJl
YzhmMjYzYzMxOTIyNGE0MjMxY2YwYTgzMjg5YmI4YTA3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcApAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyQXRrLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIkpTV3JhcHBlci5oIgorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXVFIgeworCit0eXBlZGVmIEhhc2hNYXA8QXRrT2JqZWN0KiwgQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqPiBOb3RpZmljYXRpb25IYW5kbGVyc01hcDsKKworc3Rh
dGljIGd1aW50IHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7CitzdGF0aWMgZ3VpbnQgZm9jdXNF
dmVudExpc3RlbmVySWQgPSAwOworc3RhdGljIGd1aW50IGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2Vk
TGlzdGVuZXJJZCA9IDA7CitzdGF0aWMgZ3VpbnQgY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9
IDA7CitzdGF0aWMgZ3VpbnQgcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CitzdGF0aWMg
Z3VpbnQgdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CitzdGF0aWMgTm90aWZpY2F0
aW9uSGFuZGxlcnNNYXAgbm90aWZpY2F0aW9uSGFuZGxlcnM7CitzdGF0aWMgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIqIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPSAwOworc3Rh
dGljIGJvb2wgbG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMgPSBGQUxTRTsKKworc3RhdGljIHZv
aWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBn
Y2hhciogc2lnbmFsTmFtZSwgY29uc3QgZ2NoYXIqIHNpZ25hbFZhbHVlKQoreworICAgIC8vIERv
IG5vdCBoYW5kbGUgc3RhdGUtY2hhbmdlOmRlZnVuY3Qgc2lnbmFscywgYXMgdGhlIEF0a09iamVj
dAorICAgIC8vIGFzc29jaWF0ZWQgdG8gdGhlbSB3aWxsIG5vdCBiZSB2YWxpZCBhdCB0aGlzIHBv
aW50IGFscmVhZHkuCisgICAgaWYgKCFzaWduYWxOYW1lIHx8ICFnX3N0cmNtcDAoc2lnbmFsTmFt
ZSwgInN0YXRlLWNoYW5nZTpkZWZ1bmN0IikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
YWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29uc3QgZ2NoYXIqIG9iamVjdE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1lKGFj
Y2Vzc2libGUpOworICAgIEF0a1JvbGUgb2JqZWN0Um9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUo
YWNjZXNzaWJsZSk7CisKKyAgICAvLyBUcnkgdG8gYWx3YXlzIHByb3ZpZGUgYSBuYW1lIHRvIGJl
IGxvZ2dlZCBmb3IgdGhlIG9iamVjdC4KKyAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5h
bWUgPT0gJ1wwJykKKyAgICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOworCisgICAgR093
blB0cjxnY2hhcj4gc2lnbmFsTmFtZUFuZFZhbHVlKHNpZ25hbFZhbHVlID8gZ19zdHJkdXBfcHJp
bnRmKCIlcyA9ICVzIiwgc2lnbmFsTmFtZSwgc2lnbmFsVmFsdWUpIDogZ19zdHJkdXAoc2lnbmFs
TmFtZSkpOworICAgIEdPd25QdHI8Z2NoYXI+IGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZyhnX3N0
cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVtaXR0ZWQgXCIlc1wiIC8gTmFtZTog
XCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRWYWx1ZS5nZXQoKSwgb2JqZWN0TmFt
ZSwgb2JqZWN0Um9sZSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRwdXRUZXh0
KFN0cmluZzo6ZnJvbVVURjgoYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nLmdldCgpKSk7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25I
aW50ICpzaWduYWxIaW50LCBndWludCBudW1QYXJhbVZhbHVlcywgY29uc3QgR1ZhbHVlICpwYXJh
bVZhbHVlcywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICAvLyBBdCBsZWFzdCB3ZSBzaG91bGQgcmVj
ZWl2ZSB0aGUgaW5zdGFuY2UgZW1pdHRpbmcgdGhlIHNpZ25hbC4KKyAgICBpZiAobnVtUGFyYW1W
YWx1ZXMgPCAxKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIEF0a09iamVjdCogYWNjZXNz
aWJsZSA9IEFUS19PQkpFQ1QoZ192YWx1ZV9nZXRfb2JqZWN0KCZwYXJhbVZhbHVlc1swXSkpOwor
ICAgIGlmICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICBHU2lnbmFsUXVlcnkgc2lnbmFsUXVlcnk7CisgICAgR093
blB0cjxnY2hhcj4gc2lnbmFsTmFtZTsKKyAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxWYWx1ZTsK
KyAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZTsKKworICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25h
bEhpbnQtPnNpZ25hbF9pZCwgJnNpZ25hbFF1ZXJ5KTsKKworICAgIGlmICghZ19zdHJjbXAwKHNp
Z25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAic3RhdGUtY2hhbmdlIikpIHsKKyAgICAgICAgc2lnbmFs
TmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9z
dHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJk
dXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOwor
ICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFd
KSwgImludmFsaWQtZW50cnkiKSkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1
ZXJ5LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkgeworICAgICAgICBzaWduYWxOYW1lLnNl
dChnX3N0cmR1cCgiZm9jdXMtZXZlbnQiKSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0
cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7
CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hp
bGRyZW4tY2hhbmdlZCIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJjaGls
ZHJlbi1jaGFuZ2VkIikpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIp
KQorICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5n
ZTolcyIsIGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1l
KSk7CisKKyAgICBpZiAobG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMpCisgICAgICAgIHByaW50
QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZh
bHVlLmdldCgpKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBXS0J1bmRs
ZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKKyAg
ICBKU0NvbnRleHRSZWYganNDb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KG1haW5GcmFtZSk7CisjZWxzZQorICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSAwOwor
I2VuZGlmCisgICAgaWYgKCFqc0NvbnRleHQpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAg
aWYgKG5vdGlmaWNhdGlvbk5hbWUubGVuZ3RoKCkpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGpzTm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhub3RpZmljYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAg
SlNWYWx1ZVJlZiBub3RpZmljYXRpb25OYW1lQXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhq
c0NvbnRleHQsIGpzTm90aWZpY2F0aW9uRXZlbnROYW1lLmdldCgpKTsKKyAgICAgICAgTm90aWZp
Y2F0aW9uSGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGVsZW1lbnROb3RpZmljYXRpb25IYW5kbGVyID0g
bm90aWZpY2F0aW9uSGFuZGxlcnMuZmluZChhY2Nlc3NpYmxlKTsKKyAgICAgICAgaWYgKGVsZW1l
bnROb3RpZmljYXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7Cisg
ICAgICAgICAgICAvLyBMaXN0ZW5lciBmb3Igb25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBhcmd1
bWVudCwgdGhlIG5vdGlmaWNhdGlvbiBuYW1lLgorICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNG
dW5jdGlvbihqc0NvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGVsZW1lbnROb3RpZmlj
YXRpb25IYW5kbGVyLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKSwgMCwg
MSwgJm5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudCwgMCk7CisgICAgICAgIH0gZWxzZSBpZiAoZ2xv
YmFsTm90aWZpY2F0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgLy8gQSBnbG9iYWwgbGlzdGVu
ZXIgZ2V0cyB0aGUgZWxlbWVudCBhbmQgdGhlIG5vdGlmaWNhdGlvbiBuYW1lIGFzIGFyZ3VtZW50
cy4KKyAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdOworICAgICAgICAgICAgYXJn
dW1lbnRzWzBdID0gdG9KUyhqc0NvbnRleHQsIFdURjo6Z2V0UHRyKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2libGUpKSk7CisgICAgICAgICAgICBhcmd1bWVudHNb
MV0gPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7CisgICAgICAgICAgICBKU09iamVjdENhbGxB
c0Z1bmN0aW9uKGpzQ29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZ2xvYmFsTm90aWZp
Y2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKSwgMCwgMiwgYXJn
dW1lbnRzLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCitB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIodm9pZCkKKyAgICA6IG1fcGxhdGZvcm1FbGVtZW50KDApCisgICAgLCBtX25vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXI6On5BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAg
cmVtb3ZlQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBkaXNjb25uZWN0
QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKK3sKKyAgICBsb2dnaW5nQWNj
ZXNzaWJpbGl0eUV2ZW50cyA9IFRSVUU7CisgICAgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFj
a3MoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90
aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbkZ1bmN0aW9u
Q2FsbGJhY2spCit7CisgICAgaWYgKCFub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSB7Cisg
ICAgICAgIHJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBu
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdL
QnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1l
R2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVm
IGpzQ29udGV4dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgSlNWYWx1ZVByb3RlY3QoanNDb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0
aW9uQ2FsbGJhY2spOworICAgIC8vIENoZWNrIGlmIHRoaXMgbm90aWZpY2F0aW9uIGhhbmRsZXIg
aXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGVsZW1lbnQuCisgICAgaWYgKG1fcGxhdGZvcm1FbGVt
ZW50KSB7CisgICAgICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFwOjppdGVyYXRvciBjdXJyZW50
Tm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobV9wbGF0Zm9y
bUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIg
IT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJy
ZW50Tm90aWZpY2F0aW9uSGFuZGxlci0+dmFsdWUtPnBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAg
ICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBjdXJyZW50Tm90aWZpY2F0aW9uSGFu
ZGxlci0+dmFsdWUtPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7CisgICAgICAgICAg
ICBub3RpZmljYXRpb25IYW5kbGVycy5yZW1vdmUoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIt
PnZhbHVlLT5wbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgbm90
aWZpY2F0aW9uSGFuZGxlcnMuYWRkKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpLCB0aGlzKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBnbG9iYWxOb3RpZmljYXRpb25IYW5k
bGVyLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyID0gdGhpczsKKyAgICB9CisKKyAgICBjb25uZWN0QWNjZXNzaWJpbGl0
eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
OjpyZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisjaWYgUExBVEZP
Uk0oR1RLKQorICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tC
dW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQg
PSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisg
ICAgSlNDb250ZXh0UmVmIGpzQ29udGV4dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIg
PT0gdGhpcykgeworICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAg
ICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IDA7CisgICAgfSBlbHNlIGlmIChtX3BsYXRm
b3JtRWxlbWVudC5nZXQoKSkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyc01hcDo6aXRl
cmF0b3IgcmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZp
bmQobV9wbGF0Zm9ybUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0
aW9uSGFuZGxlciAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAg
SlNWYWx1ZVVucHJvdGVjdChqc0NvbnRleHQsIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXItPnZh
bHVlLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZp
Y2F0aW9uSGFuZGxlcnMucmVtb3ZlKHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpj
b25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpCit7CisgICAgLy8gRW5zdXJlIG5vIGNhbGxi
YWNrcyBhcmUgY29ubmVjdGVkIGJlZm9yZS4KKyAgICBkaXNjb25uZWN0QWNjZXNzaWJpbGl0eUNh
bGxiYWNrcygpOworCisgICAgLy8gQWRkIGdsb2JhbCBsaXN0ZW5lcnMgZm9yIEF0a09iamVjdCdz
IHNpZ25hbHMuCisgICAgc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZl
bnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpzdGF0ZS1j
aGFuZ2UiKTsKKyAgICBmb2N1c0V2ZW50TGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Zm9jdXMtZXZl
bnQiKTsKKyAgICBhY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2ds
b2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0
OmFjdGl2ZS1kZXNjZW5kYW50LWNoYW5nZWQiKTsKKyAgICBjaGlsZHJlbkNoYW5nZWRMaXN0ZW5l
cklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVy
LCAiQVRLOkF0a09iamVjdDpjaGlsZHJlbi1jaGFuZ2VkIik7CisgICAgcHJvcGVydHlDaGFuZ2Vk
TGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6cHJvcGVydHktY2hhbmdlIik7CisgICAgdmlzaWJsZURh
dGFDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2Jq
ZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6dmlzaWJsZS1kYXRhLWNoYW5nZWQiKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFj
Y2Vzc2liaWxpdHlDYWxsYmFja3MoKQoreworICAgIC8vIE9ubHkgZGlzY29ubmVjdCBpZiBsb2dn
aW5nIGlzIG9mZiBhbmQgdGhlcmUgaXMgbm8gbm90aWZpY2F0aW9uIGhhbmRsZXIuCisgICAgaWYg
KGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzIHx8ICFub3RpZmljYXRpb25IYW5kbGVycy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF0a09iamVjdCBzaWduYWxzLgorICAg
IGlmIChzdGF0ZUNoYW5nZUxpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxf
ZXZlbnRfbGlzdGVuZXIoc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKTsKKyAgICAgICAgc3RhdGVDaGFu
Z2VMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKGZvY3VzRXZlbnRMaXN0ZW5lcklkKSB7
CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGZvY3VzRXZlbnRMaXN0
ZW5lcklkKTsKKyAgICAgICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBp
ZiAoYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1v
dmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJ
ZCk7CisgICAgICAgIGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CisgICAg
fQorICAgIGlmIChjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1v
dmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOworICAg
ICAgICBjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKHByb3Bl
cnR5Q2hhbmdlZExpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRf
bGlzdGVuZXIocHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAgICAgIHByb3BlcnR5Q2hh
bmdlZExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBpZiAodmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCkgeworICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcih2aXNp
YmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkKTsKKyAgICAgICAgdmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCA9IDA7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliYzlkOTJiMTU5MWMxN2JiM2Q2NmYxMzViODEzNzAzNTVkZmU3MTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaAorI2Rl
ZmluZSBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNs
dWRlIDxhdGsvYXRrb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdUUiB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKSk7CisgICAgfQorICAgIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKHZvaWQpOworICAgIH5BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlcigpOworCisgICAgdm9pZCBzZXRQbGF0Zm9ybUVsZW1lbnQoR1JlZlB0cjxB
dGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRmb3JtRWxlbWVudCA9IHBsYXRmb3Jt
RWxlbWVudDsgfQorICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBwbGF0Zm9ybUVsZW1lbnQodm9pZCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICB2b2lkIHNldE5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soSlNWYWx1ZVJlZik7CisgICAgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjazsgfQorICAgIHZvaWQgbG9nQWNjZXNzaWJpbGl0eUV2ZW50cyh2b2lk
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKHZv
aWQpOworICAgIHZvaWQgZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3Modm9pZCk7Cisg
ICAgdm9pZCByZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcih2b2lkKTsKKwor
ICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBtX3BsYXRmb3JtRWxlbWVudDsKKyAgICBKU1ZhbHVlUmVm
IG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA1MWZlNGJkZWJk
ZTk4ZjY1MTY4ODZmYmY3MmI5ZDQwNWIzZGE3ODMzLi5mYjYxNDJjZGEzMWQxZDZkMjlmMzJiNTNi
ZjVkZThlYjE5NzM1MDZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcApAQCAtNTY2LDYgKzU2NiwxMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZQogICAg
ICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVD
VChtX2VsZW1lbnQuZ2V0KCkpLCBhdGtBdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgLy8gSW4gY2FzZSBvZiAnYXJpYS1pbnZhbGlkJyB3aGVuIHRoZSBhdHRyaWJ1dGUgZW1wdHkg
b3IgaGFzICJmYWxzZSIgZm9yIEFUSworICAgIC8vIGFjY29yZGluZyB0byBodHRwOi8vd3d3Lncz
Lm9yZy9XQUkvUEYvYXJpYS1pbXBsZW1lbnRhdGlvbi8jbWFwcGluZyBhdHRyaWJ1dGUKKyAgICAv
LyBpcyBub3QgbWFwcGVkIGJ1dCBsYXlvdXQgdGVzdHMgd2lsbCBleHBlY3QgJ2ZhbHNlJy4KKyAg
ICBpZiAoYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpICYmIGF0a0F0dHJpYnV0ZU5hbWUgPT0gImFy
aWEtaW52YWxpZCIpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiZmFsc2UiKTsKKwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhh
dHRyaWJ1dGVWYWx1ZS51dGY4KCkuZGF0YSgpKTsKIH0KIApAQCAtMTEwNSwxMyArMTExMiwyNyBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihK
U1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIGlmICghZnVuY3Rpb25DYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gT25seSBvbmUgbm90aWZpY2F0aW9uIGxpc3RlbmVyIHBlciBlbGVtZW50LgorICAgIGlmICht
X25vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbm90
aWZpY2F0aW9uSGFuZGxlciA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjcmVh
dGUoKTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldFBsYXRmb3JtRWxlbWVudChwbGF0
Zm9ybVVJRWxlbWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldE5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soZnVuY3Rpb25DYWxsYmFjayk7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcigpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIC8vIFByb2dyYW1tZXJz
IHNob3VsZCBub3QgYmUgdHJ5aW5nIHRvIHJlbW92ZSBhIGxpc3RlbmVyIHRoYXQncyBhbHJlYWR5
IHJlbW92ZWQuCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CisKKyAgICBtX25v
dGlmaWNhdGlvbkhhbmRsZXIgPSAwOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDUwYWVmY2EwNzY1NWI3YzEzNWY4
YTg2NTc5MDU1NWJmMDcyZjc4YjAuLjlkMjZkODkzOThmYzJmNjcyN2M0YjM3Y2JkYTdjM2EzYjJm
ZTUxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAs
NiArNzAsNyBAQCBhZGRfZGVmaW5pdGlvbnMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9
L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKIGlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKICAg
ICBsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUwogICAg
ICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyQXRrLmNwcAorICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVD
VEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNw
cAogICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYktp
dFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDUzNDFjYjVlYTNiNjcxMjcy
N2UwNWM5OWY3ZWY0YThlOWRkYmNmY2MuLjhhYjE5N2VmMjkzOWFjNjk3OWU5OWRhODdkNzMzYjY5
OGM2MmEyZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wOS0xMSAgRGVuaXMgTm9taXlh
bWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIE1pc3NpbmcgV1RS
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGVkIHRoZSBleHBlY3RhdGlvbiBvZiBhcmlhLWludmFsaWQuaHRtbCB0ZXN0LCB3aGljaCB3
YXMgdGltaW5nIG91dAorICAgICAgICBiZWZvcmUgdGhpcyBmaXguCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgYXJpYS1pbnZhbGlkLmh0bWwg
YmVjYXVzZQorICAgICAgICBpdCBub3cgcGFzc2VzIHdpdGggdGhpcyBmaXguCisKIDIwMTMtMDkt
MTEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDog
QVhWYWx1ZS9BWE1lbnVJdGVtTWFya0NoYXIgbm90IGRlZmluZWQgZm9yIG1lbnVpdGVtcmFkaW8g
KHNob3VsZCBiZSBmYWxzZSAoMCkgd2l0aCBhcmlhLWNoZWNrZWQ9bWl4ZWQgfCB1bmRlZmluZWQp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
YjhjNTI1N2VlN2QzZmM3NzY2NGEzZjI2ZDgwNDViNTdmNGMwYmEyYy4uZTAzMTcyOWRmY2IyMGQy
OGY3YTc0YzFlOTU2MTk4NzQ2YjUzZmMxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDk5LDkgKzQ5OSw2IEBAIEJ1ZyhHVEspIGFuaW1h
dGlvbnMvY29tYm8tdHJhbnNmb3JtLXRyYW5zbGF0ZStzY2FsZS5odG1sIFsgRmFpbHVyZSBdCiBC
dWcoR1RLKSBhbmltYXRpb25zL3BsYXktc3RhdGUtc3VzcGVuZC5odG1sIFsgRmFpbHVyZSBdCiBC
dWcoR1RLKSBhbmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFuaW1hdGlvbi5odG1sIFsgRmFpbHVy
ZSBdCiAKLSMgW0dUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90
aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KLXdlYmtpdC5vcmcvYi8xMjA0MjEgYWNj
ZXNzaWJpbGl0eS9hcmlhLWludmFsaWQuaHRtbCBbIFRpbWVvdXQgXQotCiAjLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgVGVzdHMgZmFpbGluZwogIy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211337</attachid>
            <date>2013-09-11 11:53:51 -0700</date>
            <delta_ts>2013-09-11 16:54:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120421-20130911195404.patch</filename>
            <type>text/plain</type>
            <size>35550</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NTQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDIzMmZmNWY0MzJkYzg3OTM1YmU5NzhhODZjNzgxNDdm
Yjk3MmNmYy4uZmY2MjRmODBmM2EzMWViYTY3YTZjNjYwOTJkMzBmYTNhNTRjMmUxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEw
MCBAQAorMjAxMy0wOS0xMSAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtHVEtdIE1pc3NpbmcgV1RSIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFk
ZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnRlZCB0aGUgbm90aWZpY2F0aW9u
IGxpc3RlbmVyIGZvciBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGZvcgorICAgICAgICBXZWJLaXRU
ZXN0UnVubmVyLiBUaGUgc2lnbmFsIGlzIGdlbmVyYXRlZCBieQorICAgICAgICBBWE9iamVjdENh
Y2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oKSBhbmQgcmVjZWl2ZWQgYnkKKyAgICAgICAg
YXhPYmplY3RFdmVudExpc3RlbmVyKCkuIGF4T2JqZWN0RXZlbnRMaXN0ZW5lcigpIHdpbGwgdGhl
biBpbnZva2UKKyAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbigpIHdpdGggdGhlIHJlc3Bl
Y3RpdmUgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZQorICAgICAgICBub3RpZmljYXRpb24gaGFuZGxl
cnMgYXJlIHN0b3JlZCBpbiBIYXNoTWFwIGluCisgICAgICAgIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmNwcC4KKworICAgICAgICBNb3ZlZCBBVEsgc2lnbmFsIGhhbmRsaW5n
IChwcmludEFjY2Vzc2liaWxpdHlFdmVudCBhbmQKKyAgICAgICAgYXhPYmplY3RFdmVudExpc3Rl
bmVyKSB0byBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAuCisKKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OiBBZGRlZCBJbmplY3RlZEJ1bmRs
ZS9hdGsgdG8gdGhlCisgICAgICAgIGluY2x1ZGUgcGF0aC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0dOVW1ha2VmaWxlLmFtOgorICAgICAgICBBZGRlZCBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlckF0ay5jcHAvaC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcDogTW92ZWQKKyAgICAgICAgbGlz
dGVuZXIgSURzIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmg6IE1vdmVkCisgICAgICAgIGxpc3RlbmVyIElEcyB0byBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50Lmg6IEFkZGVkIGEKKyAgICAgICAgbm90
aWZpY2F0aW9uIGhhbmRsZXIgZm9yIEdUSysgYW5kIEVGTC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHA6
CisgICAgICAgIE1vdmVkIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50IGFuZCBheE9iamVjdEV2ZW50
TGlzdGVuZXIgdG8KKyAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
Y3BwLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJp
bGl0eUV2ZW50cyk6IE1vdmVkIGxpc3RlbmVyCisgICAgICAgIElEcyB0byBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKTogTW92ZWQgbGlzdGVuZXIKKyAgICAg
ICAgSURzIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5jcHA6CisgICAgICAgIEFkZGVkLgorICAgICAgICAoV1RSOjpw
cmludEFjY2Vzc2liaWxpdHlFdmVudCk6IFByaW50cyBhY2Nlc3NpYmlsaXR5IGV2ZW50cy4gVGhp
cworICAgICAgICBmdW5jdGlvbiB3YXMgbW92ZWQgZnJvbSBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ckF0ay5jcHAuCisgICAgICAgIChXVFI6OmF4T2JqZWN0RXZlbnRMaXN0ZW5lcik6IENhbGxiYWNr
IGZvciBzaWduYWxzLiBUaGlzIGZ1bmN0aW9uIHdhcworICAgICAgICBtb3ZlZCBmcm9tIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKToKKyAg
ICAgICAgSW5pdGlhbGl6ZSBlbGVtZW50IGFuZCBmdW5jdGlvbiBjYWxsYmFjay4KKyAgICAgICAg
KFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6On5BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcik6CisgICAgICAgIFJlbW92ZXMgaGFuZGxlciBmcm9tIEhhc2hNYXAg
YW5kIGRpc2Nvbm5lY3RzIGNhbGxiYWNrcyBpZiBuZWNlc3NhcnkuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKTog
U2V0cworICAgICAgICBsb2dnaW5nIG1vZGUgYW5kIGNvbm5lY3RzIGNhbGxiYWNrcy4KKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OnNldE5vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICBTZXRzIHRoZSBub3RpZmljYXRpb24gY2FsbGJh
Y2sgYW5kIGNvbm5lY3RzIGNhbGxiYWNrIHRvIHNpZ25hbHMuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpyZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlcik6CisgICAgICAgIFJlbW92ZXMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBm
cm9tIEhhc2hNYXAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyOjpjb25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcyk6CisgICAgICAgIENvbm5lY3RzIGF4
T2JqZWN0RXZlbnRMaXN0ZW5lciB0byBBVEsgc2lnbmFscy4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJh
Y2tzKToKKyAgICAgICAgRGlzY29ubmVjdHMgY2FsbGJhY2suCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXJBdGsuaDoKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyOjpjcmVhdGUpOiBDcmVhdGVzIGEgbmV3IGluc3RhbmNlCisgICAgICAg
IG9mIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0UGxhdGZvcm1FbGVtZW50KTogU2V0cyB0
aGUKKyAgICAgICAgZWxlbWVudC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXI6OnBsYXRmb3JtRWxlbWVudCk6IEdldHMgdGhlCisgICAgICAgIGVsZW1lbnQu
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrKToKKyAgICAgICAgR2V0cyB0aGUgbm90aWZpY2F0aW9uIGNh
bGxiYWNrLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZSk6IFJldHVybnMgZmFsc2UgaW4KKyAgICAg
ICAgY2FzZSBvZiBhcmlhLWludmFsaWQgYW5kIGVtcHR5IHZhbHVlLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcik6IENyZWF0ZXMK
KyAgICAgICAgbm90aWZpY2F0aW9uIGhhbmRsZXIsIHNldCB0aGUgcGxhdGZvcm0gZWxlbWVudCBh
bmQgdGhlIG5vdGlmaWNhdGlvbgorICAgICAgICBjYWxsYmFjay4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIpOiBEZWxldGVz
IHRoZQorICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlci4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICBBZGRlZCBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAuCisKKzIwMTMtMDktMTEgIERlbmlzIE5vbWl5YW1hICA8
ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4KKworICAgICAgICBbR1RLXSBNaXNzaW5nIFdUUiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lciBpbXBsZW1lbnRhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNDIx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJL
aXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
R05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAqIFdl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyQXRrLmNwcDoKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSk6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6
CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZh
bHVlKToKKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0
aW9uTGlzdGVuZXIpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1v
dmVOb3RpZmljYXRpb25MaXN0ZW5lcik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9QbGF0
Zm9ybUVmbC5jbWFrZToKKwogMjAxMy0wOS0xMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBWZWN0b3I6OmFwcGVuZCBmb3IgbW92ZS1v
bmx5IHR5cGVzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMu
dHh0IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAppbmRleCAwN2I2NDdi
ODBjMjQ4OGIxMjk0MjcxMGFiNTg4ZmMzZjIwZTIzNGRiLi5jYzZlZmQ1MzQ2OTZmMTI5MDE2ZmVm
YmViZmIxODEzODhkYTMzMDA0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NN
YWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQK
QEAgLTIzLDYgKzIzLDcgQEAgc2V0KFdlYktpdFRlc3RSdW5uZXJfTElCUkFSSUVTCiBzZXQoV2Vi
S2l0VGVzdFJ1bm5lcl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5F
Ul9ESVJ9CiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlCisgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL2F0awogICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncwogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZpbGUuYW0KaW5kZXggNzBiNGFhZWNhZmQxMTk1ZjBh
Y2JjMGU2ZmIxOGEzZjEwYjI1MmE4Zi4uN2I0NzI1ODZjMjIxM2IzZjA0NTdjNmVhYTExMmU2ZmQx
Mzg5MGU1MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5h
bQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5
NCw4IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9
IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY3Rp
dmF0ZUZvbnRzLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsu
Y3BwIFwKKwlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBcCiAJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwYWJsZS5o
IFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pTV3Jh
cHBlci5jcHAgXApAQCAtMTMyLDYgKzEzNCw3IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5q
ZWN0ZWRCdW5kbGVfbGFfQ1BQRkxBR1MgPSBcCiAJLWluY2x1ZGUgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9XZWJLaXRUZXN0UnVubmVyUHJlZml4LmggXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIgXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUgXAorCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrIFwKIAktSSQoc3JjZGlyKS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0JpbmRpbmdzIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2pz
IFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9JbmplY3RlZEJ1bmRsZSBcCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDIxMmU5OTExMTEzYzA3OWNhOTdi
YzcyMjgyN2JmYjg1ZDM0MTFkNTguLmRiOGFhYzIxOTA2NjI2NjAzYzA5YWEyYjIwNGY2MjY3Y2Qz
ZGZmZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBAIC00NCwxNCArNDQs
NiBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6Y3JlYXRlKCkKIH0KIAogQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKCkKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKLSAg
ICA6IG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKDApCi0gICAgLCBtX2ZvY3VzRXZlbnRMaXN0ZW5l
cklkKDApCi0gICAgLCBtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCgwKQotICAg
ICwgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKDApCi0gICAgLCBtX3Byb3BlcnR5Q2hhbmdl
ZExpc3RlbmVySWQoMCkKLSAgICAsIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCgwKQot
I2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAppbmRleCAyNDdkZTM0
MjA2MWVhYWJlZjM4MDdiMjVkMDI2Njc4NzI5OTJhYmIzLi45MGQ4ZmE3NjVlY2JlM2RjYTVhNGQ4
ZDNmMDkxNjIxMjljOTUwN2IyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCkBAIC0z
Myw2ICszMyw5IEBACiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNl
bmRpZgorI2lmIFBMQVRGT1JNKEdUSykKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlckF0ay5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewogICAgIApAQCAtNjks
MTIgKzcyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFU
Rk9STShFRkwpCi0gICAgdW5zaWduZWQgbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQ7Ci0gICAgdW5z
aWduZWQgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZDsKLSAgICB1bnNpZ25lZCBtX2FjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkTGlzdGVuZXJJZDsKLSAgICB1bnNpZ25lZCBtX2NoaWxkcmVuQ2hhbmdlZExp
c3RlbmVySWQ7Ci0gICAgdW5zaWduZWQgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkOwotICAg
IHVuc2lnbmVkIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZDsKKyAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxl
cjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRleCBiYjFiZGU1
ZDM1YWJmZTdjZjgzMTc3MzNmMjU2YmY0MTg2YTE1NTlhLi41ZjZlZGIyYTEzNDZmZWZiYTc4OTQ5
OTA4OTZjMWZhOWM5ODI0ZjU2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaApAQCAtNTAs
NiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogUGxhdGZvcm1VSUVsZW1lbnQ7
CiAKIHR5cGVkZWYgQ09NUHRyPElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVudDsKICNlbGlm
IFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkK
KyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgogI2luY2x1
ZGUgPGF0ay9hdGsuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CiB0eXBlZGVm
IEdSZWZQdHI8QXRrT2JqZWN0PiBQbGF0Zm9ybVVJRWxlbWVudDsKQEAgLTI2Miw2ICsyNjMsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJp
bGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0Q2hpbGRyZW5XaXRoUmFuZ2UoVmVjdG9y
PFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5zaWduZWQgbG9jYXRpb24sIHVu
c2lnbmVkIGxlbmd0aCk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQorICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9ub3Rp
ZmljYXRpb25IYW5kbGVyOworI2VuZGlmCiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKaW5kZXggM2I1OGMw
ZGEwMzM4YjQ1NjY1ZWE5NTdiNGM2YmY5ZDhmMGEyNDA0NC4uMDQ2NjJiNzI2OWVlYmZjNzY3MmE0
YzU2OTZkZTUzMjUxMTQ4MGQ5YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcApAQCAtMzksNjMgKzM5LDYgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0
YXRpYyB2b2lkIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KEF0a09iamVjdCogYWNjZXNzaWJsZSwg
Y29uc3QgZ2NoYXIqIHNpZ25hbE5hbWUsIGNvbnN0IGdjaGFyKiBzaWduYWxWYWx1ZSkKLXsKLSAg
ICAvLyBEbyBub3QgaGFuZGxlIHN0YXRlLWNoYW5nZTpkZWZ1bmN0IHNpZ25hbHMsIGFzIHRoZSBB
dGtPYmplY3QKLSAgICAvLyBhc3NvY2lhdGVkIHRvIHRoZW0gd2lsbCBub3QgYmUgdmFsaWQgYXQg
dGhpcyBwb2ludCBhbHJlYWR5LgotICAgIGlmICghc2lnbmFsTmFtZSB8fCAhZ19zdHJjbXAwKHNp
Z25hbE5hbWUsICJzdGF0ZS1jaGFuZ2U6ZGVmdW5jdCIpKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFyKiBvYmplY3ROYW1lID0gYXRrX29iamVjdF9nZXRf
bmFtZShhY2Nlc3NpYmxlKTsKLSAgICBBdGtSb2xlIG9iamVjdFJvbGUgPSBhdGtfb2JqZWN0X2dl
dF9yb2xlKGFjY2Vzc2libGUpOwotCi0gICAgLy8gVHJ5IHRvIGFsd2F5cyBwcm92aWRlIGEgbmFt
ZSB0byBiZSBsb2dnZWQgZm9yIHRoZSBvYmplY3QuCi0gICAgaWYgKCFvYmplY3ROYW1lIHx8ICpv
YmplY3ROYW1lID09ICdcMCcpCi0gICAgICAgIG9iamVjdE5hbWUgPSAiKE5vIG5hbWUpIjsKLQot
ICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3Ry
ZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVw
KHNpZ25hbE5hbWUpKTsKLSAgICBHT3duUHRyPGdjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJp
bmcoZ19zdHJkdXBfcHJpbnRmKCJBY2Nlc3NpYmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAv
IE5hbWU6IFwiJXNcIiAvIFJvbGU6ICVkXG4iLCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9i
amVjdE5hbWUsIG9iamVjdFJvbGUpKTsKLSAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0
cHV0VGV4dChTdHJpbmc6OmZyb21VVEY4KGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZy5nZXQoKSkp
OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gYXhPYmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZv
Y2F0aW9uSGludCAqc2lnbmFsSGludCwgZ3VpbnQgbnVtUGFyYW1WYWx1ZXMsIGNvbnN0IEdWYWx1
ZSAqcGFyYW1WYWx1ZXMsIGdwb2ludGVyIGRhdGEpCi17Ci0gICAgLy8gQXQgbGVhc3Qgd2Ugc2hv
dWxkIHJlY2VpdmUgdGhlIGluc3RhbmNlIGVtaXR0aW5nIHRoZSBzaWduYWwuCi0gICAgaWYgKG51
bVBhcmFtVmFsdWVzIDwgMSkKLSAgICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICBBdGtPYmplY3Qq
IGFjY2Vzc2libGUgPSBBVEtfT0JKRUNUKGdfdmFsdWVfZ2V0X29iamVjdCgmcGFyYW1WYWx1ZXNb
MF0pKTsKLSAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkp
Ci0gICAgICAgIHJldHVybiBUUlVFOwotCi0gICAgR1NpZ25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5Owot
ICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWU7Ci0gICAgR093blB0cjxnY2hhcj4gc2lnbmFs
VmFsdWU7Ci0KLSAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWdu
YWxRdWVyeSk7Ci0KLSAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwg
InN0YXRlLWNoYW5nZSIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50
Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkp
KTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVl
X2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNt
cDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJmb2N1cy1ldmVudCIpKSB7Ci0gICAgICAgIHNp
Z25hbE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKLSAgICAgICAgc2lnbmFsVmFs
dWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZh
bHVlc1sxXSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFs
X25hbWUsICJjaGlsZHJlbi1jaGFuZ2VkIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19z
dHJkdXAoImNoaWxkcmVuLWNoYW5nZWQiKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0
cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0g
ICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAicHJvcGVy
dHktY2hhbmdlIikpCi0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJv
cGVydHktY2hhbmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkp
OwotICAgIGVsc2UKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoc2lnbmFsUXVlcnku
c2lnbmFsX25hbWUpKTsKLQotICAgIHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUs
IHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZhbHVlLmdldCgpKTsKLQotICAgIHJldHVybiBUUlVF
OwotfQotCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZl
bnRzKCkKIHsKICAgICAvLyBFbnN1cmUgbm8gY2FsbGJhY2tzIGFyZSBjb25uZWN0ZWQgYmVmb3Jl
LgpAQCAtMTA1LDEzICs0OCw5IEBAIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0Fj
Y2Vzc2liaWxpdHlFdmVudHMoKQogICAgIC8vIHRoZSByb290IGFjY2Vzc2libGUgb2JqZWN0LCB3
aGljaCB3aWxsIGNyZWF0ZSB0aGUgZnVsbCBoaWVyYXJjaHkuCiAgICAgcm9vdEVsZW1lbnQoKTsK
IAotICAgIC8vIEFkZCBnbG9iYWwgbGlzdGVuZXJzIGZvciBBdGtPYmplY3QncyBzaWduYWxzLgot
ICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpzdGF0ZS1jaGFuZ2UiKTsK
LSAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpmb2N1cy1ldmVudCIpOwot
ICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxf
ZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDphY3Rp
dmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7Ci0gICAgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklk
ID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAi
QVRLOkF0a09iamVjdDpjaGlsZHJlbi1jaGFuZ2VkIik7Ci0gICAgbV9wcm9wZXJ0eUNoYW5nZWRM
aXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExp
c3RlbmVyLCAiQVRLOkF0a09iamVjdDpwcm9wZXJ0eS1jaGFuZ2UiKTsKLSAgICBtX3Zpc2libGVE
YXRhQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9i
amVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnZpc2libGUtZGF0YS1jaGFuZ2VkIik7
CisgICAgaWYgKG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKKyAgICAgICAgbV9nbG9iYWxO
b3RpZmljYXRpb25IYW5kbGVyID0gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKTsKKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPmxvZ0FjY2Vzc2li
aWxpdHlFdmVudHMoKTsKIAogICAgIC8vIEVuc3VyZSB0aGUgQXRrIGludGVyZmFjZSB0eXBlcyBh
cmUgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlCiAgICAgLy8gdGhlIEF0a0RvY3VtZW50IHNpZ25hbCBo
YW5kbGVycyBiZWxvdyB3b24ndCBnZXQgcmVnaXN0ZXJlZC4KQEAgLTEyMywzMSArNjIsNyBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKIAog
dm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7
Ci0gICAgLy8gQXRrT2JqZWN0IHNpZ25hbHMuCi0gICAgaWYgKG1fc3RhdGVDaGFuZ2VMaXN0ZW5l
cklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fc3RhdGVD
aGFuZ2VMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSAwOwot
ICAgIH0KLSAgICBpZiAobV9mb2N1c0V2ZW50TGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVt
b3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkKTsKLSAgICAg
ICAgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX2FjdGl2ZURl
c2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9l
dmVudF9saXN0ZW5lcihtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAg
ICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAg
aWYgKG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2ds
b2JhbF9ldmVudF9saXN0ZW5lcihtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOwotICAgICAg
ICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9wcm9w
ZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fcHJvcGVy
dHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX3Zpc2libGVEYXRhQ2hh
bmdlZExpc3RlbmVySWQpIHsKLSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIobV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV92aXNpYmxlRGF0
YUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9CisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25I
YW5kbGVyID0gMDsKIH0KIAogc3RhdGljIEF0a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtP
YmplY3QqIHBhcmVudCwgY29uc3QgY2hhciogaWQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWEyNDJl
YzhmMjYzYzMxOTIyNGE0MjMxY2YwYTgzMjg5YmI4YTA3MgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcApAQCAtMCwwICsxLDI2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyQXRrLmgiCisKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUgIkpTV3JhcHBlci5oIgorCisjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXVFIgeworCit0eXBlZGVmIEhhc2hNYXA8QXRrT2JqZWN0KiwgQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqPiBOb3RpZmljYXRpb25IYW5kbGVyc01hcDsKKworc3Rh
dGljIGd1aW50IHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7CitzdGF0aWMgZ3VpbnQgZm9jdXNF
dmVudExpc3RlbmVySWQgPSAwOworc3RhdGljIGd1aW50IGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2Vk
TGlzdGVuZXJJZCA9IDA7CitzdGF0aWMgZ3VpbnQgY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9
IDA7CitzdGF0aWMgZ3VpbnQgcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CitzdGF0aWMg
Z3VpbnQgdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CitzdGF0aWMgTm90aWZpY2F0
aW9uSGFuZGxlcnNNYXAgbm90aWZpY2F0aW9uSGFuZGxlcnM7CitzdGF0aWMgQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXIqIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPSAwOworc3Rh
dGljIGJvb2wgbG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMgPSBGQUxTRTsKKworc3RhdGljIHZv
aWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBn
Y2hhciogc2lnbmFsTmFtZSwgY29uc3QgZ2NoYXIqIHNpZ25hbFZhbHVlKQoreworICAgIC8vIERv
IG5vdCBoYW5kbGUgc3RhdGUtY2hhbmdlOmRlZnVuY3Qgc2lnbmFscywgYXMgdGhlIEF0a09iamVj
dAorICAgIC8vIGFzc29jaWF0ZWQgdG8gdGhlbSB3aWxsIG5vdCBiZSB2YWxpZCBhdCB0aGlzIHBv
aW50IGFscmVhZHkuCisgICAgaWYgKCFzaWduYWxOYW1lIHx8ICFnX3N0cmNtcDAoc2lnbmFsTmFt
ZSwgInN0YXRlLWNoYW5nZTpkZWZ1bmN0IikpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
YWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgY29uc3QgZ2NoYXIqIG9iamVjdE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1lKGFj
Y2Vzc2libGUpOworICAgIEF0a1JvbGUgb2JqZWN0Um9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUo
YWNjZXNzaWJsZSk7CisKKyAgICAvLyBUcnkgdG8gYWx3YXlzIHByb3ZpZGUgYSBuYW1lIHRvIGJl
IGxvZ2dlZCBmb3IgdGhlIG9iamVjdC4KKyAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5h
bWUgPT0gJ1wwJykKKyAgICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOworCisgICAgR093
blB0cjxnY2hhcj4gc2lnbmFsTmFtZUFuZFZhbHVlKHNpZ25hbFZhbHVlID8gZ19zdHJkdXBfcHJp
bnRmKCIlcyA9ICVzIiwgc2lnbmFsTmFtZSwgc2lnbmFsVmFsdWUpIDogZ19zdHJkdXAoc2lnbmFs
TmFtZSkpOworICAgIEdPd25QdHI8Z2NoYXI+IGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZyhnX3N0
cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVtaXR0ZWQgXCIlc1wiIC8gTmFtZTog
XCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRWYWx1ZS5nZXQoKSwgb2JqZWN0TmFt
ZSwgb2JqZWN0Um9sZSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRwdXRUZXh0
KFN0cmluZzo6ZnJvbVVURjgoYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nLmdldCgpKSk7Cit9CisK
K3N0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25I
aW50ICpzaWduYWxIaW50LCBndWludCBudW1QYXJhbVZhbHVlcywgY29uc3QgR1ZhbHVlICpwYXJh
bVZhbHVlcywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICAvLyBBdCBsZWFzdCB3ZSBzaG91bGQgcmVj
ZWl2ZSB0aGUgaW5zdGFuY2UgZW1pdHRpbmcgdGhlIHNpZ25hbC4KKyAgICBpZiAobnVtUGFyYW1W
YWx1ZXMgPCAxKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgIEF0a09iamVjdCogYWNjZXNz
aWJsZSA9IEFUS19PQkpFQ1QoZ192YWx1ZV9nZXRfb2JqZWN0KCZwYXJhbVZhbHVlc1swXSkpOwor
ICAgIGlmICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAg
ICAgcmV0dXJuIFRSVUU7CisKKyAgICBHU2lnbmFsUXVlcnkgc2lnbmFsUXVlcnk7CisgICAgR093
blB0cjxnY2hhcj4gc2lnbmFsTmFtZTsKKyAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxWYWx1ZTsK
KyAgICBTdHJpbmcgbm90aWZpY2F0aW9uTmFtZTsKKworICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25h
bEhpbnQtPnNpZ25hbF9pZCwgJnNpZ25hbFF1ZXJ5KTsKKworICAgIGlmICghZ19zdHJjbXAwKHNp
Z25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAic3RhdGUtY2hhbmdlIikpIHsKKyAgICAgICAgc2lnbmFs
TmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9z
dHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJk
dXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOwor
ICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFd
KSwgImludmFsaWQtZW50cnkiKSkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhJ
bnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1
ZXJ5LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkgeworICAgICAgICBzaWduYWxOYW1lLnNl
dChnX3N0cmR1cCgiZm9jdXMtZXZlbnQiKSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0
cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7
CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hp
bGRyZW4tY2hhbmdlZCIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJjaGls
ZHJlbi1jaGFuZ2VkIikpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRm
KCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgIH0gZWxzZSBp
ZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIp
KQorICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5n
ZTolcyIsIGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKKyAgICBlbHNl
CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1l
KSk7CisKKyAgICBpZiAobG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMpCisgICAgICAgIHByaW50
QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZh
bHVlLmdldCgpKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBXS0J1bmRs
ZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKKyAg
ICBKU0NvbnRleHRSZWYganNDb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KG1haW5GcmFtZSk7CisjZWxzZQorICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSAwOwor
I2VuZGlmCisgICAgaWYgKCFqc0NvbnRleHQpCisgICAgICAgIHJldHVybiBUUlVFOworCisgICAg
aWYgKG5vdGlmaWNhdGlvbk5hbWUubGVuZ3RoKCkpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNT
dHJpbmdSZWY+IGpzTm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhub3RpZmljYXRpb25OYW1lLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICAgICAg
SlNWYWx1ZVJlZiBub3RpZmljYXRpb25OYW1lQXJndW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhq
c0NvbnRleHQsIGpzTm90aWZpY2F0aW9uRXZlbnROYW1lLmdldCgpKTsKKyAgICAgICAgTm90aWZp
Y2F0aW9uSGFuZGxlcnNNYXA6Oml0ZXJhdG9yIGVsZW1lbnROb3RpZmljYXRpb25IYW5kbGVyID0g
bm90aWZpY2F0aW9uSGFuZGxlcnMuZmluZChhY2Nlc3NpYmxlKTsKKyAgICAgICAgaWYgKGVsZW1l
bnROb3RpZmljYXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7Cisg
ICAgICAgICAgICAvLyBMaXN0ZW5lciBmb3Igb25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBhcmd1
bWVudCwgdGhlIG5vdGlmaWNhdGlvbiBuYW1lLgorICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNG
dW5jdGlvbihqc0NvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGVsZW1lbnROb3RpZmlj
YXRpb25IYW5kbGVyLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKSwgMCwg
MSwgJm5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudCwgMCk7CisgICAgICAgIH0gZWxzZSBpZiAoZ2xv
YmFsTm90aWZpY2F0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgLy8gQSBnbG9iYWwgbGlzdGVu
ZXIgZ2V0cyB0aGUgZWxlbWVudCBhbmQgdGhlIG5vdGlmaWNhdGlvbiBuYW1lIGFzIGFyZ3VtZW50
cy4KKyAgICAgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdOworICAgICAgICAgICAgYXJn
dW1lbnRzWzBdID0gdG9KUyhqc0NvbnRleHQsIFdURjo6Z2V0UHRyKFdUUjo6QWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y3JlYXRlKGFjY2Vzc2libGUpKSk7CisgICAgICAgICAgICBhcmd1bWVudHNb
MV0gPSBub3RpZmljYXRpb25OYW1lQXJndW1lbnQ7CisgICAgICAgICAgICBKU09iamVjdENhbGxB
c0Z1bmN0aW9uKGpzQ29udGV4dCwgY29uc3RfY2FzdDxKU09iamVjdFJlZj4oZ2xvYmFsTm90aWZp
Y2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKSwgMCwgMiwgYXJn
dW1lbnRzLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBUUlVFOworfQorCitB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIodm9pZCkKKyAgICA6IG1fcGxhdGZvcm1FbGVtZW50KDApCisgICAgLCBtX25vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXI6On5BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAg
cmVtb3ZlQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBkaXNjb25uZWN0
QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKK3sKKyAgICBsb2dnaW5nQWNj
ZXNzaWJpbGl0eUV2ZW50cyA9IFRSVUU7CisgICAgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFj
a3MoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90
aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbkZ1bmN0aW9u
Q2FsbGJhY2spCit7CisgICAgaWYgKCFub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSB7Cisg
ICAgICAgIHJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBu
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdL
QnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1l
R2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVm
IGpzQ29udGV4dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgSlNWYWx1ZVByb3RlY3QoanNDb250ZXh0LCBtX25vdGlmaWNhdGlvbkZ1bmN0
aW9uQ2FsbGJhY2spOworICAgIC8vIENoZWNrIGlmIHRoaXMgbm90aWZpY2F0aW9uIGhhbmRsZXIg
aXMgcmVsYXRlZCB0byBhIHNwZWNpZmljIGVsZW1lbnQuCisgICAgaWYgKG1fcGxhdGZvcm1FbGVt
ZW50KSB7CisgICAgICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFwOjppdGVyYXRvciBjdXJyZW50
Tm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobV9wbGF0Zm9y
bUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIg
IT0gbm90aWZpY2F0aW9uSGFuZGxlcnMuZW5kKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChjdXJy
ZW50Tm90aWZpY2F0aW9uSGFuZGxlci0+dmFsdWUtPnBsYXRmb3JtRWxlbWVudCgpKTsKKyAgICAg
ICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBjdXJyZW50Tm90aWZpY2F0aW9uSGFu
ZGxlci0+dmFsdWUtPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSk7CisgICAgICAgICAg
ICBub3RpZmljYXRpb25IYW5kbGVycy5yZW1vdmUoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIt
PnZhbHVlLT5wbGF0Zm9ybUVsZW1lbnQoKS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgbm90
aWZpY2F0aW9uSGFuZGxlcnMuYWRkKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpLCB0aGlzKTsKKyAg
ICB9IGVsc2UgeworICAgICAgICBpZiAoZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCBnbG9iYWxOb3RpZmljYXRpb25IYW5k
bGVyLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICBnbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyID0gdGhpczsKKyAgICB9CisKKyAgICBjb25uZWN0QWNjZXNzaWJpbGl0
eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
OjpyZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisjaWYgUExBVEZP
Uk0oR1RLKQorICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tC
dW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQg
PSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisg
ICAgSlNDb250ZXh0UmVmIGpzQ29udGV4dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIg
PT0gdGhpcykgeworICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFsTm90
aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAg
ICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IDA7CisgICAgfSBlbHNlIGlmIChtX3BsYXRm
b3JtRWxlbWVudC5nZXQoKSkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyc01hcDo6aXRl
cmF0b3IgcmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZp
bmQobV9wbGF0Zm9ybUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0
aW9uSGFuZGxlciAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAg
SlNWYWx1ZVVucHJvdGVjdChqc0NvbnRleHQsIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXItPnZh
bHVlLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZp
Y2F0aW9uSGFuZGxlcnMucmVtb3ZlKHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgICAg
ICB9CisgICAgfQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpj
b25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpCit7CisgICAgLy8gRW5zdXJlIG5vIGNhbGxi
YWNrcyBhcmUgY29ubmVjdGVkIGJlZm9yZS4KKyAgICBkaXNjb25uZWN0QWNjZXNzaWJpbGl0eUNh
bGxiYWNrcygpOworCisgICAgLy8gQWRkIGdsb2JhbCBsaXN0ZW5lcnMgZm9yIEF0a09iamVjdCdz
IHNpZ25hbHMuCisgICAgc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZl
bnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpzdGF0ZS1j
aGFuZ2UiKTsKKyAgICBmb2N1c0V2ZW50TGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Zm9jdXMtZXZl
bnQiKTsKKyAgICBhY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2ds
b2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0
OmFjdGl2ZS1kZXNjZW5kYW50LWNoYW5nZWQiKTsKKyAgICBjaGlsZHJlbkNoYW5nZWRMaXN0ZW5l
cklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVy
LCAiQVRLOkF0a09iamVjdDpjaGlsZHJlbi1jaGFuZ2VkIik7CisgICAgcHJvcGVydHlDaGFuZ2Vk
TGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6cHJvcGVydHktY2hhbmdlIik7CisgICAgdmlzaWJsZURh
dGFDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2Jq
ZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6dmlzaWJsZS1kYXRhLWNoYW5nZWQiKTsK
K30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFj
Y2Vzc2liaWxpdHlDYWxsYmFja3MoKQoreworICAgIC8vIE9ubHkgZGlzY29ubmVjdCBpZiBsb2dn
aW5nIGlzIG9mZiBhbmQgdGhlcmUgaXMgbm8gbm90aWZpY2F0aW9uIGhhbmRsZXIuCisgICAgaWYg
KGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzIHx8ICFub3RpZmljYXRpb25IYW5kbGVycy5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEF0a09iamVjdCBzaWduYWxzLgorICAg
IGlmIChzdGF0ZUNoYW5nZUxpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxf
ZXZlbnRfbGlzdGVuZXIoc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKTsKKyAgICAgICAgc3RhdGVDaGFu
Z2VMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKGZvY3VzRXZlbnRMaXN0ZW5lcklkKSB7
CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGZvY3VzRXZlbnRMaXN0
ZW5lcklkKTsKKyAgICAgICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBp
ZiAoYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1v
dmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJ
ZCk7CisgICAgICAgIGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CisgICAg
fQorICAgIGlmIChjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1v
dmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOworICAg
ICAgICBjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKHByb3Bl
cnR5Q2hhbmdlZExpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRf
bGlzdGVuZXIocHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAgICAgIHByb3BlcnR5Q2hh
bmdlZExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBpZiAodmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCkgeworICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcih2aXNp
YmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkKTsKKyAgICAgICAgdmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCA9IDA7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjliYzlkOTJiMTU5MWMxN2JiM2Q2NmYxMzViODEzNzAzNTVkZmU3MTMKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpZm5kZWYgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaAorI2Rl
ZmluZSBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCisKKyNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2luY2x1ZGUgPGF0ay9hdGsuaD4KKyNpbmNs
dWRlIDxhdGsvYXRrb2JqZWN0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdUUiB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyIDogcHVibGljIFJlZkNvdW50ZWQ8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlcj4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKSk7CisgICAgfQorICAgIEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKHZvaWQpOworICAgIH5BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlcigpOworCisgICAgdm9pZCBzZXRQbGF0Zm9ybUVsZW1lbnQoR1JlZlB0cjxB
dGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRmb3JtRWxlbWVudCA9IHBsYXRmb3Jt
RWxlbWVudDsgfQorICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBwbGF0Zm9ybUVsZW1lbnQodm9pZCkg
Y29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICB2b2lkIHNldE5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soSlNWYWx1ZVJlZik7CisgICAgSlNWYWx1ZVJlZiBub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrKHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjazsgfQorICAgIHZvaWQgbG9nQWNjZXNzaWJpbGl0eUV2ZW50cyh2b2lk
KTsKKworcHJpdmF0ZToKKyAgICB2b2lkIGNvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKHZv
aWQpOworICAgIHZvaWQgZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3Modm9pZCk7Cisg
ICAgdm9pZCByZW1vdmVBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcih2b2lkKTsKKwor
ICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBtX3BsYXRmb3JtRWxlbWVudDsKKyAgICBKU1ZhbHVlUmVm
IG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjazsKK307CisKK30gLy8gbmFtZXNwYWNlIFdU
UgorCisjZW5kaWYgLy8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGtfaApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCA0YTRlZTA3Yzk5
Nzk2ZWExYTVkY2QxYTc4OGVlZWQ2ZWQ4MzA1YTFmLi5jNzViMmE0NWRjY2QzODVjNDkzZTY3NzJi
NWZjODA0OTQ5MGRhYzZhIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
QXRrLmNwcApAQCAtNTY4LDYgKzU2OCwxMyBAQCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6c3RyaW5nQXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZQogICAg
ICAgICByZXR1cm4gSlNTdHJpbmdDcmVhdGVXaXRoQ2hhcmFjdGVycygwLCAwKTsKIAogICAgIFN0
cmluZyBhdHRyaWJ1dGVWYWx1ZSA9IGdldEF0dHJpYnV0ZVNldFZhbHVlRm9ySWQoQVRLX09CSkVD
VChtX2VsZW1lbnQuZ2V0KCkpLCBhdGtBdHRyaWJ1dGVOYW1lLnV0ZjgoKS5kYXRhKCkpOworCisg
ICAgLy8gSW4gY2FzZSBvZiAnYXJpYS1pbnZhbGlkJyB3aGVuIHRoZSBhdHRyaWJ1dGUgZW1wdHkg
b3IgaGFzICJmYWxzZSIgZm9yIEFUSworICAgIC8vIGFjY29yZGluZyB0byBodHRwOi8vd3d3Lncz
Lm9yZy9XQUkvUEYvYXJpYS1pbXBsZW1lbnRhdGlvbi8jbWFwcGluZyBhdHRyaWJ1dGUKKyAgICAv
LyBpcyBub3QgbWFwcGVkIGJ1dCBsYXlvdXQgdGVzdHMgd2lsbCBleHBlY3QgJ2ZhbHNlJy4KKyAg
ICBpZiAoYXR0cmlidXRlVmFsdWUuaXNFbXB0eSgpICYmIGF0a0F0dHJpYnV0ZU5hbWUgPT0gImFy
aWEtaW52YWxpZCIpCisgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmlu
ZygiZmFsc2UiKTsKKwogICAgIHJldHVybiBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhh
dHRyaWJ1dGVWYWx1ZS51dGY4KCkuZGF0YSgpKTsKIH0KIApAQCAtMTEwNywxMyArMTExNCwyNyBA
QCBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dXJsKCkK
IAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lcihK
U1ZhbHVlUmVmIGZ1bmN0aW9uQ2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAor
ICAgIGlmICghZnVuY3Rpb25DYWxsYmFjaykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gT25seSBvbmUgbm90aWZpY2F0aW9uIGxpc3RlbmVyIHBlciBlbGVtZW50LgorICAgIGlmICht
X25vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fbm90
aWZpY2F0aW9uSGFuZGxlciA9IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjcmVh
dGUoKTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldFBsYXRmb3JtRWxlbWVudChwbGF0
Zm9ybVVJRWxlbWVudCgpKTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXItPnNldE5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soZnVuY3Rpb25DYWxsYmFjayk7CisKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25M
aXN0ZW5lcigpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIC8vIFByb2dyYW1tZXJz
IHNob3VsZCBub3QgYmUgdHJ5aW5nIHRvIHJlbW92ZSBhIGxpc3RlbmVyIHRoYXQncyBhbHJlYWR5
IHJlbW92ZWQuCisgICAgQVNTRVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CisKKyAgICBtX25v
dGlmaWNhdGlvbkhhbmRsZXIgPSAwOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDUwYWVmY2EwNzY1NWI3YzEzNWY4
YTg2NTc5MDU1NWJmMDcyZjc4YjAuLjlkMjZkODkzOThmYzJmNjcyN2M0YjM3Y2JkYTdjM2EzYjJm
ZTUxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21h
a2UKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAs
NiArNzAsNyBAQCBhZGRfZGVmaW5pdGlvbnMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9
L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIKIGlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKICAg
ICBsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUwogICAg
ICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyQXRrLmNwcAorICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVD
VEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNw
cAogICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYktp
dFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRhYTVhOTNkYzA2MTk5YWZh
NjZkZWVjMjQ3OTg4NmRmNzA0MGZhYzUuLjdjMzIwNTFlNzUzZWFmYTdmMzM5MzQzOTQ1YTBlZjE2
MDdjNGIzZjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMy0wOS0xMSAgRGVuaXMgTm9taXlh
bWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtHVEtdIE1pc3NpbmcgV1RS
IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjA0MjEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGVkIHRoZSBleHBlY3RhdGlvbiBvZiBhcmlhLWludmFsaWQuaHRtbCB0ZXN0LCB3aGljaCB3
YXMgdGltaW5nIG91dAorICAgICAgICBiZWZvcmUgdGhpcyBmaXguCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnM6IFJlbW92ZWQgYXJpYS1pbnZhbGlkLmh0bWwg
YmVjYXVzZQorICAgICAgICBpdCBub3cgcGFzc2VzIHdpdGggdGhpcyBmaXguCisKIDIwMTMtMDkt
MTEgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBBWDog
V2ViS2l0IGV4cG9zZXMgQVhUaXRsZVVJRWxlbWVudCBpbmNvcnJlY3RseSBvbiBjaGVja2JveGVz
IGFuZCByYWRpbyBidXR0b25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGst
d2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RF
eHBlY3RhdGlvbnMKaW5kZXggYjhjNTI1N2VlN2QzZmM3NzY2NGEzZjI2ZDgwNDViNTdmNGMwYmEy
Yy4uZTAzMTcyOWRmY2IyMGQyOGY3YTc0YzFlOTU2MTk4NzQ2YjUzZmMxZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDk5LDkgKzQ5OSw2
IEBAIEJ1ZyhHVEspIGFuaW1hdGlvbnMvY29tYm8tdHJhbnNmb3JtLXRyYW5zbGF0ZStzY2FsZS5o
dG1sIFsgRmFpbHVyZSBdCiBCdWcoR1RLKSBhbmltYXRpb25zL3BsYXktc3RhdGUtc3VzcGVuZC5o
dG1sIFsgRmFpbHVyZSBdCiBCdWcoR1RLKSBhbmltYXRpb25zL3N1c3BlbmQtcmVzdW1lLWFuaW1h
dGlvbi5odG1sIFsgRmFpbHVyZSBdCiAKLSMgW0dUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KLXdlYmtp
dC5vcmcvYi8xMjA0MjEgYWNjZXNzaWJpbGl0eS9hcmlhLWludmFsaWQuaHRtbCBbIFRpbWVvdXQg
XQotCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogIyBFbmQgb2YgVGVzdHMgZmFp
bGluZwogIy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211366</attachid>
            <date>2013-09-11 16:54:43 -0700</date>
            <delta_ts>2013-09-12 07:05:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120421-20130912005442.patch</filename>
            <type>text/plain</type>
            <size>34586</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NTczCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzI4ZjRiMWFkOGM1ZDE5ZDBmOWFlZTdiYjEyNzllMDk5
OTdmY2YwYy4uNGUyMGYzMGMxNDQ3Y2I1OGM1Y2I5ZmM4ZWExMzM1ZTUxNGM1NjQ4NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEzLTA5LTExICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0dUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBub3RpZmljYXRpb24g
bGlzdGVuZXIgZm9yIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9yCisgICAgICAgIFdlYktpdFRl
c3RSdW5uZXIuIFRoZSBzaWduYWwgaXMgZ2VuZXJhdGVkIGJ5CisgICAgICAgIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbigpIGFuZCByZWNlaXZlZCBieQorICAgICAgICBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoKS4gYXhPYmplY3RFdmVudExpc3RlbmVyKCkgd2lsbCB0aGVu
IGludm9rZQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKCkgd2l0aCB0aGUgcmVzcGVj
dGl2ZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVy
cyBhcmUgc3RvcmVkIGluIEhhc2hNYXAgaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXJBdGsuY3BwLgorCisgICAgICAgIE1vdmVkIEFUSyBzaWduYWwgaGFuZGxpbmcg
KHByaW50QWNjZXNzaWJpbGl0eUV2ZW50IGFuZAorICAgICAgICBheE9iamVjdEV2ZW50TGlzdGVu
ZXIpIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVkIEluamVjdGVkQnVuZGxl
L2F0ayB0byB0aGUKKyAgICAgICAgaW5jbHVkZSBwYXRoLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmNwcC9oLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBNb3ZlZAorICAgICAgICBsaXN0
ZW5lciBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaDogTW92ZWQKKyAgICAgICAgbGlzdGVuZXIgSURzIHRvIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQgYQorICAgICAgICBub3Rp
ZmljYXRpb24gaGFuZGxlciBmb3IgR1RLKyBhbmQgRUZMLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgTW92ZWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQgYW5kIGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciB0bworICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5j
cHAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmls
aXR5RXZlbnRzKTogTW92ZWQgbGlzdGVuZXIKKyAgICAgICAgSURzIHRvIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBNb3ZlZCBsaXN0ZW5lcgorICAgICAg
ICBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcDoKKyAgICAgICAgQWRkZWQuCisgICAgICAgIChXVFI6OnBy
aW50QWNjZXNzaWJpbGl0eUV2ZW50KTogUHJpbnRzIGFjY2Vzc2liaWxpdHkgZXZlbnRzLiBUaGlz
CisgICAgICAgIGZ1bmN0aW9uIHdhcyBtb3ZlZCBmcm9tIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
QXRrLmNwcC4KKyAgICAgICAgKFdUUjo6YXhPYmplY3RFdmVudExpc3RlbmVyKTogQ2FsbGJhY2sg
Zm9yIHNpZ25hbHMuIFRoaXMgZnVuY3Rpb24gd2FzCisgICAgICAgIG1vdmVkIGZyb20gQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIpOgorICAg
ICAgICBJbml0aWFsaXplIGVsZW1lbnQgYW5kIGZ1bmN0aW9uIGNhbGxiYWNrLgorICAgICAgICAo
V1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6fkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyBoYW5kbGVyIGZyb20gSGFzaE1hcCBh
bmQgZGlzY29ubmVjdHMgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOiBT
ZXRzCisgICAgICAgIGxvZ2dpbmcgbW9kZSBhbmQgY29ubmVjdHMgY2FsbGJhY2tzLgorICAgICAg
ICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAgIFNldHMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFj
ayBhbmQgY29ubmVjdHMgY2FsbGJhY2sgdG8gc2lnbmFscy4KKyAgICAgICAgKFdUUjo6QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OnJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyB0aGUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZy
b20gSGFzaE1hcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRs
ZXI6OmNvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKToKKyAgICAgICAgQ29ubmVjdHMgYXhP
YmplY3RFdmVudExpc3RlbmVyIHRvIEFUSyBzaWduYWxzLgorICAgICAgICAoV1RSOjpBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFj
a3MpOgorICAgICAgICBEaXNjb25uZWN0cyBjYWxsYmFjay4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5oOgorICAgICAgICBBZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXI6OmNyZWF0ZSk6IENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UKKyAgICAgICAg
b2YgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIuCisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpzZXRQbGF0Zm9ybUVsZW1lbnQpOiBTZXRzIHRo
ZQorICAgICAgICBlbGVtZW50LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlcjo6cGxhdGZvcm1FbGVtZW50KTogR2V0cyB0aGUKKyAgICAgICAgZWxlbWVudC4K
KyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6Om5vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICBHZXRzIHRoZSBub3RpZmljYXRpb24gY2Fs
bGJhY2suCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnN0cmluZ0F0dHJpYnV0ZVZhbHVlKTogUmV0dXJucyBmYWxzZSBpbgorICAgICAg
ICBjYXNlIG9mIGFyaWEtaW52YWxpZCBhbmQgZW1wdHkgdmFsdWUuCisgICAgICAgIChXVFI6OkFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKTogQ3JlYXRlcwor
ICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlciwgc2V0IHRoZSBwbGF0Zm9ybSBlbGVtZW50IGFu
ZCB0aGUgbm90aWZpY2F0aW9uCisgICAgICAgIGNhbGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZXMg
dGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVyLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKwogMjAxMy0wOS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luZG93c10gQXZvaWQgY29udmVydGluZyBm
cm9tIEludFNpemUtPlNJWkUtPkludFNpemUKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDA3YjY0N2I4MGMyNDg4YjEyOTQyNzEwYWI1ODhmYzNmMjBlMjM0ZGIuLmNjNmVm
ZDUzNDY5NmYxMjkwMTZmZWZiZWJmYjE4MTM4OGRhMzMwMDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9DTWFrZUxpc3RzLnR4dApAQCAtMjMsNiArMjMsNyBAQCBzZXQoV2ViS2l0VGVzdFJ1bm5lcl9M
SUJSQVJJRVMKIHNldChXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0RJUn0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5q
ZWN0ZWRCdW5kbGUKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5kbGUv
YXRrCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0Zv
cndhcmRpbmdIZWFkZXJzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1h
a2VmaWxlLmFtIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQppbmRleCA3
MGI0YWFlY2FmZDExOTVmMGFjYmMwZTZmYjE4YTNmMTBiMjUyYThmLi43YjQ3MjU4NmMyMjEzYjNm
MDQ1N2M2ZWFhMTEyZTZmZDEzODkwZTUwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFrZWZp
bGUuYW0KQEAgLTk0LDYgKzk0LDggQEAgTGlicmFyaWVzX2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1
bmRsZV9sYV9TT1VSQ0VTID0gXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0FjdGl2YXRlRm9udHMuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIFwKKwlUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlckF0ay5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmggXAogCVRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRp
bmdzL0pTV3JhcHBhYmxlLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvSlNXcmFwcGVyLmNwcCBcCkBAIC0xMzIsNiArMTM0LDcgQEAgTGlicmFyaWVz
X2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9sYV9DUFBGTEFHUyA9IFwKIAktaW5jbHVkZSBU
b29scy9XZWJLaXRUZXN0UnVubmVyL1dlYktpdFRlc3RSdW5uZXJQcmVmaXguaCBcCiAJLUkkKHNy
Y2RpcikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciBcCiAJLUkkKHNyY2RpcikvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZSBcCisJLUkkKHNyY2RpcikvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsgXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvanMgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL0lu
amVjdGVkQnVuZGxlIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggMjEy
ZTk5MTExMTNjMDc5Y2E5N2JjNzIyODI3YmZiODVkMzQxMWQ1OC4uZGI4YWFjMjE5MDY2MjY2MDNj
MDlhYTJiMjA0ZjYyNjdjZDNkZmZmZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5j
cHAKQEAgLTQ0LDE0ICs0NCw2IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+
IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKQogfQogCiBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQotI2lmIFBMQVRGT1JNKEdUSykgfHwg
UExBVEZPUk0oRUZMKQotICAgIDogbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQoMCkKLSAgICAsIG1f
Zm9jdXNFdmVudExpc3RlbmVySWQoMCkKLSAgICAsIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRM
aXN0ZW5lcklkKDApCi0gICAgLCBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQoMCkKLSAgICAs
IG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCgwKQotICAgICwgbV92aXNpYmxlRGF0YUNoYW5n
ZWRMaXN0ZW5lcklkKDApCi0jZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oCmluZGV4IDI0N2RlMzQyMDYxZWFhYmVmMzgwN2IyNWQwMjY2Nzg3Mjk5MmFiYjMuLjkwZTEw
Zjc1ODMyOGI5YmQwYWM5NWY3OWQ0Y2I5OGI4ZTg2ODA3NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmgKQEAgLTMzLDYgKzMzLDkgQEAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVk
ZSA8d2luZG93cy5oPgogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwp
CisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKKyNlbmRp
ZgogCiBuYW1lc3BhY2UgV1RSIHsKICAgICAKQEAgLTY5LDEyICs3Miw3IEBAIHByaXZhdGU6CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oRUZMKQotICAgIHVuc2lnbmVk
IG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkOwotICAgIHVuc2lnbmVkIG1fZm9jdXNFdmVudExpc3Rl
bmVySWQ7Ci0gICAgdW5zaWduZWQgbV9hY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQ7
Ci0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkOwotICAgIHVuc2lnbmVk
IG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZDsKLSAgICB1bnNpZ25lZCBtX3Zpc2libGVEYXRh
Q2hhbmdlZExpc3RlbmVySWQ7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyPiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKaW5kZXggYmIxYmRlNWQzNWFiZmU3Y2Y4MzE3NzMzZjI1NmJm
NDE4NmExNTU5YS4uNWY2ZWRiMmExMzQ2ZmVmYmE3ODk0OTkwODk2YzFmYTljOTgyNGY1NiAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgdHlwZWRlZiBzdHJ1
Y3Qgb2JqY19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwogCiB0eXBlZGVmIENPTVB0cjxJQWNj
ZXNzaWJsZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZWxpZiBQTEFURk9STShHVEspIHx8IChQTEFU
Rk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkpCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVk
ZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgogdHlwZWRlZiBHUmVmUHRyPEF0a09iamVjdD4gUGxh
dGZvcm1VSUVsZW1lbnQ7CkBAIC0yNjIsNiArMjYzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBn
ZXRDaGlsZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKICAg
ICB2b2lkIGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogI2VuZGlm
CisKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkKKyAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKyNlbmRp
ZgogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IDNiNThjMGRhMDMzOGI0NTY2NWVhOTU3YjRjNmJm
OWQ4ZjBhMjQwNDQuLjA0NjYyYjcyNjllZWJmYzc2NzJhNGM1Njk2ZGU1MzI1MTE0ODBkOWIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKQEAgLTM5LDYz
ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgdm9pZCBwcmludEFjY2Vzc2li
aWxpdHlFdmVudChBdGtPYmplY3QqIGFjY2Vzc2libGUsIGNvbnN0IGdjaGFyKiBzaWduYWxOYW1l
LCBjb25zdCBnY2hhciogc2lnbmFsVmFsdWUpCi17Ci0gICAgLy8gRG8gbm90IGhhbmRsZSBzdGF0
ZS1jaGFuZ2U6ZGVmdW5jdCBzaWduYWxzLCBhcyB0aGUgQXRrT2JqZWN0Ci0gICAgLy8gYXNzb2Np
YXRlZCB0byB0aGVtIHdpbGwgbm90IGJlIHZhbGlkIGF0IHRoaXMgcG9pbnQgYWxyZWFkeS4KLSAg
ICBpZiAoIXNpZ25hbE5hbWUgfHwgIWdfc3RyY21wMChzaWduYWxOYW1lLCAic3RhdGUtY2hhbmdl
OmRlZnVuY3QiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFB
VEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBn
Y2hhciogb2JqZWN0TmFtZSA9IGF0a19vYmplY3RfZ2V0X25hbWUoYWNjZXNzaWJsZSk7Ci0gICAg
QXRrUm9sZSBvYmplY3RSb2xlID0gYXRrX29iamVjdF9nZXRfcm9sZShhY2Nlc3NpYmxlKTsKLQot
ICAgIC8vIFRyeSB0byBhbHdheXMgcHJvdmlkZSBhIG5hbWUgdG8gYmUgbG9nZ2VkIGZvciB0aGUg
b2JqZWN0LgotICAgIGlmICghb2JqZWN0TmFtZSB8fCAqb2JqZWN0TmFtZSA9PSAnXDAnKQotICAg
ICAgICBvYmplY3ROYW1lID0gIihObyBuYW1lKSI7Ci0KLSAgICBHT3duUHRyPGdjaGFyPiBzaWdu
YWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0cmR1cF9wcmludGYoIiVzID0gJXMiLCBz
aWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1cChzaWduYWxOYW1lKSk7Ci0gICAgR093
blB0cjxnY2hhcj4gYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiQWNj
ZXNzaWJpbGl0eSBvYmplY3QgZW1pdHRlZCBcIiVzXCIgLyBOYW1lOiBcIiVzXCIgLyBSb2xlOiAl
ZFxuIiwgc2lnbmFsTmFtZUFuZFZhbHVlLmdldCgpLCBvYmplY3ROYW1lLCBvYmplY3RSb2xlKSk7
Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm91dHB1dFRleHQoU3RyaW5nOjpmcm9tVVRG
OChhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcuZ2V0KCkpKTsKLX0KLQotc3RhdGljIGdib29sZWFu
IGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihHU2lnbmFsSW52b2NhdGlvbkhpbnQgKnNpZ25hbEhpbnQs
IGd1aW50IG51bVBhcmFtVmFsdWVzLCBjb25zdCBHVmFsdWUgKnBhcmFtVmFsdWVzLCBncG9pbnRl
ciBkYXRhKQotewotICAgIC8vIEF0IGxlYXN0IHdlIHNob3VsZCByZWNlaXZlIHRoZSBpbnN0YW5j
ZSBlbWl0dGluZyB0aGUgc2lnbmFsLgotICAgIGlmIChudW1QYXJhbVZhbHVlcyA8IDEpCi0gICAg
ICAgIHJldHVybiBUUlVFOwotCi0gICAgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlID0gQVRLX09CSkVD
VChnX3ZhbHVlX2dldF9vYmplY3QoJnBhcmFtVmFsdWVzWzBdKSk7Ci0gICAgaWYgKCFhY2Nlc3Np
YmxlIHx8ICFBVEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQotICAgICAgICByZXR1cm4gVFJVRTsK
LQotICAgIEdTaWduYWxRdWVyeSBzaWduYWxRdWVyeTsKLSAgICBHT3duUHRyPGdjaGFyPiBzaWdu
YWxOYW1lOwotICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbFZhbHVlOwotCi0gICAgZ19zaWduYWxf
cXVlcnkoc2lnbmFsSGludC0+c2lnbmFsX2lkLCAmc2lnbmFsUXVlcnkpOwotCi0gICAgaWYgKCFn
X3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJzdGF0ZS1jaGFuZ2UiKSkgewotICAg
ICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTolcyIsIGdf
dmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVl
LnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1
ZXNbMl0pKSk7Ci0gICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9u
YW1lLCAiZm9jdXMtZXZlbnQiKSkgewotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cCgi
Zm9jdXMtZXZlbnQiKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYo
IiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgfSBlbHNl
IGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hpbGRyZW4tY2hhbmdl
ZCIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJjaGlsZHJlbi1jaGFuZ2Vk
IikpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFs
dWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21w
MChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKQotICAgICAgICBz
aWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIsIGdfcXVh
cmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHNp
Z25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lKSk7Ci0KLSAgICBw
cmludEFjY2Vzc2liaWxpdHlFdmVudChhY2Nlc3NpYmxlLCBzaWduYWxOYW1lLmdldCgpLCBzaWdu
YWxWYWx1ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQogdm9pZCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpCiB7CiAgICAgLy8gRW5zdXJl
IG5vIGNhbGxiYWNrcyBhcmUgY29ubmVjdGVkIGJlZm9yZS4KQEAgLTEwNSwxMyArNDgsOSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKICAg
ICAvLyB0aGUgcm9vdCBhY2Nlc3NpYmxlIG9iamVjdCwgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIGZ1
bGwgaGllcmFyY2h5LgogICAgIHJvb3RFbGVtZW50KCk7CiAKLSAgICAvLyBBZGQgZ2xvYmFsIGxp
c3RlbmVycyBmb3IgQXRrT2JqZWN0J3Mgc2lnbmFscy4KLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVu
ZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5l
ciwgIkFUSzpBdGtPYmplY3Q6c3RhdGUtY2hhbmdlIik7Ci0gICAgbV9mb2N1c0V2ZW50TGlzdGVu
ZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5l
ciwgIkFUSzpBdGtPYmplY3Q6Zm9jdXMtZXZlbnQiKTsKLSAgICBtX2FjdGl2ZURlc2NlbmRhbnRD
aGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0
RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6YWN0aXZlLWRlc2NlbmRhbnQtY2hhbmdlZCIp
OwotICAgIG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Y2hpbGRyZW4t
Y2hhbmdlZCIpOwotICAgIG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xv
YmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6
cHJvcGVydHktY2hhbmdlIik7Ci0gICAgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0g
YXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRL
OkF0a09iamVjdDp2aXNpYmxlLWRhdGEtY2hhbmdlZCIpOworICAgIGlmIChtX2dsb2JhbE5vdGlm
aWNhdGlvbkhhbmRsZXIpCisgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IGFk
b3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcik7CisgICAgbV9nbG9i
YWxOb3RpZmljYXRpb25IYW5kbGVyLT5sb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCk7CiAKICAgICAv
LyBFbnN1cmUgdGhlIEF0ayBpbnRlcmZhY2UgdHlwZXMgYXJlIHJlZ2lzdGVyZWQsIG90aGVyd2lz
ZQogICAgIC8vIHRoZSBBdGtEb2N1bWVudCBzaWduYWwgaGFuZGxlcnMgYmVsb3cgd29uJ3QgZ2V0
IHJlZ2lzdGVyZWQuCkBAIC0xMjMsMzEgKzYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpCiAKIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUoKQogewotICAgIC8vIEF0a09iamVjdCBzaWdu
YWxzLgotICAgIGlmIChtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVt
b3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZCk7Ci0gICAg
ICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fZm9jdXNF
dmVudExpc3RlbmVySWQpIHsKLSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIobV9mb2N1c0V2ZW50TGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fZm9jdXNFdmVudExpc3RlbmVy
SWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9hY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVy
SWQpIHsKLSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV9hY3RpdmVE
ZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQpOwotICAgICAgICBtX2FjdGl2ZURlc2NlbmRhbnRD
aGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX2NoaWxkcmVuQ2hhbmdlZExp
c3RlbmVySWQpIHsKLSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV9j
aGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9jaGlsZHJlbkNoYW5nZWRMaXN0
ZW5lcklkID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCkg
ewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX3Byb3BlcnR5Q2hh
bmdlZExpc3RlbmVySWQpOwotICAgICAgICBtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSAw
OwotICAgIH0KLSAgICBpZiAobV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkKSB7Ci0gICAg
ICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fdmlzaWJsZURhdGFDaGFuZ2Vk
TGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7
Ci0gICAgfQorICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IDA7CiB9CiAKIHN0YXRp
YyBBdGtPYmplY3QqIGNoaWxkRWxlbWVudEJ5SWQoQXRrT2JqZWN0KiBwYXJlbnQsIGNvbnN0IGNo
YXIqIGlkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXJBdGsuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNkM2VlNzVhOTk0Mjg0ZWUxMmUwNDgwMDhkMjNk
NDJiNmMxNThlMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAK
QEAgLTAsMCArMSwyNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVj
dHJvbmljcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIgorCisjaW5jbHVk
ZSAiSW5qZWN0ZWRCdW5kbGUuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2UuaCIKKyNp
bmNsdWRlICJKU1dyYXBwZXIuaCIKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZVBhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKwordHlw
ZWRlZiBIYXNoTWFwPEF0a09iamVjdCosIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Kj4gTm90aWZpY2F0aW9uSGFuZGxlcnNNYXA7CisKK3N0YXRpYyBndWludCBzdGF0ZUNoYW5nZUxp
c3RlbmVySWQgPSAwOworc3RhdGljIGd1aW50IGZvY3VzRXZlbnRMaXN0ZW5lcklkID0gMDsKK3N0
YXRpYyBndWludCBhY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSAwOworc3RhdGlj
IGd1aW50IGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSAwOworc3RhdGljIGd1aW50IHByb3Bl
cnR5Q2hhbmdlZExpc3RlbmVySWQgPSAwOworc3RhdGljIGd1aW50IHZpc2libGVEYXRhQ2hhbmdl
ZExpc3RlbmVySWQgPSAwOworc3RhdGljIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFwIG5vdGlmaWNh
dGlvbkhhbmRsZXJzOworc3RhdGljIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBn
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gMDsKK3N0YXRpYyBib29sIGxvZ2dpbmdBY2Nlc3Np
YmlsaXR5RXZlbnRzID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkIHByaW50QWNjZXNzaWJpbGl0eUV2
ZW50KEF0a09iamVjdCogYWNjZXNzaWJsZSwgY29uc3QgZ2NoYXIqIHNpZ25hbE5hbWUsIGNvbnN0
IGdjaGFyKiBzaWduYWxWYWx1ZSkKK3sKKyAgICAvLyBEbyBub3QgaGFuZGxlIHN0YXRlLWNoYW5n
ZTpkZWZ1bmN0IHNpZ25hbHMsIGFzIHRoZSBBdGtPYmplY3QKKyAgICAvLyBhc3NvY2lhdGVkIHRv
IHRoZW0gd2lsbCBub3QgYmUgdmFsaWQgYXQgdGhpcyBwb2ludCBhbHJlYWR5LgorICAgIGlmICgh
c2lnbmFsTmFtZSB8fCAhZ19zdHJjbXAwKHNpZ25hbE5hbWUsICJzdGF0ZS1jaGFuZ2U6ZGVmdW5j
dCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19JU19P
QkpFQ1QoYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IGdjaGFyKiBv
YmplY3ROYW1lID0gYXRrX29iamVjdF9nZXRfbmFtZShhY2Nlc3NpYmxlKTsKKyAgICBBdGtSb2xl
IG9iamVjdFJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKGFjY2Vzc2libGUpOworCisgICAgLy8g
VHJ5IHRvIGFsd2F5cyBwcm92aWRlIGEgbmFtZSB0byBiZSBsb2dnZWQgZm9yIHRoZSBvYmplY3Qu
CisgICAgaWYgKCFvYmplY3ROYW1lIHx8ICpvYmplY3ROYW1lID09ICdcMCcpCisgICAgICAgIG9i
amVjdE5hbWUgPSAiKE5vIG5hbWUpIjsKKworICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWVB
bmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5h
bWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsKKyAgICBHT3duUHRyPGdj
aGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCJBY2Nlc3NpYmls
aXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAvIE5hbWU6IFwiJXNcIiAvIFJvbGU6ICVkXG4iLCBz
aWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9iamVjdE5hbWUsIG9iamVjdFJvbGUpKTsKKyAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0cHV0VGV4dChTdHJpbmc6OmZyb21VVEY4KGFjY2Vz
c2liaWxpdHlFdmVudFN0cmluZy5nZXQoKSkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4gYXhPYmpl
Y3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCogc2lnbmFsSGludCwgZ3VpbnQg
bnVtUGFyYW1WYWx1ZXMsIGNvbnN0IEdWYWx1ZSogcGFyYW1WYWx1ZXMsIGdwb2ludGVyIGRhdGEp
Cit7CisgICAgLy8gQXQgbGVhc3Qgd2Ugc2hvdWxkIHJlY2VpdmUgdGhlIGluc3RhbmNlIGVtaXR0
aW5nIHRoZSBzaWduYWwuCisgICAgaWYgKCFudW1QYXJhbVZhbHVlcykKKyAgICAgICAgcmV0dXJu
IHRydWU7CisKKyAgICBBdGtPYmplY3QqIGFjY2Vzc2libGUgPSBBVEtfT0JKRUNUKGdfdmFsdWVf
Z2V0X29iamVjdCgmcGFyYW1WYWx1ZXNbMF0pKTsKKyAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFU
S19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgR1Np
Z25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5OworICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5hbWU7Cisg
ICAgR093blB0cjxnY2hhcj4gc2lnbmFsVmFsdWU7CisgICAgU3RyaW5nIG5vdGlmaWNhdGlvbk5h
bWU7CisKKyAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWduYWxR
dWVyeSk7CisKKyAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInN0
YXRlLWNoYW5nZSIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50Zigi
c3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsK
KyAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dl
dF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAoZ192
YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVudHJ5IikpCisgICAg
ICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOworICAg
IH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2
ZW50IikpIHsKKyAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50Iikp
OworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVf
Z2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOworICAgIH0gZWxzZSBpZiAoIWdfc3RyY21w
MChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgeworICAgICAg
ICBzaWduYWxOYW1lLnNldChnX3N0cmR1cCgiY2hpbGRyZW4tY2hhbmdlZCIpKTsKKyAgICAgICAg
c2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91aW50KCZw
YXJhbVZhbHVlc1sxXSkpKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnku
c2lnbmFsX25hbWUsICJwcm9wZXJ0eS1jaGFuZ2UiKSkKKyAgICAgICAgc2lnbmFsTmFtZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhz
aWduYWxIaW50LT5kZXRhaWwpKSk7CisgICAgZWxzZQorICAgICAgICBzaWduYWxOYW1lLnNldChn
X3N0cmR1cChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSkpOworCisgICAgaWYgKGxvZ2dpbmdBY2Nl
c3NpYmlsaXR5RXZlbnRzKQorICAgICAgICBwcmludEFjY2Vzc2liaWxpdHlFdmVudChhY2Nlc3Np
YmxlLCBzaWduYWxOYW1lLmdldCgpLCBzaWduYWxWYWx1ZS5nZXQoKSk7CisKKyNpZiBQTEFURk9S
TShHVEspCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBXS0J1
bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CisgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4dCA9
IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworI2Vsc2UKKyAg
ICBKU0NvbnRleHRSZWYganNDb250ZXh0ID0gMDsKKyNlbmRpZgorICAgIGlmICghanNDb250ZXh0
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmxlbmd0
aCgpKSB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbkV2
ZW50TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobm90aWZpY2F0aW9u
TmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uTmFt
ZUFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBqc05vdGlmaWNhdGlvbkV2
ZW50TmFtZS5nZXQoKSk7CisgICAgICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFwOjppdGVyYXRv
ciBlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQo
YWNjZXNzaWJsZSk7CisgICAgICAgIGlmIChlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlciAhPSBu
b3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgLy8gTGlzdGVuZXIgZm9y
IG9uZSBlbGVtZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24gbmFt
ZS4KKyAgICAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBjb25zdF9j
YXN0PEpTT2JqZWN0UmVmPihlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlci0+dmFsdWUtPm5vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDEsICZub3RpZmljYXRpb25OYW1lQXJndW1l
bnQsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRs
ZXIpIHsKKyAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhlIGVsZW1lbnQg
YW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBKU1Zh
bHVlUmVmIGFyZ3VtZW50c1syXTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9IHRvSlMoanND
b250ZXh0LCBXVEY6OmdldFB0cihXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShh
Y2Nlc3NpYmxlKSkpOworICAgICAgICAgICAgYXJndW1lbnRzWzFdID0gbm90aWZpY2F0aW9uTmFt
ZUFyZ3VtZW50OworICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0NvbnRleHQs
IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDIsIGFyZ3VtZW50cywgMCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKHZvaWQpCisgICAg
OiBtX3BsYXRmb3JtRWxlbWVudCgwKQorICAgICwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxi
YWNrKDApCit7Cit9CisKK0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjp+QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKQoreworICAgIHJlbW92ZUFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFj
a3MoKTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6bG9nQWNj
ZXNzaWJpbGl0eUV2ZW50cygpCit7CisgICAgbG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMgPSB0
cnVlOworICAgIGNvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7Cit9CisKK3ZvaWQgQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OnNldE5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2Fs
bGJhY2soSlNWYWx1ZVJlZiBub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKQoreworICAgIGlm
ICghbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaykgeworICAgICAgICByZW1vdmVBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpOworICAgICAgICBkaXNjb25uZWN0QWNjZXNzaWJp
bGl0eUNhbGxiYWNrcygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9ub3RpZmlj
YXRpb25GdW5jdGlvbkNhbGxiYWNrID0gbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjazsKKwor
I2lmIFBMQVRGT1JNKEdUSykKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5G
cmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKKyAgICBKU0NvbnRleHRSZWYg
anNDb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7
CisjZWxzZQorICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSAwOworI2VuZGlmCisgICAgaWYg
KCFqc0NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIEpTVmFsdWVQcm90ZWN0KGpzQ29u
dGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAvLyBDaGVjayBpZiB0
aGlzIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBlbGVtZW50
LgorICAgIGlmIChtX3BsYXRmb3JtRWxlbWVudCkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5k
bGVyc01hcDo6aXRlcmF0b3IgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmljYXRp
b25IYW5kbGVycy5maW5kKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpKTsKKyAgICAgICAgaWYgKGN1
cnJlbnROb3RpZmljYXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7
CisgICAgICAgICAgICBBU1NFUlQoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5w
bGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4
dCwgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlv
bkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGN1
cnJlbnROb3RpZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+cGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkp
OworICAgICAgICB9CisgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLmFkZChtX3BsYXRmb3Jt
RWxlbWVudC5nZXQoKSwgdGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGdsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4
dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
aygpKTsKKyAgICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IHRoaXM7CisgICAgfQor
CisgICAgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKTsKK30KKwordm9pZCBBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6cmVtb3ZlQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIoKQoreworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFn
ZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBXS0J1bmRs
ZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKKyAg
ICBKU0NvbnRleHRSZWYganNDb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250
ZXh0KG1haW5GcmFtZSk7CisjZWxzZQorICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSAwOwor
I2VuZGlmCisgICAgaWYgKCFqc0NvbnRleHQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChn
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID09IHRoaXMpIHsKKyAgICAgICAgSlNWYWx1ZVVucHJv
dGVjdChqc0NvbnRleHQsIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlvbkZ1
bmN0aW9uQ2FsbGJhY2soKSk7CisgICAgICAgIGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPSAw
OworICAgIH0gZWxzZSBpZiAobV9wbGF0Zm9ybUVsZW1lbnQuZ2V0KCkpIHsKKyAgICAgICAgTm90
aWZpY2F0aW9uSGFuZGxlcnNNYXA6Oml0ZXJhdG9yIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIg
PSBub3RpZmljYXRpb25IYW5kbGVycy5maW5kKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpKTsKKyAg
ICAgICAgaWYgKHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIgIT0gbm90aWZpY2F0aW9uSGFuZGxl
cnMuZW5kKCkpIHsKKyAgICAgICAgICAgIEpTVmFsdWVVbnByb3RlY3QoanNDb250ZXh0LCByZW1v
dmVOb3RpZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
aygpKTsKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLnJlbW92ZShyZW1vdmVOb3Rp
ZmljYXRpb25IYW5kbGVyKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6Y29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKQor
eworICAgIC8vIEVuc3VyZSBubyBjYWxsYmFja3MgYXJlIGNvbm5lY3RlZCBiZWZvcmUuCisgICAg
aWYgKCFkaXNjb25uZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBBZGQgZ2xvYmFsIGxpc3RlbmVycyBmb3IgQXRrT2JqZWN0J3Mgc2lnbmFscy4K
KyAgICBzdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5l
cihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnN0YXRlLWNoYW5nZSIpOwor
ICAgIGZvY3VzRXZlbnRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIo
YXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpmb2N1cy1ldmVudCIpOworICAg
IGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6YWN0aXZlLWRl
c2NlbmRhbnQtY2hhbmdlZCIpOworICAgIGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtf
YWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRr
T2JqZWN0OmNoaWxkcmVuLWNoYW5nZWQiKTsKKyAgICBwcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklk
ID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAi
QVRLOkF0a09iamVjdDpwcm9wZXJ0eS1jaGFuZ2UiKTsKKyAgICB2aXNpYmxlRGF0YUNoYW5nZWRM
aXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExp
c3RlbmVyLCAiQVRLOkF0a09iamVjdDp2aXNpYmxlLWRhdGEtY2hhbmdlZCIpOworfQorCitib29s
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpkaXNjb25uZWN0QWNjZXNzaWJpbGl0
eUNhbGxiYWNrcygpCit7CisgICAgLy8gT25seSBkaXNjb25uZWN0IGlmIGxvZ2dpbmcgaXMgb2Zm
IGFuZCB0aGVyZSBpcyBubyBub3RpZmljYXRpb24gaGFuZGxlci4KKyAgICBpZiAobG9nZ2luZ0Fj
Y2Vzc2liaWxpdHlFdmVudHMgfHwgIW5vdGlmaWNhdGlvbkhhbmRsZXJzLmlzRW1wdHkoKSB8fCBn
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBBdGtPYmplY3Qgc2lnbmFscy4KKyAgICBpZiAoc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKSB7Cisg
ICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKHN0YXRlQ2hhbmdlTGlzdGVu
ZXJJZCk7CisgICAgICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7CisgICAgfQorICAgIGlm
IChmb2N1c0V2ZW50TGlzdGVuZXJJZCkgeworICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVu
dF9saXN0ZW5lcihmb2N1c0V2ZW50TGlzdGVuZXJJZCk7CisgICAgICAgIGZvY3VzRXZlbnRMaXN0
ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVu
ZXJJZCkgeworICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihhY3RpdmVE
ZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQpOworICAgICAgICBhY3RpdmVEZXNjZW5kYW50Q2hh
bmdlZExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBpZiAoY2hpbGRyZW5DaGFuZ2VkTGlzdGVu
ZXJJZCkgeworICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihjaGlsZHJl
bkNoYW5nZWRMaXN0ZW5lcklkKTsKKyAgICAgICAgY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9
IDA7CisgICAgfQorICAgIGlmIChwcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAg
IGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKHByb3BlcnR5Q2hhbmdlZExpc3RlbmVy
SWQpOworICAgICAgICBwcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAg
aWYgKHZpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9n
bG9iYWxfZXZlbnRfbGlzdGVuZXIodmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAg
ICAgIHZpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSAwOworICAgIH0KK30KKworfSAvLyBu
YW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXJBdGsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYThhZjA5ZTA4N2I5MDcwYTExNDAxMmM0YjJj
MzJiNmI3MTY0MTZmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaApA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ry
b25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrX2gKKyNkZWZpbmUgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhh
bmRsZXJBdGtfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KKyNp
bmNsdWRlIDxhdGsvYXRrLmg+CisjaW5jbHVkZSA8YXRrL2F0a29iamVjdC5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXVFIgeworCitjbGFzcyBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IGNyZWF0ZSgpCisgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KCkpOworICAgIH0KKyAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcih2b2lkKTsK
KyAgICB+QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKworICAgIHZvaWQgc2V0
UGxhdGZvcm1FbGVtZW50KEdSZWZQdHI8QXRrT2JqZWN0PiBwbGF0Zm9ybUVsZW1lbnQpIHsgbV9w
bGF0Zm9ybUVsZW1lbnQgPSBwbGF0Zm9ybUVsZW1lbnQ7IH0KKyAgICBHUmVmUHRyPEF0a09iamVj
dD4gcGxhdGZvcm1FbGVtZW50KHZvaWQpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1FbGVtZW50
OyB9CisgICAgdm9pZCBzZXROb3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKEpTVmFsdWVSZWYp
OworICAgIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayh2b2lkKSBjb25z
dCB7IHJldHVybiBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2s7IH0KKyAgICB2b2lkIGxv
Z0FjY2Vzc2liaWxpdHlFdmVudHModm9pZCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjb25uZWN0
QWNjZXNzaWJpbGl0eUNhbGxiYWNrcyh2b2lkKTsKKyAgICBib29sIGRpc2Nvbm5lY3RBY2Nlc3Np
YmlsaXR5Q2FsbGJhY2tzKHZvaWQpOworICAgIHZvaWQgcmVtb3ZlQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIodm9pZCk7CisKKyAgICBHUmVmUHRyPEF0a09iamVjdD4gbV9wbGF0Zm9y
bUVsZW1lbnQ7CisgICAgSlNWYWx1ZVJlZiBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2s7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVFIKKworI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAKaW5kZXggNGE0ZWUwN2M5OTc5NmVhMWE1ZGNkMWE3ODhlZWVkNmVkODMwNWExZi4u
Yzc1YjJhNDVkY2NkMzg1YzQ5M2U2NzcyYjVmYzgwNDk0OTBkYWM2YSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudEF0ay5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTU2OCw2ICs1NjgsMTMgQEAgSlNS
ZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0dHJp
YnV0ZVZhbHVlKEpTU3RyaW5nUmUKICAgICAgICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aENo
YXJhY3RlcnMoMCwgMCk7CiAKICAgICBTdHJpbmcgYXR0cmlidXRlVmFsdWUgPSBnZXRBdHRyaWJ1
dGVTZXRWYWx1ZUZvcklkKEFUS19PQkpFQ1QobV9lbGVtZW50LmdldCgpKSwgYXRrQXR0cmlidXRl
TmFtZS51dGY4KCkuZGF0YSgpKTsKKworICAgIC8vIEluIGNhc2Ugb2YgJ2FyaWEtaW52YWxpZCcg
d2hlbiB0aGUgYXR0cmlidXRlIGVtcHR5IG9yIGhhcyAiZmFsc2UiIGZvciBBVEsKKyAgICAvLyBh
Y2NvcmRpbmcgdG8gaHR0cDovL3d3dy53My5vcmcvV0FJL1BGL2FyaWEtaW1wbGVtZW50YXRpb24v
I21hcHBpbmcgYXR0cmlidXRlCisgICAgLy8gaXMgbm90IG1hcHBlZCBidXQgbGF5b3V0IHRlc3Rz
IHdpbGwgZXhwZWN0ICdmYWxzZScuCisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSAm
JiBhdGtBdHRyaWJ1dGVOYW1lID09ICJhcmlhLWludmFsaWQiKQorICAgICAgICByZXR1cm4gSlNT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoImZhbHNlIik7CisKICAgICByZXR1cm4gSlNTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoYXR0cmlidXRlVmFsdWUudXRmOCgpLmRhdGEoKSk7CiB9
CiAKQEAgLTExMDcsMTMgKzExMTQsMjcgQEAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnVybCgpCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6
YWRkTm90aWZpY2F0aW9uTGlzdGVuZXIoSlNWYWx1ZVJlZiBmdW5jdGlvbkNhbGxiYWNrKQogewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyAgICBpZiAoIWZ1bmN0aW9uQ2FsbGJhY2spCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIE9ubHkgb25lIG5vdGlmaWNhdGlvbiBsaXN0ZW5l
ciBwZXIgZWxlbWVudC4KKyAgICBpZiAobV9ub3RpZmljYXRpb25IYW5kbGVyKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBBY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlcjo6Y3JlYXRlKCk7CisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVy
LT5zZXRQbGF0Zm9ybUVsZW1lbnQocGxhdGZvcm1VSUVsZW1lbnQoKSk7CisgICAgbV9ub3RpZmlj
YXRpb25IYW5kbGVyLT5zZXROb3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKGZ1bmN0aW9uQ2Fs
bGJhY2spOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6cmVtb3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKQogewotICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKKyAgICAvLyBQcm9ncmFtbWVycyBzaG91bGQgbm90IGJlIHRyeWluZyB0byByZW1vdmUg
YSBsaXN0ZW5lciB0aGF0J3MgYWxyZWFkeSByZW1vdmVkLgorICAgIEFTU0VSVChtX25vdGlmaWNh
dGlvbkhhbmRsZXIpOworCisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gMDsKKwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRm
b3JtRWZsLmNtYWtlIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpp
bmRleCA1MGFlZmNhMDc2NTViN2MxMzVmOGE4NjU3OTA1NTViZjA3MmY3OGIwLi45ZDI2ZDg5Mzk4
ZmMyZjY3MjdjNGIzN2NiZGE3YzNhM2IyZmU1MTc0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTcwLDYgKzcwLDcgQEAgYWRkX2RlZmluaXRpb25zKC1ERk9O
VFNfQ09ORl9ESVI9IiR7VE9PTFNfRElSfS9EdW1wUmVuZGVyVHJlZS9ndGsvZm9udHMiCiBpZiAo
RU5BQkxFX0FDQ0VTU0lCSUxJVFkpCiAgICAgbGlzdChBUFBFTkQgV2ViS2l0VGVzdFJ1bm5lcklu
amVjdGVkQnVuZGxlX1NPVVJDRVMKICAgICAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RF
REJVTkRMRV9ESVJ9L2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKKyAgICAgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9JTkpFQ1RFREJVTkRMRV9ESVJ9L2F0ay9BY2Nlc3NpYmlsaXR5
Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAKICAgICAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9J
TkpFQ1RFREJVTkRMRV9ESVJ9L2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAogICAg
ICkKICAgICBsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwN2E2ZGI1MzY4ZDI0NDhhYzhjODc3YWI5MWY3YzZhZTU4NWZiZjZhLi4zMTNkYzk2
NWMyMDQxZWQzYjVmZGY2MmZhOWM0MjQ1Yjg3ZWZlZWQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTMtMDktMTEgIERlbmlzIE5vbWl5YW1hICA8ZC5ub21peWFtYUBzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbR1RLXSBNaXNzaW5nIFdUUiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3Rp
ZmljYXRpb25MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIwNDIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlZCB0aGUgZXhwZWN0YXRpb24gb2YgYXJpYS1p
bnZhbGlkLmh0bWwgdGVzdCwgd2hpY2ggd2FzIHRpbWluZyBvdXQKKyAgICAgICAgYmVmb3JlIHRo
aXMgZml4LgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zOiBS
ZW1vdmVkIGFyaWEtaW52YWxpZC5odG1sIGJlY2F1c2UKKyAgICAgICAgaXQgbm93IHBhc3NlcyB3
aXRoIHRoaXMgZml4LgorCiAyMDEzLTA5LTExICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0
aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTog
UmVtb3ZlIExvY2FsTWVkaWFTdHJlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCBiOGM1MjU3ZWU3ZDNmYzc3NjY0YTNmMjZkODA0NWI1N2Y0
YzBiYTJjLi5lMDMxNzI5ZGZjYjIwZDI4ZjdhNzRjMWU5NTYxOTg3NDZiNTNmYzFkIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC00OTksOSAr
NDk5LDYgQEAgQnVnKEdUSykgYW5pbWF0aW9ucy9jb21iby10cmFuc2Zvcm0tdHJhbnNsYXRlK3Nj
YWxlLmh0bWwgWyBGYWlsdXJlIF0KIEJ1ZyhHVEspIGFuaW1hdGlvbnMvcGxheS1zdGF0ZS1zdXNw
ZW5kLmh0bWwgWyBGYWlsdXJlIF0KIEJ1ZyhHVEspIGFuaW1hdGlvbnMvc3VzcGVuZC1yZXN1bWUt
YW5pbWF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIAotIyBbR1RLXSBNaXNzaW5nIFdUUiBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lciBpbXBsZW1lbnRhdGlvbgot
d2Via2l0Lm9yZy9iLzEyMDQyMSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIFsgVGlt
ZW91dCBdCi0KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBUZXN0
cyBmYWlsaW5nCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211426</attachid>
            <date>2013-09-12 07:05:28 -0700</date>
            <delta_ts>2013-09-13 11:15:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120421-20130912150543.patch</filename>
            <type>text/plain</type>
            <size>34760</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1NjAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGJlMjQ4NDQ2YWE5MjlmNjRhZTVjN2E0Yjg0NjRhNmRi
NWM3ZGUzMS4uNzU1OTFjOGEyMDkyYzliNWI5MmVmZWFiYTY0NDU5ZTBlYzQ4N2M0YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc5
IEBACiAyMDEzLTA5LTEyICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CiAKKyAgICAgICAgW0FUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBub3RpZmljYXRpb24g
bGlzdGVuZXIgZm9yIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9yCisgICAgICAgIFdlYktpdFRl
c3RSdW5uZXIuIFRoZSBzaWduYWwgaXMgZ2VuZXJhdGVkIGJ5CisgICAgICAgIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbigpIGFuZCByZWNlaXZlZCBieQorICAgICAgICBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoKS4gYXhPYmplY3RFdmVudExpc3RlbmVyKCkgd2lsbCB0aGVu
IGludm9rZQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKCkgd2l0aCB0aGUgcmVzcGVj
dGl2ZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVy
cyBhcmUgc3RvcmVkIGluIEhhc2hNYXAgaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXJBdGsuY3BwLgorCisgICAgICAgIE1vdmVkIEFUSyBzaWduYWwgaGFuZGxpbmcg
KHByaW50QWNjZXNzaWJpbGl0eUV2ZW50IGFuZAorICAgICAgICBheE9iamVjdEV2ZW50TGlzdGVu
ZXIpIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVkIEluamVjdGVkQnVuZGxl
L2F0ayB0byB0aGUKKyAgICAgICAgaW5jbHVkZSBwYXRoLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmNwcC9oLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBNb3ZlZAorICAgICAgICBsaXN0
ZW5lciBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaDogTW92ZWQKKyAgICAgICAgbGlzdGVuZXIgSURzIHRvIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQgYQorICAgICAgICBub3Rp
ZmljYXRpb24gaGFuZGxlciBmb3IgR1RLKyBhbmQgRUZMLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgTW92ZWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQgYW5kIGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciB0bworICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5j
cHAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmls
aXR5RXZlbnRzKTogTW92ZWQgbGlzdGVuZXIKKyAgICAgICAgSURzIHRvIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBNb3ZlZCBsaXN0ZW5lcgorICAgICAg
ICBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OnByaW50QWNjZXNz
aWJpbGl0eUV2ZW50KTogUHJpbnRzIGFjY2Vzc2liaWxpdHkgZXZlbnRzLiBUaGlzCisgICAgICAg
IGZ1bmN0aW9uIHdhcyBtb3ZlZCBmcm9tIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcC4K
KyAgICAgICAgKFdUUjo6YXhPYmplY3RFdmVudExpc3RlbmVyKTogQ2FsbGJhY2sgZm9yIHNpZ25h
bHMuIFRoaXMgZnVuY3Rpb24gd2FzCisgICAgICAgIG1vdmVkIGZyb20gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJBdGsuY3BwLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICBJbml0
aWFsaXplIGVsZW1lbnQgYW5kIGZ1bmN0aW9uIGNhbGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6fkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyBoYW5kbGVyIGZyb20gSGFzaE1hcCBhbmQgZGlzY29u
bmVjdHMgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOiBTZXRzCisgICAg
ICAgIGxvZ2dpbmcgbW9kZSBhbmQgY29ubmVjdHMgY2FsbGJhY2tzLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjayk6CisgICAgICAgIFNldHMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBhbmQgY29u
bmVjdHMgY2FsbGJhY2sgdG8gc2lnbmFscy4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXI6OnJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KToKKyAgICAgICAgUmVtb3ZlcyB0aGUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZyb20gSGFzaE1h
cC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNvbm5l
Y3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKToKKyAgICAgICAgQ29ubmVjdHMgYXhPYmplY3RFdmVu
dExpc3RlbmVyIHRvIEFUSyBzaWduYWxzLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MpOgorICAg
ICAgICBEaXNjb25uZWN0cyBjYWxsYmFjay4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oOiBB
ZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNy
ZWF0ZSk6IENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UKKyAgICAgICAgb2YgQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyOjpzZXRQbGF0Zm9ybUVsZW1lbnQpOiBTZXRzIHRoZQorICAgICAgICBlbGVtZW50
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6cGxhdGZv
cm1FbGVtZW50KTogR2V0cyB0aGUKKyAgICAgICAgZWxlbWVudC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6Om5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJh
Y2spOgorICAgICAgICBHZXRzIHRoZSBub3RpZmljYXRpb24gY2FsbGJhY2suCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0
dHJpYnV0ZVZhbHVlKTogUmV0dXJucyBmYWxzZSBpbgorICAgICAgICBjYXNlIG9mIGFyaWEtaW52
YWxpZCBhbmQgZW1wdHkgdmFsdWUuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKTogQ3JlYXRlcworICAgICAgICBub3RpZmljYXRp
b24gaGFuZGxlciwgc2V0IHRoZSBwbGF0Zm9ybSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9u
CisgICAgICAgIGNhbGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZXMgdGhlCisgICAgICAgIG5vdGlm
aWNhdGlvbiBoYW5kbGVyLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRr
LmNwcC4KKworMjAxMy0wOS0xMiAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcu
Y29tPgorCiAgICAgICAgIFJFR1JFU1NJT04ocjE1NDc4MSk6IGFjY2Vzc2liaWxpdHkvbm90aWZp
Y2F0aW9uLWxpc3RlbmVycy5odG1sIGlzIGZhaWxpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDY2OQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFr
ZUxpc3RzLnR4dAppbmRleCAwN2I2NDdiODBjMjQ4OGIxMjk0MjcxMGFiNTg4ZmMzZjIwZTIzNGRi
Li41NTBmOGRmZWFmOTNjNTNkZWQ2ODdmN2M1YzIyMGU4NmQ4NmY1NTYzIDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKQEAgLTI0LDYgKzI0LDcgQEAgc2V0KFdlYktpdFRlc3RS
dW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfQog
ICAgICR7V0VCS0lUX1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZQogICAgICR7V0VCS0lU
X1RFU1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncworICAgICR7V0VCS0lUX1RF
U1RSVU5ORVJfRElSfS9JbmplY3RlZEJ1bmRsZS9hdGsKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke1dF
QkNPUkVfRElSfS9lZGl0aW5nCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dO
VW1ha2VmaWxlLmFtIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQppbmRl
eCA3MGI0YWFlY2FmZDExOTVmMGFjYmMwZTZmYjE4YTNmMTBiMjUyYThmLi44N2NlYjYxN2MyYjI5
ZTE2MWY0YTUyMTIyNmRlZThjNzUyNTA3NjEzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFr
ZWZpbGUuYW0KQEAgLTk0LDYgKzk0LDggQEAgTGlicmFyaWVzX2xpYlRlc3RSdW5uZXJJbmplY3Rl
ZEJ1bmRsZV9sYV9TT1VSQ0VTID0gXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjdGl2YXRlRm9udHMuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsuY3BwIFwKKwlU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAgXAorCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmggXAogCVRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0pTV3JhcHBhYmxlLmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvQmluZGluZ3MvSlNXcmFwcGVyLmNwcCBcCkBAIC0xMzMsNiArMTM1LDcgQEAgTGlicmFy
aWVzX2xpYlRlc3RSdW5uZXJJbmplY3RlZEJ1bmRsZV9sYV9DUFBGTEFHUyA9IFwKIAktSSQoc3Jj
ZGlyKS9Ub29scy9XZWJLaXRUZXN0UnVubmVyIFwKIAktSSQoc3JjZGlyKS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlIFwKIAktSSQoc3JjZGlyKS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzIFwKKwktSSQoc3JjZGlyKS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ayBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcyBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvSW5q
ZWN0ZWRCdW5kbGUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIv
aW5jbHVkZSBcCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCmluZGV4IDIxMmU5OTEx
MTEzYzA3OWNhOTdiYzcyMjgyN2JmYjg1ZDM0MTFkNTguLmRiOGFhYzIxOTA2NjI2NjAzYzA5YWEy
YjIwNGY2MjY3Y2QzZGZmZmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCkBA
IC00NCwxNCArNDQsNiBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlDb250cm9sbGVyPiBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6Y3JlYXRlKCkKIH0KIAogQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkKLSNpZiBQTEFURk9STShHVEspIHx8IFBMQVRG
T1JNKEVGTCkKLSAgICA6IG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKDApCi0gICAgLCBtX2ZvY3Vz
RXZlbnRMaXN0ZW5lcklkKDApCi0gICAgLCBtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVu
ZXJJZCgwKQotICAgICwgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKDApCi0gICAgLCBtX3By
b3BlcnR5Q2hhbmdlZExpc3RlbmVySWQoMCkKLSAgICAsIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCgwKQotI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApp
bmRleCAyNDdkZTM0MjA2MWVhYWJlZjM4MDdiMjVkMDI2Njc4NzI5OTJhYmIzLi4zMzAyODdkMWFk
MTQ5Yjk5ZDJhNTJjMDUxMThjZDE0NGI3M2Y3YzIzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5oCkBAIC0zMyw2ICszMyw5IEBACiAjaWYgUExBVEZPUk0oV0lOKQogI2luY2x1ZGUgPHdp
bmRvd3MuaD4KICNlbmRpZgorI2lmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYg
SEFWRShBQ0NFU1NJQklMSVRZKSkKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlckF0ay5oIgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXVFIgewogICAgIApAQCAtNjgsMTMg
KzcxLDggQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9n
bG9iYWxOb3RpZmljYXRpb25IYW5kbGVyOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKEVGTCkKLSAgICB1bnNpZ25lZCBtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZDsKLSAg
ICB1bnNpZ25lZCBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkOwotICAgIHVuc2lnbmVkIG1fYWN0aXZl
RGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkOwotICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5DaGFu
Z2VkTGlzdGVuZXJJZDsKLSAgICB1bnNpZ25lZCBtX3Byb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQ7
Ci0gICAgdW5zaWduZWQgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkOworI2lmIFBMQVRG
T1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkKKyAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0
aW9uSGFuZGxlcjsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAppbmRl
eCBiYjFiZGU1ZDM1YWJmZTdjZjgzMTc3MzNmMjU2YmY0MTg2YTE1NTlhLi45M2Y3ZDA5MmZjNmI4
OWFkODRiMjk0NWUxMmYxMzFiYjdjNDdlYmI2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQu
aApAQCAtNTAsNiArNTAsNyBAQCB0eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCogUGxhdGZvcm1V
SUVsZW1lbnQ7CiAKIHR5cGVkZWYgQ09NUHRyPElBY2Nlc3NpYmxlPiBQbGF0Zm9ybVVJRWxlbWVu
dDsKICNlbGlmIFBMQVRGT1JNKEdUSykgfHwgKFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJ
QklMSVRZKSkKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5o
IgogI2luY2x1ZGUgPGF0ay9hdGsuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+
CiB0eXBlZGVmIEdSZWZQdHI8QXRrT2JqZWN0PiBQbGF0Zm9ybVVJRWxlbWVudDsKQEAgLTI2Miw2
ICsyNjMsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldENoaWxkcmVuKFZlY3RvcjxSZWZQdHI8
QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gPiYpOwogICAgIHZvaWQgZ2V0Q2hpbGRyZW5XaXRoUmFu
Z2UoVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiA+JiwgdW5zaWduZWQgbG9j
YXRpb24sIHVuc2lnbmVkIGxlbmd0aCk7CiAjZW5kaWYKKworI2lmIFBMQVRGT1JNKEdUSykgfHwg
KFBMQVRGT1JNKEVGTCkgJiYgSEFWRShBQ0NFU1NJQklMSVRZKSkKKyAgICBSZWZQdHI8QWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI+IG1fbm90aWZpY2F0aW9uSGFuZGxlcjsKKyNlbmRp
ZgogfTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJBdGsu
Y3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdGsuY3BwCmluZGV4IDNiNThjMGRhMDMzOGI0NTY2NWVhOTU3YjRjNmJm
OWQ4ZjBhMjQwNDQuLjc4OGM5NWYxMGE5NDM0YjlmYTUxYzNkMmJjMmJkZDA2NGJkMGQ5NjkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKQEAgLTM5LDYz
ICszOSw2IEBACiAKIG5hbWVzcGFjZSBXVFIgewogCi1zdGF0aWMgdm9pZCBwcmludEFjY2Vzc2li
aWxpdHlFdmVudChBdGtPYmplY3QqIGFjY2Vzc2libGUsIGNvbnN0IGdjaGFyKiBzaWduYWxOYW1l
LCBjb25zdCBnY2hhciogc2lnbmFsVmFsdWUpCi17Ci0gICAgLy8gRG8gbm90IGhhbmRsZSBzdGF0
ZS1jaGFuZ2U6ZGVmdW5jdCBzaWduYWxzLCBhcyB0aGUgQXRrT2JqZWN0Ci0gICAgLy8gYXNzb2Np
YXRlZCB0byB0aGVtIHdpbGwgbm90IGJlIHZhbGlkIGF0IHRoaXMgcG9pbnQgYWxyZWFkeS4KLSAg
ICBpZiAoIXNpZ25hbE5hbWUgfHwgIWdfc3RyY21wMChzaWduYWxOYW1lLCAic3RhdGUtY2hhbmdl
OmRlZnVuY3QiKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFB
VEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zdCBn
Y2hhciogb2JqZWN0TmFtZSA9IGF0a19vYmplY3RfZ2V0X25hbWUoYWNjZXNzaWJsZSk7Ci0gICAg
QXRrUm9sZSBvYmplY3RSb2xlID0gYXRrX29iamVjdF9nZXRfcm9sZShhY2Nlc3NpYmxlKTsKLQot
ICAgIC8vIFRyeSB0byBhbHdheXMgcHJvdmlkZSBhIG5hbWUgdG8gYmUgbG9nZ2VkIGZvciB0aGUg
b2JqZWN0LgotICAgIGlmICghb2JqZWN0TmFtZSB8fCAqb2JqZWN0TmFtZSA9PSAnXDAnKQotICAg
ICAgICBvYmplY3ROYW1lID0gIihObyBuYW1lKSI7Ci0KLSAgICBHT3duUHRyPGdjaGFyPiBzaWdu
YWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0cmR1cF9wcmludGYoIiVzID0gJXMiLCBz
aWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1cChzaWduYWxOYW1lKSk7Ci0gICAgR093
blB0cjxnY2hhcj4gYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nKGdfc3RyZHVwX3ByaW50ZigiQWNj
ZXNzaWJpbGl0eSBvYmplY3QgZW1pdHRlZCBcIiVzXCIgLyBOYW1lOiBcIiVzXCIgLyBSb2xlOiAl
ZFxuIiwgc2lnbmFsTmFtZUFuZFZhbHVlLmdldCgpLCBvYmplY3ROYW1lLCBvYmplY3RSb2xlKSk7
Ci0gICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLm91dHB1dFRleHQoU3RyaW5nOjpmcm9tVVRG
OChhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcuZ2V0KCkpKTsKLX0KLQotc3RhdGljIGdib29sZWFu
IGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihHU2lnbmFsSW52b2NhdGlvbkhpbnQgKnNpZ25hbEhpbnQs
IGd1aW50IG51bVBhcmFtVmFsdWVzLCBjb25zdCBHVmFsdWUgKnBhcmFtVmFsdWVzLCBncG9pbnRl
ciBkYXRhKQotewotICAgIC8vIEF0IGxlYXN0IHdlIHNob3VsZCByZWNlaXZlIHRoZSBpbnN0YW5j
ZSBlbWl0dGluZyB0aGUgc2lnbmFsLgotICAgIGlmIChudW1QYXJhbVZhbHVlcyA8IDEpCi0gICAg
ICAgIHJldHVybiBUUlVFOwotCi0gICAgQXRrT2JqZWN0KiBhY2Nlc3NpYmxlID0gQVRLX09CSkVD
VChnX3ZhbHVlX2dldF9vYmplY3QoJnBhcmFtVmFsdWVzWzBdKSk7Ci0gICAgaWYgKCFhY2Nlc3Np
YmxlIHx8ICFBVEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQotICAgICAgICByZXR1cm4gVFJVRTsK
LQotICAgIEdTaWduYWxRdWVyeSBzaWduYWxRdWVyeTsKLSAgICBHT3duUHRyPGdjaGFyPiBzaWdu
YWxOYW1lOwotICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbFZhbHVlOwotCi0gICAgZ19zaWduYWxf
cXVlcnkoc2lnbmFsSGludC0+c2lnbmFsX2lkLCAmc2lnbmFsUXVlcnkpOwotCi0gICAgaWYgKCFn
X3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJzdGF0ZS1jaGFuZ2UiKSkgewotICAg
ICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInN0YXRlLWNoYW5nZTolcyIsIGdf
dmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVl
LnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1
ZXNbMl0pKSk7Ci0gICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9u
YW1lLCAiZm9jdXMtZXZlbnQiKSkgewotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cCgi
Zm9jdXMtZXZlbnQiKSk7Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYo
IiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgfSBlbHNl
IGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hpbGRyZW4tY2hhbmdl
ZCIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJjaGlsZHJlbi1jaGFuZ2Vk
IikpOwotICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFs
dWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21w
MChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKQotICAgICAgICBz
aWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5LWNoYW5nZTolcyIsIGdfcXVh
cmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKLSAgICBlbHNlCi0gICAgICAgIHNp
Z25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lKSk7Ci0KLSAgICBw
cmludEFjY2Vzc2liaWxpdHlFdmVudChhY2Nlc3NpYmxlLCBzaWduYWxOYW1lLmdldCgpLCBzaWdu
YWxWYWx1ZS5nZXQoKSk7Ci0KLSAgICByZXR1cm4gVFJVRTsKLX0KLQogdm9pZCBBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6bG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpCiB7CiAgICAgLy8gRW5zdXJl
IG5vIGNhbGxiYWNrcyBhcmUgY29ubmVjdGVkIGJlZm9yZS4KQEAgLTEwNSwxMyArNDgsOSBAQCB2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKICAg
ICAvLyB0aGUgcm9vdCBhY2Nlc3NpYmxlIG9iamVjdCwgd2hpY2ggd2lsbCBjcmVhdGUgdGhlIGZ1
bGwgaGllcmFyY2h5LgogICAgIHJvb3RFbGVtZW50KCk7CiAKLSAgICAvLyBBZGQgZ2xvYmFsIGxp
c3RlbmVycyBmb3IgQXRrT2JqZWN0J3Mgc2lnbmFscy4KLSAgICBtX3N0YXRlQ2hhbmdlTGlzdGVu
ZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5l
ciwgIkFUSzpBdGtPYmplY3Q6c3RhdGUtY2hhbmdlIik7Ci0gICAgbV9mb2N1c0V2ZW50TGlzdGVu
ZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5l
ciwgIkFUSzpBdGtPYmplY3Q6Zm9jdXMtZXZlbnQiKTsKLSAgICBtX2FjdGl2ZURlc2NlbmRhbnRD
aGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0
RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6YWN0aXZlLWRlc2NlbmRhbnQtY2hhbmdlZCIp
OwotICAgIG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Y2hpbGRyZW4t
Y2hhbmdlZCIpOwotICAgIG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xv
YmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6
cHJvcGVydHktY2hhbmdlIik7Ci0gICAgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0g
YXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRL
OkF0a09iamVjdDp2aXNpYmxlLWRhdGEtY2hhbmdlZCIpOworICAgIGlmIChtX2dsb2JhbE5vdGlm
aWNhdGlvbkhhbmRsZXIpCisgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjcmVhdGUoKTsKKyAgICBtX2dsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXItPmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKIAogICAgIC8vIEVu
c3VyZSB0aGUgQXRrIGludGVyZmFjZSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlCiAg
ICAgLy8gdGhlIEF0a0RvY3VtZW50IHNpZ25hbCBoYW5kbGVycyBiZWxvdyB3b24ndCBnZXQgcmVn
aXN0ZXJlZC4KQEAgLTEyMywzMSArNjIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7Ci0gICAgLy8gQXRrT2JqZWN0IHNpZ25hbHMu
Ci0gICAgaWYgKG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVf
Z2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKTsKLSAgICAgICAg
bV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9mb2N1c0V2ZW50
TGlzdGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lciht
X2ZvY3VzRXZlbnRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCA9
IDA7Ci0gICAgfQotICAgIGlmIChtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCkg
ewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2FjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5n
ZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVu
ZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2NoaWxk
cmVuQ2hhbmdlZExpc3RlbmVySWQpOwotICAgICAgICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVy
SWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKSB7Ci0g
ICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fcHJvcGVydHlDaGFuZ2Vk
TGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci0g
ICAgfQotICAgIGlmIChtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQpIHsKLSAgICAgICAg
YXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0
ZW5lcklkKTsKLSAgICAgICAgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKLSAg
ICB9CisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gMDsKIH0KIAogc3RhdGljIEF0
a09iamVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtPYmplY3QqIHBhcmVudCwgY29uc3QgY2hhciog
aWQpCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlckF0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGYzMWU3Yzg0ZmNjN2Y4ZjI1MDhjZGJlOGM3NTM5Zjlm
M2VjMmE1NwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcApAQCAt
MCwwICsxLDI3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9u
aWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgiCisKKyNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1
ZGUgIkpTV3JhcHBlci5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRs
ZVBhZ2VQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKworbmFtZXNwYWNl
IHsKKwordHlwZWRlZiBIYXNoTWFwPEF0a09iamVjdCosIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKj4gTm90aWZpY2F0aW9uSGFuZGxlcnNNYXA7CisKK3Vuc2lnbmVkIHN0YXRlQ2hh
bmdlTGlzdGVuZXJJZCA9IDA7Cit1bnNpZ25lZCBmb2N1c0V2ZW50TGlzdGVuZXJJZCA9IDA7Cit1
bnNpZ25lZCBhY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSAwOwordW5zaWduZWQg
Y2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Cit1bnNpZ25lZCBwcm9wZXJ0eUNoYW5nZWRM
aXN0ZW5lcklkID0gMDsKK3Vuc2lnbmVkIHZpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSAw
OworTm90aWZpY2F0aW9uSGFuZGxlcnNNYXAgbm90aWZpY2F0aW9uSGFuZGxlcnM7CitBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlciogZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IDA7
Citib29sIGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzID0gZmFsc2U7CisKK3ZvaWQgcHJpbnRB
Y2Nlc3NpYmlsaXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBjaGFyKiBzaWdu
YWxOYW1lLCBjb25zdCBjaGFyKiBzaWduYWxWYWx1ZSkKK3sKKyAgICAvLyBEbyBub3QgaGFuZGxl
IHN0YXRlLWNoYW5nZTpkZWZ1bmN0IHNpZ25hbHMsIGFzIHRoZSBBdGtPYmplY3QKKyAgICAvLyBh
c3NvY2lhdGVkIHRvIHRoZW0gd2lsbCBub3QgYmUgdmFsaWQgYXQgdGhpcyBwb2ludCBhbHJlYWR5
LgorICAgIGlmICghc2lnbmFsTmFtZSB8fCAhZ19zdHJjbXAwKHNpZ25hbE5hbWUsICJzdGF0ZS1j
aGFuZ2U6ZGVmdW5jdCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWFjY2Vzc2libGUg
fHwgIUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNv
bnN0IGNoYXIqIG9iamVjdE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1lKGFjY2Vzc2libGUpOwor
ICAgIEF0a1JvbGUgb2JqZWN0Um9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoYWNjZXNzaWJsZSk7
CisKKyAgICAvLyBUcnkgdG8gYWx3YXlzIHByb3ZpZGUgYSBuYW1lIHRvIGJlIGxvZ2dlZCBmb3Ig
dGhlIG9iamVjdC4KKyAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5hbWUgPT0gJ1wwJykK
KyAgICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOworCisgICAgR093blB0cjxjaGFyPiBz
aWduYWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0cmR1cF9wcmludGYoIiVzID0gJXMi
LCBzaWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1cChzaWduYWxOYW1lKSk7CisgICAg
R093blB0cjxjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCJB
Y2Nlc3NpYmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAvIE5hbWU6IFwiJXNcIiAvIFJvbGU6
ICVkXG4iLCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9iamVjdE5hbWUsIG9iamVjdFJvbGUp
KTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0cHV0VGV4dChTdHJpbmc6OmZyb21V
VEY4KGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZy5nZXQoKSkpOworfQorCitnYm9vbGVhbiBheE9i
amVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25IaW50KiBzaWduYWxIaW50LCB1bnNp
Z25lZCBudW1QYXJhbVZhbHVlcywgY29uc3QgR1ZhbHVlKiBwYXJhbVZhbHVlcywgZ3BvaW50ZXIg
ZGF0YSkKK3sKKyAgICAvLyBBdCBsZWFzdCB3ZSBzaG91bGQgcmVjZWl2ZSB0aGUgaW5zdGFuY2Ug
ZW1pdHRpbmcgdGhlIHNpZ25hbC4KKyAgICBpZiAoIW51bVBhcmFtVmFsdWVzKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIEF0a09iamVjdCogYWNjZXNzaWJsZSA9IEFUS19PQkpFQ1QoZ192
YWx1ZV9nZXRfb2JqZWN0KCZwYXJhbVZhbHVlc1swXSkpOworICAgIGlmICghYWNjZXNzaWJsZSB8
fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICBHU2lnbmFsUXVlcnkgc2lnbmFsUXVlcnk7CisgICAgR093blB0cjxjaGFyPiBzaWduYWxOYW1l
OworICAgIEdPd25QdHI8Y2hhcj4gc2lnbmFsVmFsdWU7CisgICAgU3RyaW5nIG5vdGlmaWNhdGlv
bk5hbWU7CisKKyAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWdu
YWxRdWVyeSk7CisKKyAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwg
InN0YXRlLWNoYW5nZSIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50
Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkp
KTsKKyAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVl
X2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKKyAgICAgICAgaWYgKCFnX3N0cmNtcDAo
Z192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJpbnZhbGlkLWVudHJ5IikpCisg
ICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkFYSW52YWxpZFN0YXR1c0NoYW5nZWQiOwor
ICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3Vz
LWV2ZW50IikpIHsKKyAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50
IikpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFs
dWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzFdKSkpOworICAgIH0gZWxzZSBpZiAoIWdfc3Ry
Y21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgeworICAg
ICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cCgiY2hpbGRyZW4tY2hhbmdlZCIpKTsKKyAgICAg
ICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91aW50
KCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVl
cnkuc2lnbmFsX25hbWUsICJwcm9wZXJ0eS1jaGFuZ2UiKSkKKyAgICAgICAgc2lnbmFsTmFtZS5z
ZXQoZ19zdHJkdXBfcHJpbnRmKCJwcm9wZXJ0eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmlu
ZyhzaWduYWxIaW50LT5kZXRhaWwpKSk7CisgICAgZWxzZQorICAgICAgICBzaWduYWxOYW1lLnNl
dChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSkpOworCisgICAgaWYgKGxvZ2dpbmdB
Y2Nlc3NpYmlsaXR5RXZlbnRzKQorICAgICAgICBwcmludEFjY2Vzc2liaWxpdHlFdmVudChhY2Nl
c3NpYmxlLCBzaWduYWxOYW1lLmdldCgpLCBzaWduYWxWYWx1ZS5nZXQoKSk7CisKKyNpZiBQTEFU
Rk9STShHVEspCisgICAgV0tCdW5kbGVQYWdlUmVmIHBhZ2UgPSBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkucGFnZSgpLT5wYWdlKCk7CisgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWluRnJhbWUgPSBX
S0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUocGFnZSk7CisgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4
dCA9IFdLQnVuZGxlRnJhbWVHZXRKYXZhU2NyaXB0Q29udGV4dChtYWluRnJhbWUpOworI2Vsc2UK
KyAgICBKU0NvbnRleHRSZWYganNDb250ZXh0ID0gMDsKKyNlbmRpZgorICAgIGlmICghanNDb250
ZXh0KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChub3RpZmljYXRpb25OYW1lLmxl
bmd0aCgpKSB7CisgICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlv
bkV2ZW50TmFtZShBZG9wdCwgSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcobm90aWZpY2F0
aW9uTmFtZS51dGY4KCkuZGF0YSgpKSk7CisgICAgICAgIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9u
TmFtZUFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBqc05vdGlmaWNhdGlv
bkV2ZW50TmFtZS5nZXQoKSk7CisgICAgICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFwOjppdGVy
YXRvciBlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZp
bmQoYWNjZXNzaWJsZSk7CisgICAgICAgIGlmIChlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlciAh
PSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgLy8gTGlzdGVuZXIg
Zm9yIG9uZSBlbGVtZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24g
bmFtZS4KKyAgICAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBjb25z
dF9jYXN0PEpTT2JqZWN0UmVmPihlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlci0+dmFsdWUtPm5v
dGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDEsICZub3RpZmljYXRpb25OYW1lQXJn
dW1lbnQsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhh
bmRsZXIpIHsKKyAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhlIGVsZW1l
bnQgYW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1syXTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9IHRvSlMo
anNDb250ZXh0LCBXVEY6OmdldFB0cihXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0
ZShhY2Nlc3NpYmxlKSkpOworICAgICAgICAgICAgYXJndW1lbnRzWzFdID0gbm90aWZpY2F0aW9u
TmFtZUFyZ3VtZW50OworICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0NvbnRl
eHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPm5v
dGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDIsIGFyZ3VtZW50cywgMCk7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UKKwor
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyKCkKKyAgICA6IG1fcGxhdGZvcm1FbGVtZW50KDApCisgICAgLCBtX25vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2soMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXI6On5BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAgcmVt
b3ZlQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBkaXNjb25uZWN0QWNj
ZXNzaWJpbGl0eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKK3sKKyAgICBjb25uZWN0QWNjZXNz
aWJpbGl0eUNhbGxiYWNrcygpOworICAgIGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzID0gdHJ1
ZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90aWZp
Y2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2Fs
bGJhY2spCit7CisgICAgaWYgKCFub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSB7CisgICAg
ICAgIHJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgICAgIGRp
c2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBub3RpZmljYXRpb25GdW5j
dGlvbkNhbGxiYWNrOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdLQnVuZGxlUGFnZVJlZiBw
YWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVu
ZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOwor
ICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENv
bnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4dCA9IDA7
CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29u
bmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKTsKKworICAgIEpTVmFsdWVQcm90ZWN0KGpzQ29u
dGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAvLyBDaGVjayBpZiB0
aGlzIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBlbGVtZW50
LgorICAgIGlmIChtX3BsYXRmb3JtRWxlbWVudCkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5k
bGVyc01hcDo6aXRlcmF0b3IgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmljYXRp
b25IYW5kbGVycy5maW5kKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpKTsKKyAgICAgICAgaWYgKGN1
cnJlbnROb3RpZmljYXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7
CisgICAgICAgICAgICBBU1NFUlQoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5w
bGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4
dCwgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlv
bkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGN1
cnJlbnROb3RpZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+cGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkp
OworICAgICAgICB9CisgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLmFkZChtX3BsYXRmb3Jt
RWxlbWVudC5nZXQoKSwgdGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGdsb2JhbE5v
dGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4
dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
aygpKTsKKyAgICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IHRoaXM7CisgICAgfQor
fQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpyZW1vdmVBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdL
QnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFn
ZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFp
bkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1l
R2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVm
IGpzQ29udGV4dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPT0gdGhpcykgeworICAg
ICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxl
ci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAgICAgZ2xvYmFsTm90aWZp
Y2F0aW9uSGFuZGxlciA9IDA7CisgICAgfSBlbHNlIGlmIChtX3BsYXRmb3JtRWxlbWVudC5nZXQo
KSkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyc01hcDo6aXRlcmF0b3IgcmVtb3ZlTm90
aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobV9wbGF0Zm9ybUVs
ZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlciAhPSBu
b3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVj
dChqc0NvbnRleHQsIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3RpZmljYXRp
b25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMu
cmVtb3ZlKHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgICAgICB9CisgICAgfQorfQor
Cit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjb25uZWN0QWNjZXNzaWJp
bGl0eUNhbGxiYWNrcygpCit7CisgICAgLy8gRW5zdXJlIG5vIGNhbGxiYWNrcyBhcmUgY29ubmVj
dGVkIGJlZm9yZS4KKyAgICBpZiAoIWRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFkZCBnbG9iYWwgbGlzdGVuZXJzIGZvciBBdGtP
YmplY3QncyBzaWduYWxzLgorICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xv
YmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6
c3RhdGUtY2hhbmdlIik7CisgICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2Jh
bF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OmZv
Y3VzLWV2ZW50Iik7CisgICAgYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkID0gYXRr
X2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0
a09iamVjdDphY3RpdmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7CisgICAgY2hpbGRyZW5DaGFuZ2Vk
TGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Y2hpbGRyZW4tY2hhbmdlZCIpOworICAgIHByb3BlcnR5
Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVj
dEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5nZSIpOworICAgIHZp
c2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5l
cihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnZpc2libGUtZGF0YS1jaGFu
Z2VkIik7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpc2Nv
bm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCkKK3sKKyAgICAvLyBPbmx5IGRpc2Nvbm5lY3Qg
aWYgbG9nZ2luZyBpcyBvZmYgYW5kIHRoZXJlIGlzIG5vIG5vdGlmaWNhdGlvbiBoYW5kbGVyLgor
ICAgIGlmIChsb2dnaW5nQWNjZXNzaWJpbGl0eUV2ZW50cyB8fCAhbm90aWZpY2F0aW9uSGFuZGxl
cnMuaXNFbXB0eSgpIHx8IGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIC8vIEF0a09iamVjdCBzaWduYWxzLgorICAgIGlmIChzdGF0ZUNoYW5n
ZUxpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIo
c3RhdGVDaGFuZ2VMaXN0ZW5lcklkKTsKKyAgICAgICAgc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0g
MDsKKyAgICB9CisgICAgaWYgKGZvY3VzRXZlbnRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19y
ZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGZvY3VzRXZlbnRMaXN0ZW5lcklkKTsKKyAgICAg
ICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBpZiAoYWN0aXZlRGVzY2Vu
ZGFudENoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAgICAgIGFj
dGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CisgICAgfQorICAgIGlmIChjaGls
ZHJlbkNoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOworICAgICAgICBjaGlsZHJlbkNo
YW5nZWRMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5Q2hhbmdlZExpc3Rl
bmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIocHJvcGVy
dHlDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAgICAgIHByb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQg
PSAwOworICAgIH0KKyAgICBpZiAodmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCkgeworICAg
ICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcih2aXNpYmxlRGF0YUNoYW5nZWRM
aXN0ZW5lcklkKTsKKyAgICAgICAgdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZDc5ZGVjMmY5OWM5ZjhiOTU4MjQ1N2Y0MzNkNGRiODNmMTNmMTAxMAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgKQEAgLTAsMCArMSw1NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19o
CisjZGVmaW5lIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrX2gKKworI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8YXRrL2F0ay5oPgor
I2luY2x1ZGUgPGF0ay9hdGtvYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0
ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKKyAgICB9CisgICAgfkFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUVs
ZW1lbnQoR1JlZlB0cjxBdGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRmb3JtRWxl
bWVudCA9IHBsYXRmb3JtRWxlbWVudDsgfQorICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBwbGF0Zm9y
bUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRWxlbWVudDsgfQorICAgIHZvaWQg
c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmKTsKKyAgICBKU1ZhbHVl
UmVmIG5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX25vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2s7IH0KKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVu
dHMoKTsKKworcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigp
OworICAgIHZvaWQgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKTsKKyAgICBib29sIGRp
c2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CisgICAgdm9pZCByZW1vdmVBY2Nlc3Np
YmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpOworCisgICAgR1JlZlB0cjxBdGtPYmplY3Q+IG1f
cGxhdGZvcm1FbGVtZW50OworICAgIEpTVmFsdWVSZWYgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNh
bGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnRBdGsuY3BwCmluZGV4IDRhNGVlMDdjOTk3OTZlYTFhNWRjZDFhNzg4ZWVlZDZlZDgz
MDVhMWYuLjlhYjU3ZDY4YWNiNDEyYzJmYzZiZDJlNTk2MDQ4ZjhkNDNkODc2MDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC01NjgsNiArNTY4LDEz
IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzdHJp
bmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlCiAgICAgICAgIHJldHVybiBKU1N0cmluZ0NyZWF0
ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlID0gZ2V0
QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSksIGF0a0F0
dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBJbiBjYXNlIG9mICdhcmlhLWlu
dmFsaWQnIHdoZW4gdGhlIGF0dHJpYnV0ZSBlbXB0eSBvciBoYXMgImZhbHNlIiBmb3IgQVRLCisg
ICAgLy8gYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhLWltcGxlbWVu
dGF0aW9uLyNtYXBwaW5nIGF0dHJpYnV0ZQorICAgIC8vIGlzIG5vdCBtYXBwZWQgYnV0IGxheW91
dCB0ZXN0cyB3aWxsIGV4cGVjdCAnZmFsc2UnLgorICAgIGlmIChhdHRyaWJ1dGVWYWx1ZS5pc0Vt
cHR5KCkgJiYgYXRrQXR0cmlidXRlTmFtZSA9PSAiYXJpYS1pbnZhbGlkIikKKyAgICAgICAgcmV0
dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmYWxzZSIpOworCiAgICAgcmV0dXJu
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0ZVZhbHVlLnV0ZjgoKS5kYXRh
KCkpOwogfQogCkBAIC0xMTA3LDEzICsxMTE0LDI2IEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVm
PiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25DYWxsYmFj
aykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgaWYgKCFmdW5jdGlvbkNhbGxiYWNr
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPbmx5IG9uZSBub3RpZmljYXRpb24g
bGlzdGVuZXIgcGVyIGVsZW1lbnQuCisgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxlcikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0ZSgpOworICAgIG1fbm90aWZpY2F0aW9u
SGFuZGxlci0+c2V0UGxhdGZvcm1FbGVtZW50KHBsYXRmb3JtVUlFbGVtZW50KCkpOworICAgIG1f
bm90aWZpY2F0aW9uSGFuZGxlci0+c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhmdW5j
dGlvbkNhbGxiYWNrKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKIHsKLSAgICAvLyBGSVhN
RTogaW1wbGVtZW50CisgICAgLy8gUHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSB0cnlpbmcgdG8g
cmVtb3ZlIGEgbGlzdGVuZXIgdGhhdCdzIGFscmVhZHkgcmVtb3ZlZC4KKyAgICBBU1NFUlQobV9u
b3RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSAwOworCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
UGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDUwYWVmY2EwNzY1NWI3YzEzNWY4YTg2NTc5MDU1NWJmMDcyZjc4YjAuLjlkMjZk
ODkzOThmYzJmNjcyN2M0YjM3Y2JkYTdjM2EzYjJmZTUxNzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsNiArNzAsNyBAQCBhZGRfZGVmaW5pdGlvbnMo
LURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9mb250cyIK
IGlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKICAgICBsaXN0KEFQUEVORCBXZWJLaXRUZXN0UnVu
bmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUwogICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lO
SkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAorICAg
ICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcAogICAgICAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3Bw
CiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9ESVJFQ1RP
UklFUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDRjZjgxZGVjOTUwMDIzY2QzYmJhMWNjYTc5M2JhZTBiN2ViMTkzYmYuLmU3
NDgzZmNhMWEyMzNjM2IzNzVhMDY5NjM2ZjAzOWJjZTY4M2YyMWEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxMy0wOS0xMiAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1bmcuY29t
PgorCisgICAgICAgIFtBVEtdIE1pc3NpbmcgV1RSIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFk
ZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MjEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBleHBlY3RhdGlvbiBvZiBh
cmlhLWludmFsaWQuaHRtbCB0ZXN0LCB3aGljaCB3YXMgdGltaW5nIG91dAorICAgICAgICBiZWZv
cmUgdGhpcyBmaXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlv
bnM6IFJlbW92ZWQgYXJpYS1pbnZhbGlkLmh0bWwgYmVjYXVzZQorICAgICAgICBpdCBub3cgcGFz
c2VzIHdpdGggdGhpcyBmaXguCisKIDIwMTMtMDktMTIgIFNhbXVlbCBXaGl0ZSAgPHNhbXVlbF93
aGl0ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IFNlbGYtcmVmZXJlbmNpbmcgYXJpYS1sYWJl
bGxlZGJ5IG9ubHkgdXNlcyBjb250ZW50cy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13
azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBiOGM1MjU3ZWU3ZDNmYzc3NjY0YTNmMjZkODA0NWI1
N2Y0YzBiYTJjLi5lMDMxNzI5ZGZjYjIwZDI4ZjdhNzRjMWU5NTYxOTg3NDZiNTNmYzFkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0YXRpb25zCkBAIC00OTks
OSArNDk5LDYgQEAgQnVnKEdUSykgYW5pbWF0aW9ucy9jb21iby10cmFuc2Zvcm0tdHJhbnNsYXRl
K3NjYWxlLmh0bWwgWyBGYWlsdXJlIF0KIEJ1ZyhHVEspIGFuaW1hdGlvbnMvcGxheS1zdGF0ZS1z
dXNwZW5kLmh0bWwgWyBGYWlsdXJlIF0KIEJ1ZyhHVEspIGFuaW1hdGlvbnMvc3VzcGVuZC1yZXN1
bWUtYW5pbWF0aW9uLmh0bWwgWyBGYWlsdXJlIF0KIAotIyBbR1RLXSBNaXNzaW5nIFdUUiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphZGROb3RpZmljYXRpb25MaXN0ZW5lciBpbXBsZW1lbnRhdGlv
bgotd2Via2l0Lm9yZy9iLzEyMDQyMSBhY2Nlc3NpYmlsaXR5L2FyaWEtaW52YWxpZC5odG1sIFsg
VGltZW91dCBdCi0KICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAjIEVuZCBvZiBU
ZXN0cyBmYWlsaW5nCiAjLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211567</attachid>
            <date>2013-09-13 11:15:59 -0700</date>
            <delta_ts>2013-09-20 06:14:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120421-20130913191557.patch</filename>
            <type>text/plain</type>
            <size>34633</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1Njk3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTc3MTNhODcwZjNlYTg2NWI0MTY0Y2FlZjIxNzQzMmU2
ZjNkMjNlYi4uOWRiNTk4YmQ0NDEwOWNjYTNiODgzNTUxNmI2MWYxY2NhYTA1M2FjOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDEzLTA5LTEzICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0FUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBub3RpZmljYXRpb24g
bGlzdGVuZXIgZm9yIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9yCisgICAgICAgIFdlYktpdFRl
c3RSdW5uZXIuIFRoZSBzaWduYWwgaXMgZ2VuZXJhdGVkIGJ5CisgICAgICAgIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbigpIGFuZCByZWNlaXZlZCBieQorICAgICAgICBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoKS4gYXhPYmplY3RFdmVudExpc3RlbmVyKCkgd2lsbCB0aGVu
IGludm9rZQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKCkgd2l0aCB0aGUgcmVzcGVj
dGl2ZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVy
cyBhcmUgc3RvcmVkIGluIEhhc2hNYXAgaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXJBdGsuY3BwLgorCisgICAgICAgIE1vdmVkIEFUSyBzaWduYWwgaGFuZGxpbmcg
KHByaW50QWNjZXNzaWJpbGl0eUV2ZW50IGFuZAorICAgICAgICBheE9iamVjdEV2ZW50TGlzdGVu
ZXIpIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVkIEluamVjdGVkQnVuZGxl
L2F0ayB0byB0aGUKKyAgICAgICAgaW5jbHVkZSBwYXRoLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmNwcC9oLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBNb3ZlZAorICAgICAgICBsaXN0
ZW5lciBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaDogTW92ZWQKKyAgICAgICAgbGlzdGVuZXIgSURzIHRvIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQgYQorICAgICAgICBub3Rp
ZmljYXRpb24gaGFuZGxlciBmb3IgR1RLKyBhbmQgRUZMLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgTW92ZWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQgYW5kIGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciB0bworICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5j
cHAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmls
aXR5RXZlbnRzKTogTW92ZWQgbGlzdGVuZXIKKyAgICAgICAgSURzIHRvIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBNb3ZlZCBsaXN0ZW5lcgorICAgICAg
ICBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OnByaW50QWNjZXNz
aWJpbGl0eUV2ZW50KTogUHJpbnRzIGFjY2Vzc2liaWxpdHkgZXZlbnRzLiBUaGlzCisgICAgICAg
IGZ1bmN0aW9uIHdhcyBtb3ZlZCBmcm9tIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcC4K
KyAgICAgICAgKFdUUjo6YXhPYmplY3RFdmVudExpc3RlbmVyKTogQ2FsbGJhY2sgZm9yIHNpZ25h
bHMuIFRoaXMgZnVuY3Rpb24gd2FzCisgICAgICAgIG1vdmVkIGZyb20gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJBdGsuY3BwLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICBJbml0
aWFsaXplIGVsZW1lbnQgYW5kIGZ1bmN0aW9uIGNhbGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6fkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyBoYW5kbGVyIGZyb20gSGFzaE1hcCBhbmQgZGlzY29u
bmVjdHMgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOiBTZXRzCisgICAg
ICAgIGxvZ2dpbmcgbW9kZSBhbmQgY29ubmVjdHMgY2FsbGJhY2tzLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjayk6CisgICAgICAgIFNldHMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBhbmQgY29u
bmVjdHMgY2FsbGJhY2sgdG8gc2lnbmFscy4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXI6OnJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KToKKyAgICAgICAgUmVtb3ZlcyB0aGUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZyb20gSGFzaE1h
cC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNvbm5l
Y3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKToKKyAgICAgICAgQ29ubmVjdHMgYXhPYmplY3RFdmVu
dExpc3RlbmVyIHRvIEFUSyBzaWduYWxzLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MpOgorICAg
ICAgICBEaXNjb25uZWN0cyBjYWxsYmFjay4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oOiBB
ZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNy
ZWF0ZSk6IENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UKKyAgICAgICAgb2YgQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyOjpzZXRQbGF0Zm9ybUVsZW1lbnQpOiBTZXRzIHRoZQorICAgICAgICBlbGVtZW50
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6cGxhdGZv
cm1FbGVtZW50KTogR2V0cyB0aGUKKyAgICAgICAgZWxlbWVudC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6Om5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJh
Y2spOgorICAgICAgICBHZXRzIHRoZSBub3RpZmljYXRpb24gY2FsbGJhY2suCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnN0cmluZ0F0
dHJpYnV0ZVZhbHVlKTogUmV0dXJucyBmYWxzZSBpbgorICAgICAgICBjYXNlIG9mIGFyaWEtaW52
YWxpZCBhbmQgZW1wdHkgdmFsdWUuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKTogQ3JlYXRlcworICAgICAgICBub3RpZmljYXRp
b24gaGFuZGxlciwgc2V0IHRoZSBwbGF0Zm9ybSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9u
CisgICAgICAgIGNhbGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpyZW1vdmVOb3RpZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZXMgdGhlCisgICAgICAgIG5vdGlm
aWNhdGlvbiBoYW5kbGVyLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwu
Y21ha2U6CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRr
LmNwcC4KKwogMjAxMy0wOS0xMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgR2l2ZSBhY3Rpb25zIGluIFJhbmdlIGNsYXNzIE5PTl9TSE9VVElOR19OQU1FUwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKaW5kZXggMDdiNjQ3YjgwYzI0ODhiMTI5NDI3
MTBhYjU4OGZjM2YyMGUyMzRkYi4uNTUwZjhkZmVhZjkzYzUzZGVkNjg3ZjdjNWMyMjBlODZkODZm
NTU2MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9DTWFrZUxpc3RzLnR4dAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlzdHMudHh0CkBAIC0yNCw2ICsyNCw3
IEBAIHNldChXZWJLaXRUZXN0UnVubmVyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke1dFQktJ
VF9URVNUUlVOTkVSX0RJUn0KICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRC
dW5kbGUKICAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MKKyAgICAke1dFQktJVF9URVNUUlVOTkVSX0RJUn0vSW5qZWN0ZWRCdW5kbGUvYXRrCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzCiAgICAgJHtXRUJDT1JFX0RJUn0vZWRpdGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
R05VbWFrZWZpbGUuYW0KaW5kZXggNzBiNGFhZWNhZmQxMTk1ZjBhY2JjMGU2ZmIxOGEzZjEwYjI1
MmE4Zi4uODdjZWI2MTdjMmIyOWUxNjFmNGE1MjEyMjZkZWU4Yzc1MjUwNzYxMyAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCkBAIC05NCw2ICs5NCw4IEBAIExpYnJhcmllc19s
aWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfU09VUkNFUyA9IFwKIAlUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBcCiAJVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY3RpdmF0ZUZvbnRzLmggXAogCVRv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyQXRrLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9h
dGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwIFwKKwlUb29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlckF0ay5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0
ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9KU1dyYXBwYWJsZS5oIFwKIAlUb29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0pTV3JhcHBlci5jcHAgXApAQCAtMTMz
LDYgKzEzNSw3IEBAIExpYnJhcmllc19saWJUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfbGFfQ1BQ
RkxBR1MgPSBcCiAJLUkkKHNyY2RpcikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lciBcCiAJLUkkKHNy
Y2RpcikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZSBcCiAJLUkkKHNyY2Rp
cikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncyBcCisJLUkk
KHNyY2RpcikvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvanMgXAogCS1JJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL0luamVjdGVkQnVuZGxlIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJp
dmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUgXApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmNwcAppbmRleCAyMTJlOTkxMTExM2MwNzljYTk3YmM3MjI4MjdiZmI4NWQzNDExZDU4Li5kYjhh
YWMyMTkwNjYyNjYwM2MwOWFhMmIyMDRmNjI2N2NkM2RmZmZlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmNwcApAQCAtNDQsMTQgKzQ0LDYgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcj4gQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmNyZWF0ZSgpCiB9CiAKIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpCi0jaWYgUExB
VEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0gICAgOiBtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJ
ZCgwKQotICAgICwgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCgwKQotICAgICwgbV9hY3RpdmVEZXNj
ZW5kYW50Q2hhbmdlZExpc3RlbmVySWQoMCkKLSAgICAsIG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVu
ZXJJZCgwKQotICAgICwgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKDApCi0gICAgLCBtX3Zp
c2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQoMCkKLSNlbmRpZgogewogfQogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmgKaW5kZXggMjQ3ZGUzNDIwNjFlYWFiZWYzODA3YjI1ZDAyNjY3ODcy
OTkyYWJiMy4uMzMwMjg3ZDFhZDE0OWI5OWQyYTUyYzA1MTE4Y2QxNDRiNzNmN2MyMyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApAQCAtMzMsNiArMzMsOSBAQAogI2lmIFBMQVRGT1JN
KFdJTikKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjZW5kaWYKKyNpZiBQTEFURk9STShHVEspIHx8
IChQTEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkpCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCIKKyNlbmRpZgogCiBuYW1lc3BhY2UgV1RS
IHsKICAgICAKQEAgLTY4LDEzICs3MSw4IEBAIHByaXZhdGU6CiAgICAgUmV0YWluUHRyPE5vdGlm
aWNhdGlvbkhhbmRsZXI+IG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcjsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpCi0gICAgdW5zaWduZWQgbV9zdGF0ZUNo
YW5nZUxpc3RlbmVySWQ7Ci0gICAgdW5zaWduZWQgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZDsKLSAg
ICB1bnNpZ25lZCBtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZDsKLSAgICB1bnNp
Z25lZCBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQ7Ci0gICAgdW5zaWduZWQgbV9wcm9wZXJ0
eUNoYW5nZWRMaXN0ZW5lcklkOwotICAgIHVuc2lnbmVkIG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZDsKKyNpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEhBVkUoQUND
RVNTSUJJTElUWSkpCisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
PiBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXI7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50LmgKaW5kZXggYmIxYmRlNWQzNWFiZmU3Y2Y4MzE3NzMzZjI1NmJmNDE4NmEx
NTU5YS4uOTNmN2QwOTJmYzZiODlhZDg0YjI5NDVlMTJmMTMxYmI3YzQ3ZWJiNiAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgb2Jq
Y19vYmplY3QqIFBsYXRmb3JtVUlFbGVtZW50OwogCiB0eXBlZGVmIENPTVB0cjxJQWNjZXNzaWJs
ZT4gUGxhdGZvcm1VSUVsZW1lbnQ7CiAjZWxpZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShF
RkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkpCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXJBdGsuaCIKICNpbmNsdWRlIDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8d3Rm
L2dvYmplY3QvR1JlZlB0ci5oPgogdHlwZWRlZiBHUmVmUHRyPEF0a09iamVjdD4gUGxhdGZvcm1V
SUVsZW1lbnQ7CkBAIC0yNjIsNiArMjYzLDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBnZXRDaGls
ZHJlbihWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mKTsKICAgICB2b2lk
IGdldENoaWxkcmVuV2l0aFJhbmdlKFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4gPiYsIHVuc2lnbmVkIGxvY2F0aW9uLCB1bnNpZ25lZCBsZW5ndGgpOwogI2VuZGlmCisKKyNp
ZiBQTEFURk9STShHVEspIHx8IChQTEFURk9STShFRkwpICYmIEhBVkUoQUNDRVNTSUJJTElUWSkp
CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyPiBtX25vdGlmaWNh
dGlvbkhhbmRsZXI7CisjZW5kaWYKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlDb250cm9sbGVyQXRrLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcAppbmRleCAzYjU4YzBkYTAz
MzhiNDU2NjVlYTk1N2I0YzZiZjlkOGYwYTI0MDQ0Li5jMTg3NTE1NGVkYzJhNjE3OGY0NjEyMTcw
ODBmYTM1YjE4ZDMwODA3IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXJBdGsuY3BwCkBAIC0zOSw2MyArMzksNiBAQAogCiBuYW1lc3BhY2UgV1RSIHsKIAotc3RhdGlj
IHZvaWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25z
dCBnY2hhciogc2lnbmFsTmFtZSwgY29uc3QgZ2NoYXIqIHNpZ25hbFZhbHVlKQotewotICAgIC8v
IERvIG5vdCBoYW5kbGUgc3RhdGUtY2hhbmdlOmRlZnVuY3Qgc2lnbmFscywgYXMgdGhlIEF0a09i
amVjdAotICAgIC8vIGFzc29jaWF0ZWQgdG8gdGhlbSB3aWxsIG5vdCBiZSB2YWxpZCBhdCB0aGlz
IHBvaW50IGFscmVhZHkuCi0gICAgaWYgKCFzaWduYWxOYW1lIHx8ICFnX3N0cmNtcDAoc2lnbmFs
TmFtZSwgInN0YXRlLWNoYW5nZTpkZWZ1bmN0IikpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
ICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgY29uc3QgZ2NoYXIqIG9iamVjdE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1l
KGFjY2Vzc2libGUpOwotICAgIEF0a1JvbGUgb2JqZWN0Um9sZSA9IGF0a19vYmplY3RfZ2V0X3Jv
bGUoYWNjZXNzaWJsZSk7Ci0KLSAgICAvLyBUcnkgdG8gYWx3YXlzIHByb3ZpZGUgYSBuYW1lIHRv
IGJlIGxvZ2dlZCBmb3IgdGhlIG9iamVjdC4KLSAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVj
dE5hbWUgPT0gJ1wwJykKLSAgICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOwotCi0gICAg
R093blB0cjxnY2hhcj4gc2lnbmFsTmFtZUFuZFZhbHVlKHNpZ25hbFZhbHVlID8gZ19zdHJkdXBf
cHJpbnRmKCIlcyA9ICVzIiwgc2lnbmFsTmFtZSwgc2lnbmFsVmFsdWUpIDogZ19zdHJkdXAoc2ln
bmFsTmFtZSkpOwotICAgIEdPd25QdHI8Z2NoYXI+IGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZyhn
X3N0cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVtaXR0ZWQgXCIlc1wiIC8gTmFt
ZTogXCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRWYWx1ZS5nZXQoKSwgb2JqZWN0
TmFtZSwgb2JqZWN0Um9sZSkpOwotICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRwdXRU
ZXh0KFN0cmluZzo6ZnJvbVVURjgoYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nLmdldCgpKSk7Ci19
Ci0KLXN0YXRpYyBnYm9vbGVhbiBheE9iamVjdEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRp
b25IaW50ICpzaWduYWxIaW50LCBndWludCBudW1QYXJhbVZhbHVlcywgY29uc3QgR1ZhbHVlICpw
YXJhbVZhbHVlcywgZ3BvaW50ZXIgZGF0YSkKLXsKLSAgICAvLyBBdCBsZWFzdCB3ZSBzaG91bGQg
cmVjZWl2ZSB0aGUgaW5zdGFuY2UgZW1pdHRpbmcgdGhlIHNpZ25hbC4KLSAgICBpZiAobnVtUGFy
YW1WYWx1ZXMgPCAxKQotICAgICAgICByZXR1cm4gVFJVRTsKLQotICAgIEF0a09iamVjdCogYWNj
ZXNzaWJsZSA9IEFUS19PQkpFQ1QoZ192YWx1ZV9nZXRfb2JqZWN0KCZwYXJhbVZhbHVlc1swXSkp
OwotICAgIGlmICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKLSAg
ICAgICAgcmV0dXJuIFRSVUU7Ci0KLSAgICBHU2lnbmFsUXVlcnkgc2lnbmFsUXVlcnk7Ci0gICAg
R093blB0cjxnY2hhcj4gc2lnbmFsTmFtZTsKLSAgICBHT3duUHRyPGdjaGFyPiBzaWduYWxWYWx1
ZTsKLQotICAgIGdfc2lnbmFsX3F1ZXJ5KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwgJnNpZ25hbFF1
ZXJ5KTsKLQotICAgIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAic3Rh
dGUtY2hhbmdlIikpIHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJz
dGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkpOwot
ICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0
X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChz
aWduYWxRdWVyeS5zaWduYWxfbmFtZSwgImZvY3VzLWV2ZW50IikpIHsKLSAgICAgICAgc2lnbmFs
TmFtZS5zZXQoZ19zdHJkdXAoImZvY3VzLWV2ZW50IikpOwotICAgICAgICBzaWduYWxWYWx1ZS5z
ZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVz
WzFdKSkpOwotICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFt
ZSwgImNoaWxkcmVuLWNoYW5nZWQiKSkgewotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1
cCgiY2hpbGRyZW4tY2hhbmdlZCIpKTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVw
X3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF91aW50KCZwYXJhbVZhbHVlc1sxXSkpKTsKLSAgICB9
IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJwcm9wZXJ0eS1j
aGFuZ2UiKSkKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJwcm9wZXJ0
eS1jaGFuZ2U6JXMiLCBnX3F1YXJrX3RvX3N0cmluZyhzaWduYWxIaW50LT5kZXRhaWwpKSk7Ci0g
ICAgZWxzZQotICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cChzaWduYWxRdWVyeS5zaWdu
YWxfbmFtZSkpOwotCi0gICAgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQoYWNjZXNzaWJsZSwgc2ln
bmFsTmFtZS5nZXQoKSwgc2lnbmFsVmFsdWUuZ2V0KCkpOwotCi0gICAgcmV0dXJuIFRSVUU7Ci19
Ci0KIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMo
KQogewogICAgIC8vIEVuc3VyZSBubyBjYWxsYmFja3MgYXJlIGNvbm5lY3RlZCBiZWZvcmUuCkBA
IC0xMDUsMTMgKzQ4LDkgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nQWNjZXNz
aWJpbGl0eUV2ZW50cygpCiAgICAgLy8gdGhlIHJvb3QgYWNjZXNzaWJsZSBvYmplY3QsIHdoaWNo
IHdpbGwgY3JlYXRlIHRoZSBmdWxsIGhpZXJhcmNoeS4KICAgICByb290RWxlbWVudCgpOwogCi0g
ICAgLy8gQWRkIGdsb2JhbCBsaXN0ZW5lcnMgZm9yIEF0a09iamVjdCdzIHNpZ25hbHMuCi0gICAg
bV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihh
eE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnN0YXRlLWNoYW5nZSIpOwotICAg
IG1fZm9jdXNFdmVudExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihh
eE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OmZvY3VzLWV2ZW50Iik7Ci0gICAg
bV9hY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVu
dF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OmFjdGl2ZS1k
ZXNjZW5kYW50LWNoYW5nZWQiKTsKLSAgICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQgPSBh
dGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6
QXRrT2JqZWN0OmNoaWxkcmVuLWNoYW5nZWQiKTsKLSAgICBtX3Byb3BlcnR5Q2hhbmdlZExpc3Rl
bmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVu
ZXIsICJBVEs6QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5nZSIpOwotICAgIG1fdmlzaWJsZURhdGFD
aGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0
RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6dmlzaWJsZS1kYXRhLWNoYW5nZWQiKTsKKyAg
ICBpZiAoIW1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlcikKKyAgICAgICAgbV9nbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0
ZSgpOworICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlci0+bG9nQWNjZXNzaWJpbGl0eUV2
ZW50cygpOwogCiAgICAgLy8gRW5zdXJlIHRoZSBBdGsgaW50ZXJmYWNlIHR5cGVzIGFyZSByZWdp
c3RlcmVkLCBvdGhlcndpc2UKICAgICAvLyB0aGUgQXRrRG9jdW1lbnQgc2lnbmFsIGhhbmRsZXJz
IGJlbG93IHdvbid0IGdldCByZWdpc3RlcmVkLgpAQCAtMTIzLDMxICs2Miw3IEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQogCiB2b2lkIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldFRvQ29uc2lzdGVudFN0YXRlKCkKIHsKLSAgICAv
LyBBdGtPYmplY3Qgc2lnbmFscy4KLSAgICBpZiAobV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQpIHsK
LSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV9zdGF0ZUNoYW5nZUxp
c3RlbmVySWQpOwotICAgICAgICBtX3N0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IDA7Ci0gICAgfQot
ICAgIGlmIChtX2ZvY3VzRXZlbnRMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xv
YmFsX2V2ZW50X2xpc3RlbmVyKG1fZm9jdXNFdmVudExpc3RlbmVySWQpOwotICAgICAgICBtX2Zv
Y3VzRXZlbnRMaXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fYWN0aXZlRGVzY2VuZGFu
dENoYW5nZWRMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xp
c3RlbmVyKG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9h
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9j
aGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2
ZW50X2xpc3RlbmVyKG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fY2hp
bGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci0gICAgfQotICAgIGlmIChtX3Byb3BlcnR5Q2hh
bmdlZExpc3RlbmVySWQpIHsKLSAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVu
ZXIobV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9wcm9wZXJ0eUNoYW5n
ZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fdmlzaWJsZURhdGFDaGFuZ2VkTGlz
dGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX3Zp
c2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQpOwotICAgICAgICBtX3Zpc2libGVEYXRhQ2hhbmdl
ZExpc3RlbmVySWQgPSAwOwotICAgIH0KKyAgICBtX2dsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIg
PSAwOwogfQogCiBzdGF0aWMgQXRrT2JqZWN0KiBjaGlsZEVsZW1lbnRCeUlkKEF0a09iamVjdCog
cGFyZW50LCBjb25zdCBjaGFyKiBpZCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRr
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2FmYTM3NDZlOGM5
NjA2MjAzY2YzOThmODkxOTkyOGJlMmJkMDAxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXJBdGsuY3BwCkBAIC0wLDAgKzEsMjcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJB
dGsuaCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRC
dW5kbGVQYWdlLmgiCisjaW5jbHVkZSAiSlNXcmFwcGVyLmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9X
S0J1bmRsZUZyYW1lLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBhZ2UuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQnVuZGxlUGFnZVByaXZhdGUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXVFIgeworCituYW1lc3BhY2UgeworCit0eXBlZGVmIEhhc2hNYXA8QXRrT2JqZWN0KiwgQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIqPiBOb3RpZmljYXRpb25IYW5kbGVyc01hcDsK
KwordW5zaWduZWQgc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gMDsKK3Vuc2lnbmVkIGZvY3VzRXZl
bnRMaXN0ZW5lcklkID0gMDsKK3Vuc2lnbmVkIGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVu
ZXJJZCA9IDA7Cit1bnNpZ25lZCBjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gMDsKK3Vuc2ln
bmVkIHByb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSAwOwordW5zaWduZWQgdmlzaWJsZURhdGFD
aGFuZ2VkTGlzdGVuZXJJZCA9IDA7CitOb3RpZmljYXRpb25IYW5kbGVyc01hcCBub3RpZmljYXRp
b25IYW5kbGVyczsKK0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKiBnbG9iYWxOb3Rp
ZmljYXRpb25IYW5kbGVyID0gMDsKK2Jvb2wgbG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMgPSBm
YWxzZTsKKwordm9pZCBwcmludEFjY2Vzc2liaWxpdHlFdmVudChBdGtPYmplY3QqIGFjY2Vzc2li
bGUsIGNvbnN0IGNoYXIqIHNpZ25hbE5hbWUsIGNvbnN0IGNoYXIqIHNpZ25hbFZhbHVlKQorewor
ICAgIC8vIERvIG5vdCBoYW5kbGUgc3RhdGUtY2hhbmdlOmRlZnVuY3Qgc2lnbmFscywgYXMgdGhl
IEF0a09iamVjdAorICAgIC8vIGFzc29jaWF0ZWQgdG8gdGhlbSB3aWxsIG5vdCBiZSB2YWxpZCBh
dCB0aGlzIHBvaW50IGFscmVhZHkuCisgICAgaWYgKCFzaWduYWxOYW1lIHx8ICFnX3N0cmNtcDAo
c2lnbmFsTmFtZSwgInN0YXRlLWNoYW5nZTpkZWZ1bmN0IikpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGlmICghYWNjZXNzaWJsZSB8fCAhQVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgY29uc3QgY2hhciogb2JqZWN0TmFtZSA9IGF0a19vYmplY3RfZ2V0
X25hbWUoYWNjZXNzaWJsZSk7CisgICAgQXRrUm9sZSBvYmplY3RSb2xlID0gYXRrX29iamVjdF9n
ZXRfcm9sZShhY2Nlc3NpYmxlKTsKKworICAgIC8vIFRyeSB0byBhbHdheXMgcHJvdmlkZSBhIG5h
bWUgdG8gYmUgbG9nZ2VkIGZvciB0aGUgb2JqZWN0LgorICAgIGlmICghb2JqZWN0TmFtZSB8fCAq
b2JqZWN0TmFtZSA9PSAnXDAnKQorICAgICAgICBvYmplY3ROYW1lID0gIihObyBuYW1lKSI7CisK
KyAgICBHT3duUHRyPGNoYXI+IHNpZ25hbE5hbWVBbmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3Ry
ZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25hbE5hbWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVw
KHNpZ25hbE5hbWUpKTsKKyAgICBHT3duUHRyPGNoYXI+IGFjY2Vzc2liaWxpdHlFdmVudFN0cmlu
ZyhnX3N0cmR1cF9wcmludGYoIkFjY2Vzc2liaWxpdHkgb2JqZWN0IGVtaXR0ZWQgXCIlc1wiIC8g
TmFtZTogXCIlc1wiIC8gUm9sZTogJWRcbiIsIHNpZ25hbE5hbWVBbmRWYWx1ZS5nZXQoKSwgb2Jq
ZWN0TmFtZSwgb2JqZWN0Um9sZSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5vdXRw
dXRUZXh0KFN0cmluZzo6ZnJvbVVURjgoYWNjZXNzaWJpbGl0eUV2ZW50U3RyaW5nLmdldCgpKSk7
Cit9CisKK2dib29sZWFuIGF4T2JqZWN0RXZlbnRMaXN0ZW5lcihHU2lnbmFsSW52b2NhdGlvbkhp
bnQqIHNpZ25hbEhpbnQsIHVuc2lnbmVkIG51bVBhcmFtVmFsdWVzLCBjb25zdCBHVmFsdWUqIHBh
cmFtVmFsdWVzLCBncG9pbnRlciBkYXRhKQoreworICAgIC8vIEF0IGxlYXN0IHdlIHNob3VsZCBy
ZWNlaXZlIHRoZSBpbnN0YW5jZSBlbWl0dGluZyB0aGUgc2lnbmFsLgorICAgIGlmICghbnVtUGFy
YW1WYWx1ZXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgQXRrT2JqZWN0KiBhY2Nlc3Np
YmxlID0gQVRLX09CSkVDVChnX3ZhbHVlX2dldF9vYmplY3QoJnBhcmFtVmFsdWVzWzBdKSk7Cisg
ICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFBVEtfSVNfT0JKRUNUKGFjY2Vzc2libGUpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIEdTaWduYWxRdWVyeSBzaWduYWxRdWVyeTsKKyAgICBHT3du
UHRyPGNoYXI+IHNpZ25hbE5hbWU7CisgICAgR093blB0cjxjaGFyPiBzaWduYWxWYWx1ZTsKKyAg
ICBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1lID0gMDsKKworICAgIGdfc2lnbmFsX3F1ZXJ5
KHNpZ25hbEhpbnQtPnNpZ25hbF9pZCwgJnNpZ25hbFF1ZXJ5KTsKKworICAgIGlmICghZ19zdHJj
bXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAic3RhdGUtY2hhbmdlIikpIHsKKyAgICAgICAg
c2lnbmFsTmFtZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCJzdGF0ZS1jaGFuZ2U6JXMiLCBnX3ZhbHVl
X2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQo
Z19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnBhcmFtVmFsdWVzWzJd
KSkpOworICAgICAgICBpZiAoIWdfc3RyY21wMChnX3ZhbHVlX2dldF9zdHJpbmcoJnBhcmFtVmFs
dWVzWzFdKSwgImludmFsaWQtZW50cnkiKSkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUg
PSAiQVhJbnZhbGlkU3RhdHVzQ2hhbmdlZCI7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNp
Z25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAiZm9jdXMtZXZlbnQiKSkgeworICAgICAgICBzaWduYWxO
YW1lLnNldChnX3N0cmR1cCgiZm9jdXMtZXZlbnQiKSk7CisgICAgICAgIHNpZ25hbFZhbHVlLnNl
dChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbigmcGFyYW1WYWx1ZXNb
MV0pKSk7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1l
LCAiY2hpbGRyZW4tY2hhbmdlZCIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVw
KCJjaGlsZHJlbi1jaGFuZ2VkIikpOworICAgICAgICBzaWduYWxWYWx1ZS5zZXQoZ19zdHJkdXBf
cHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFsdWVzWzFdKSkpOworICAgIH0g
ZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInByb3BlcnR5LWNo
YW5nZSIpKQorICAgICAgICBzaWduYWxOYW1lLnNldChnX3N0cmR1cF9wcmludGYoInByb3BlcnR5
LWNoYW5nZTolcyIsIGdfcXVhcmtfdG9fc3RyaW5nKHNpZ25hbEhpbnQtPmRldGFpbCkpKTsKKyAg
ICBlbHNlCisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25h
bF9uYW1lKSk7CisKKyAgICBpZiAobG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMpCisgICAgICAg
IHByaW50QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNp
Z25hbFZhbHVlLmdldCgpKTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSA9IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBX
S0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdl
KTsKKyAgICBKU0NvbnRleHRSZWYganNDb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3Jp
cHRDb250ZXh0KG1haW5GcmFtZSk7CisjZWxzZQorICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQg
PSAwOworI2VuZGlmCisgICAgaWYgKCFqc0NvbnRleHQpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgaWYgKG5vdGlmaWNhdGlvbk5hbWUpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJp
bmdSZWY+IGpzTm90aWZpY2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhub3RpZmljYXRpb25OYW1lKSk7CisgICAgICAgIEpTVmFsdWVSZWYgbm90aWZp
Y2F0aW9uTmFtZUFyZ3VtZW50ID0gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBqc05vdGlm
aWNhdGlvbkV2ZW50TmFtZS5nZXQoKSk7CisgICAgICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFw
OjppdGVyYXRvciBlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRs
ZXJzLmZpbmQoYWNjZXNzaWJsZSk7CisgICAgICAgIGlmIChlbGVtZW50Tm90aWZpY2F0aW9uSGFu
ZGxlciAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgLy8gTGlz
dGVuZXIgZm9yIG9uZSBlbGVtZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmlj
YXRpb24gbmFtZS4KKyAgICAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0
LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlci0+dmFs
dWUtPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDEsICZub3RpZmljYXRpb25O
YW1lQXJndW1lbnQsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdsb2JhbE5vdGlmaWNh
dGlvbkhhbmRsZXIpIHsKKyAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhl
IGVsZW1lbnQgYW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMuCisgICAgICAg
ICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1syXTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9
IHRvSlMoanNDb250ZXh0LCBXVEY6OmdldFB0cihXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmNyZWF0ZShhY2Nlc3NpYmxlKSkpOworICAgICAgICAgICAgYXJndW1lbnRzWzFdID0gbm90aWZp
Y2F0aW9uTmFtZUFyZ3VtZW50OworICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihq
c0NvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRs
ZXItPm5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDIsIGFyZ3VtZW50cywgMCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UKKworQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OkFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyKCkKKyAgICA6IG1fcGxhdGZvcm1FbGVtZW50KDApCisgICAgLCBtX25v
dGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXI6On5BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7Cisg
ICAgcmVtb3ZlQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBkaXNjb25u
ZWN0QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKK3sKKyAgICBjb25uZWN0
QWNjZXNzaWJpbGl0eUNhbGxiYWNrcygpOworICAgIGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRz
ID0gdHJ1ZTsKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0
Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbkZ1bmN0
aW9uQ2FsbGJhY2spCit7CisgICAgaWYgKCFub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSB7
CisgICAgICAgIHJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAg
ICAgIGRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBub3RpZmljYXRp
b25GdW5jdGlvbkNhbGxiYWNrOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAg
IFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBh
Z2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNj
cmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4
dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKTsKKworICAgIEpTVmFsdWVQcm90ZWN0
KGpzQ29udGV4dCwgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAvLyBDaGVj
ayBpZiB0aGlzIG5vdGlmaWNhdGlvbiBoYW5kbGVyIGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBl
bGVtZW50LgorICAgIGlmIChtX3BsYXRmb3JtRWxlbWVudCkgeworICAgICAgICBOb3RpZmljYXRp
b25IYW5kbGVyc01hcDo6aXRlcmF0b3IgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3Rp
ZmljYXRpb25IYW5kbGVycy5maW5kKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpKTsKKyAgICAgICAg
aWYgKGN1cnJlbnROb3RpZmljYXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVu
ZCgpKSB7CisgICAgICAgICAgICBBU1NFUlQoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZh
bHVlLT5wbGF0Zm9ybUVsZW1lbnQoKSk7CisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpz
Q29udGV4dCwgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3RpZmljYXRpb25G
dW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVt
b3ZlKGN1cnJlbnROb3RpZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+cGxhdGZvcm1FbGVtZW50KCku
Z2V0KCkpOworICAgICAgICB9CisgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLmFkZChtX3Bs
YXRmb3JtRWxlbWVudC5nZXQoKSwgdGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGds
b2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpz
Q29udGV4dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjaygpKTsKKyAgICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IHRoaXM7Cisg
ICAgfQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpyZW1vdmVB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisjaWYgUExBVEZPUk0oR1RLKQor
ICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2Uo
KS0+cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdl
R2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRs
ZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250
ZXh0UmVmIGpzQ29udGV4dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPT0gdGhpcykg
eworICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFsTm90aWZpY2F0aW9u
SGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAgICAgZ2xvYmFs
Tm90aWZpY2F0aW9uSGFuZGxlciA9IDA7CisgICAgfSBlbHNlIGlmIChtX3BsYXRmb3JtRWxlbWVu
dC5nZXQoKSkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyc01hcDo6aXRlcmF0b3IgcmVt
b3ZlTm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobV9wbGF0
Zm9ybUVsZW1lbnQuZ2V0KCkpOworICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxl
ciAhPSBub3RpZmljYXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZVVu
cHJvdGVjdChqc0NvbnRleHQsIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3Rp
ZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFu
ZGxlcnMucmVtb3ZlKHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgICAgICB9CisgICAg
fQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjb25uZWN0QWNj
ZXNzaWJpbGl0eUNhbGxiYWNrcygpCit7CisgICAgLy8gRW5zdXJlIG5vIGNhbGxiYWNrcyBhcmUg
Y29ubmVjdGVkIGJlZm9yZS4KKyAgICBpZiAoIWRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJh
Y2tzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEFkZCBnbG9iYWwgbGlzdGVuZXJzIGZv
ciBBdGtPYmplY3QncyBzaWduYWxzLgorICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IGF0a19h
ZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtP
YmplY3Q6c3RhdGUtY2hhbmdlIik7CisgICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSBhdGtfYWRk
X2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2Jq
ZWN0OmZvY3VzLWV2ZW50Iik7CisgICAgYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklk
ID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAi
QVRLOkF0a09iamVjdDphY3RpdmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7CisgICAgY2hpbGRyZW5D
aGFuZ2VkTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0
RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6Y2hpbGRyZW4tY2hhbmdlZCIpOworICAgIHBy
b3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihh
eE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5nZSIpOwor
ICAgIHZpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9s
aXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnZpc2libGUtZGF0
YS1jaGFuZ2VkIik7Cit9CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6
OmRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCkKK3sKKyAgICAvLyBPbmx5IGRpc2Nv
bm5lY3QgaWYgbG9nZ2luZyBpcyBvZmYgYW5kIHRoZXJlIGlzIG5vIG5vdGlmaWNhdGlvbiBoYW5k
bGVyLgorICAgIGlmIChsb2dnaW5nQWNjZXNzaWJpbGl0eUV2ZW50cyB8fCAhbm90aWZpY2F0aW9u
SGFuZGxlcnMuaXNFbXB0eSgpIHx8IGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIEF0a09iamVjdCBzaWduYWxzLgorICAgIGlmIChzdGF0
ZUNoYW5nZUxpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlz
dGVuZXIoc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKTsKKyAgICAgICAgc3RhdGVDaGFuZ2VMaXN0ZW5l
cklkID0gMDsKKyAgICB9CisgICAgaWYgKGZvY3VzRXZlbnRMaXN0ZW5lcklkKSB7CisgICAgICAg
IGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGZvY3VzRXZlbnRMaXN0ZW5lcklkKTsK
KyAgICAgICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBpZiAoYWN0aXZl
RGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFs
X2V2ZW50X2xpc3RlbmVyKGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAg
ICAgIGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CisgICAgfQorICAgIGlm
IChjaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFs
X2V2ZW50X2xpc3RlbmVyKGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOworICAgICAgICBjaGls
ZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5Q2hhbmdl
ZExpc3RlbmVySWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIo
cHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAgICAgIHByb3BlcnR5Q2hhbmdlZExpc3Rl
bmVySWQgPSAwOworICAgIH0KKyAgICBpZiAodmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCkg
eworICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcih2aXNpYmxlRGF0YUNo
YW5nZWRMaXN0ZW5lcklkKTsKKyAgICAgICAgdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9
IDA7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRr
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDc5ZGVjMmY5OWM5ZjhiOTU4MjQ1N2Y0MzNkNGRiODNmMTNmMTAxMAot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
YXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0a19oCisjZGVmaW5lIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrX2gKKwor
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8YXRrL2F0
ay5oPgorI2luY2x1ZGUgPGF0ay9hdGtvYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3Qv
R1JlZlB0ci5oPgorCituYW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlcj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKKyAgICB9Cisg
ICAgfkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgdm9pZCBzZXRQbGF0
Zm9ybUVsZW1lbnQoR1JlZlB0cjxBdGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRm
b3JtRWxlbWVudCA9IHBsYXRmb3JtRWxlbWVudDsgfQorICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBw
bGF0Zm9ybUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRWxlbWVudDsgfQorICAg
IHZvaWQgc2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmKTsKKyAgICBK
U1ZhbHVlUmVmIG5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBt
X25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2s7IH0KKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxp
dHlFdmVudHMoKTsKKworcHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFu
ZGxlcigpOworICAgIHZvaWQgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKTsKKyAgICBi
b29sIGRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CisgICAgdm9pZCByZW1vdmVB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpOworCisgICAgR1JlZlB0cjxBdGtPYmpl
Y3Q+IG1fcGxhdGZvcm1FbGVtZW50OworICAgIEpTVmFsdWVSZWYgbV9ub3RpZmljYXRpb25GdW5j
dGlvbkNhbGxiYWNrOworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRr
LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCmluZGV4IDRhNGVlMDdjOTk3OTZlYTFhNWRjZDFhNzg4ZWVl
ZDZlZDgzMDVhMWYuLjlhYjU3ZDY4YWNiNDEyYzJmYzZiZDJlNTk2MDQ4ZjhkNDNkODc2MDYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC01NjgsNiAr
NTY4LDEzIEBAIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
OjpzdHJpbmdBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlCiAgICAgICAgIHJldHVybiBKU1N0cmlu
Z0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAsIDApOwogCiAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVl
ID0gZ2V0QXR0cmlidXRlU2V0VmFsdWVGb3JJZChBVEtfT0JKRUNUKG1fZWxlbWVudC5nZXQoKSks
IGF0a0F0dHJpYnV0ZU5hbWUudXRmOCgpLmRhdGEoKSk7CisKKyAgICAvLyBJbiBjYXNlIG9mICdh
cmlhLWludmFsaWQnIHdoZW4gdGhlIGF0dHJpYnV0ZSBlbXB0eSBvciBoYXMgImZhbHNlIiBmb3Ig
QVRLCisgICAgLy8gYWNjb3JkaW5nIHRvIGh0dHA6Ly93d3cudzMub3JnL1dBSS9QRi9hcmlhLWlt
cGxlbWVudGF0aW9uLyNtYXBwaW5nIGF0dHJpYnV0ZQorICAgIC8vIGlzIG5vdCBtYXBwZWQgYnV0
IGxheW91dCB0ZXN0cyB3aWxsIGV4cGVjdCAnZmFsc2UnLgorICAgIGlmIChhdHRyaWJ1dGVWYWx1
ZS5pc0VtcHR5KCkgJiYgYXRrQXR0cmlidXRlTmFtZSA9PSAiYXJpYS1pbnZhbGlkIikKKyAgICAg
ICAgcmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJmYWxzZSIpOworCiAgICAg
cmV0dXJuIEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGF0dHJpYnV0ZVZhbHVlLnV0Zjgo
KS5kYXRhKCkpOwogfQogCkBAIC0xMTA3LDEzICsxMTE0LDI2IEBAIEpTUmV0YWluUHRyPEpTU3Ry
aW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQogCiBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFsdWVSZWYgZnVuY3Rpb25D
YWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgaWYgKCFmdW5jdGlvbkNh
bGxiYWNrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBPbmx5IG9uZSBub3RpZmlj
YXRpb24gbGlzdGVuZXIgcGVyIGVsZW1lbnQuCisgICAgaWYgKG1fbm90aWZpY2F0aW9uSGFuZGxl
cikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0g
QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0ZSgpOworICAgIG1fbm90aWZp
Y2F0aW9uSGFuZGxlci0+c2V0UGxhdGZvcm1FbGVtZW50KHBsYXRmb3JtVUlFbGVtZW50KCkpOwor
ICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFj
ayhmdW5jdGlvbkNhbGxiYWNrKTsKKwogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3RlbmVyKCkKIHsKLSAgICAv
LyBGSVhNRTogaW1wbGVtZW50CisgICAgLy8gUHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSB0cnlp
bmcgdG8gcmVtb3ZlIGEgbGlzdGVuZXIgdGhhdCdzIGFscmVhZHkgcmVtb3ZlZC4KKyAgICBBU1NF
UlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSAw
OworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDUwYWVmY2EwNzY1NWI3YzEzNWY4YTg2NTc5MDU1NWJmMDcyZjc4YjAu
LjlkMjZkODkzOThmYzJmNjcyN2M0YjM3Y2JkYTdjM2EzYjJmZTUxNzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsNiArNzAsNyBAQCBhZGRfZGVmaW5p
dGlvbnMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBSZW5kZXJUcmVlL2d0ay9m
b250cyIKIGlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKICAgICBsaXN0KEFQUEVORCBXZWJLaXRU
ZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUwogICAgICAgICAke1dFQktJVF9URVNUUlVO
TkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNw
cAorICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0Fj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcAogICAgICAgICAke1dFQktJVF9U
RVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYktpdFRlc3RSdW5uZXJfSU5DTFVERV9E
SVJFQ1RPUklFUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDA1NjVjZDEzYjJmOGY1MTdjYTUwNzFlNWYwYjA1NzNiOGFmNDU1
ZTkuLjgyNmMzODk3MGM1MjEzNTQwM2VhZDYxNGQ4MDE1NmRjNDIxMTE5MTggMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxMy0wOS0xMyAgRGVuaXMgTm9taXlhbWEgIDxkLm5vbWl5YW1hQHNhbXN1
bmcuY29tPgorCisgICAgICAgIFtBVEtdIE1pc3NpbmcgV1RSIEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA0MjEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBleHBlY3RhdGlv
biBvZiBhcmlhLWludmFsaWQuaHRtbCB0ZXN0LCB3aGljaCB3YXMgdGltaW5nIG91dAorICAgICAg
ICBiZWZvcmUgdGhpcyBmaXguCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBl
Y3RhdGlvbnM6IFJlbW92ZWQgYXJpYS1pbnZhbGlkLmh0bWwgYmVjYXVzZQorICAgICAgICBpdCBu
b3cgcGFzc2VzIHdpdGggdGhpcyBmaXguCisKIDIwMTMtMDktMTMgIENzYWJhIE9zenRyb2dvbsOh
YyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBPbmUgbW9yZSBVbnJldmlld2VkIGZpeCBh
ZnRlciByMTU1Njc1LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9U
ZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMi9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGI4YzUyNTdlZTdkM2ZjNzc2NjRhM2YyNmQ4MDQ1YjU3ZjRjMGJhMmMuLmUw
MzE3MjlkZmNiMjBkMjhmN2E3NGMxZTk1NjE5ODc0NmI1M2ZjMWQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay13azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGstd2syL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQ5OSw5ICs0OTksNiBAQCBC
dWcoR1RLKSBhbmltYXRpb25zL2NvbWJvLXRyYW5zZm9ybS10cmFuc2xhdGUrc2NhbGUuaHRtbCBb
IEZhaWx1cmUgXQogQnVnKEdUSykgYW5pbWF0aW9ucy9wbGF5LXN0YXRlLXN1c3BlbmQuaHRtbCBb
IEZhaWx1cmUgXQogQnVnKEdUSykgYW5pbWF0aW9ucy9zdXNwZW5kLXJlc3VtZS1hbmltYXRpb24u
aHRtbCBbIEZhaWx1cmUgXQogCi0jIFtHVEtdIE1pc3NpbmcgV1RSIEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi13ZWJraXQub3Jn
L2IvMTIwNDIxIGFjY2Vzc2liaWxpdHkvYXJpYS1pbnZhbGlkLmh0bWwgWyBUaW1lb3V0IF0KLQog
Iy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICMgRW5kIG9mIFRlc3RzIGZhaWxpbmcK
ICMvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212155</attachid>
            <date>2013-09-20 06:14:50 -0700</date>
            <delta_ts>2013-09-20 08:14:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120421-20130920141509.patch</filename>
            <type>text/plain</type>
            <size>32630</size>
            <attacher name="Denis Nomiyama (dnomi)">d.nomiyama</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MTQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDRkODU4MGRkMmNlNjUzOWVkYTY2NmU0ODIzMmJlNTUy
OWU1NTEzNi4uNWRiOWU2OWI3M2QwNjQ0ZjRjMDcyMDFiZWU0ZGFlODg5YTE2OWU3ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1
IEBACisyMDEzLTA5LTIwICBEZW5pcyBOb21peWFtYSAgPGQubm9taXlhbWFAc2Ftc3VuZy5jb20+
CisKKyAgICAgICAgW0FUS10gTWlzc2luZyBXVFIgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWRk
Tm90aWZpY2F0aW9uTGlzdGVuZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMDQyMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIHRoZSBub3RpZmljYXRpb24g
bGlzdGVuZXIgZm9yIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZm9yCisgICAgICAgIFdlYktpdFRl
c3RSdW5uZXIuIFRoZSBzaWduYWwgaXMgZ2VuZXJhdGVkIGJ5CisgICAgICAgIEFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbigpIGFuZCByZWNlaXZlZCBieQorICAgICAgICBh
eE9iamVjdEV2ZW50TGlzdGVuZXIoKS4gYXhPYmplY3RFdmVudExpc3RlbmVyKCkgd2lsbCB0aGVu
IGludm9rZQorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKCkgd2l0aCB0aGUgcmVzcGVj
dGl2ZSBjYWxsYmFjayBmdW5jdGlvbi4gVGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5kbGVy
cyBhcmUgc3RvcmVkIGluIEhhc2hNYXAgaW4KKyAgICAgICAgQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXJBdGsuY3BwLgorCisgICAgICAgIE1vdmVkIEFUSyBzaWduYWwgaGFuZGxpbmcg
KHByaW50QWNjZXNzaWJpbGl0eUV2ZW50IGFuZAorICAgICAgICBheE9iamVjdEV2ZW50TGlzdGVu
ZXIpIHRvIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKworICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQ6IEFkZGVkIEluamVjdGVkQnVuZGxl
L2F0ayB0byB0aGUKKyAgICAgICAgaW5jbHVkZSBwYXRoLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvR05VbWFrZWZpbGUuYW06CisgICAgICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmNwcC9oLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOiBNb3ZlZAorICAgICAgICBsaXN0
ZW5lciBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaDogTW92ZWQKKyAgICAgICAgbGlzdGVuZXIgSURzIHRvIEFjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaDogQWRkZWQgYQorICAgICAgICBub3Rp
ZmljYXRpb24gaGFuZGxlciBmb3IgR1RLKyBhbmQgRUZMLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcDoK
KyAgICAgICAgTW92ZWQgcHJpbnRBY2Nlc3NpYmlsaXR5RXZlbnQgYW5kIGF4T2JqZWN0RXZlbnRM
aXN0ZW5lciB0bworICAgICAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5j
cHAuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dBY2Nlc3NpYmls
aXR5RXZlbnRzKTogTW92ZWQgbGlzdGVuZXIKKyAgICAgICAgSURzIHRvIEFjY2Vzc2liaWxpdHlO
b3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXI6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBNb3ZlZCBsaXN0ZW5lcgorICAgICAg
ICBJRHMgdG8gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuY3BwLgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3Rp
ZmljYXRpb25IYW5kbGVyQXRrLmNwcDogQWRkZWQuCisgICAgICAgIChXVFI6OnByaW50QWNjZXNz
aWJpbGl0eUV2ZW50KTogUHJpbnRzIGFjY2Vzc2liaWxpdHkgZXZlbnRzLiBUaGlzCisgICAgICAg
IGZ1bmN0aW9uIHdhcyBtb3ZlZCBmcm9tIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcC4K
KyAgICAgICAgKFdUUjo6YXhPYmplY3RFdmVudExpc3RlbmVyKTogQ2FsbGJhY2sgZm9yIHNpZ25h
bHMuIFRoaXMgZnVuY3Rpb24gd2FzCisgICAgICAgIG1vdmVkIGZyb20gQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXJBdGsuY3BwLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
SGFuZGxlcjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIpOgorICAgICAgICBJbml0
aWFsaXplIGVsZW1lbnQgYW5kIGZ1bmN0aW9uIGNhbGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6fkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyKToKKyAgICAgICAgUmVtb3ZlcyBoYW5kbGVyIGZyb20gSGFzaE1hcCBhbmQgZGlzY29u
bmVjdHMgY2FsbGJhY2tzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMpOiBTZXRzCisgICAg
ICAgIGxvZ2dpbmcgbW9kZSBhbmQgY29ubmVjdHMgY2FsbGJhY2tzLgorICAgICAgICAoV1RSOjpB
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90aWZpY2F0aW9uRnVuY3Rpb25D
YWxsYmFjayk6CisgICAgICAgIFNldHMgdGhlIG5vdGlmaWNhdGlvbiBjYWxsYmFjayBhbmQgY29u
bmVjdHMgY2FsbGJhY2sgdG8gc2lnbmFscy4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXI6OnJlbW92ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KToKKyAgICAgICAgUmVtb3ZlcyB0aGUgbm90aWZpY2F0aW9uIGNhbGxiYWNrIGZyb20gSGFzaE1h
cC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNvbm5l
Y3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKToKKyAgICAgICAgQ29ubmVjdHMgYXhPYmplY3RFdmVu
dExpc3RlbmVyIHRvIEFUSyBzaWduYWxzLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcjo6ZGlzY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MpOgorICAg
ICAgICBEaXNjb25uZWN0cyBjYWxsYmFjay4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5oOiBB
ZGRlZC4KKyAgICAgICAgKFdUUjo6QWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNy
ZWF0ZSk6IENyZWF0ZXMgYSBuZXcgaW5zdGFuY2UKKyAgICAgICAgb2YgQWNjZXNzaWJpbGl0eU5v
dGlmaWNhdGlvbkhhbmRsZXIuCisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyOjpzZXRQbGF0Zm9ybUVsZW1lbnQpOiBTZXRzIHRoZQorICAgICAgICBlbGVtZW50
LgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6cGxhdGZv
cm1FbGVtZW50KTogR2V0cyB0aGUKKyAgICAgICAgZWxlbWVudC4KKyAgICAgICAgKFdUUjo6QWNj
ZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6Om5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJh
Y2spOgorICAgICAgICBHZXRzIHRoZSBub3RpZmljYXRpb24gY2FsbGJhY2suCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlm
aWNhdGlvbkxpc3RlbmVyKTogQ3JlYXRlcworICAgICAgICBub3RpZmljYXRpb24gaGFuZGxlciwg
c2V0IHRoZSBwbGF0Zm9ybSBlbGVtZW50IGFuZCB0aGUgbm90aWZpY2F0aW9uCisgICAgICAgIGNh
bGxiYWNrLgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3Rp
ZmljYXRpb25MaXN0ZW5lcik6IERlbGV0ZXMgdGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBoYW5k
bGVyLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2U6CisgICAg
ICAgIEFkZGVkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcC4KKwogMjAx
My0wOS0xOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVt
cHRlZCBidWlsZCBmaXggYWZ0ZXIgcjE1NjExNC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvQ01ha2VMaXN0cy50eHQgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0NNYWtlTGlz
dHMudHh0CmluZGV4IDA3YjY0N2I4MGMyNDg4YjEyOTQyNzEwYWI1ODhmYzNmMjBlMjM0ZGIuLjU1
MGY4ZGZlYWY5M2M1M2RlZDY4N2Y3YzVjMjIwZTg2ZDg2ZjU1NjMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9DTWFrZUxpc3RzLnR4dApAQCAtMjQsNiArMjQsNyBAQCBzZXQoV2ViS2l0VGVzdFJ1bm5l
cl9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9CiAgICAg
JHtXRUJLSVRfVEVTVFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlCiAgICAgJHtXRUJLSVRfVEVT
VFJVTk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL0JpbmRpbmdzCisgICAgJHtXRUJLSVRfVEVTVFJV
Tk5FUl9ESVJ9L0luamVjdGVkQnVuZGxlL2F0awogICAgICR7SkFWQVNDUklQVENPUkVfRElSfQog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwogICAgICR7V0VCQ09S
RV9ESVJ9L2VkaXRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvR05VbWFr
ZWZpbGUuYW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJk
MDRmNGQ0MjU5OTdiMzFiZGIwNzQwNzA1NzgwMjBkMjcxOGNlMTUuLmIwMDQzNThmYmRmYTY5NzU3
NmI1ZTFiMTZjNGI1NWU2YzlkOWVmNWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvR05VbWFrZWZpbGUuYW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9HTlVtYWtlZmls
ZS5hbQpAQCAtOTMsNiArOTMsOCBAQCBMaWJyYXJpZXNfbGliVGVzdFJ1bm5lckluamVjdGVkQnVu
ZGxlX2xhX1NPVVJDRVMgPSBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmggXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvQWN0aXZhdGVGb250cy5oIFwKIAlUb29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAgXAorCVRvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmlj
YXRpb25IYW5kbGVyQXRrLmNwcCBcCisJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXJBdGsuaCBcCiAJVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAgXAogCVRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGlu
Z3MvSlNXcmFwcGFibGUuaCBcCiAJVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9CaW5kaW5ncy9KU1dyYXBwZXIuY3BwIFwKQEAgLTEzMiw2ICsxMzQsNyBAQCBMaWJyYXJpZXNf
bGliVGVzdFJ1bm5lckluamVjdGVkQnVuZGxlX2xhX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIp
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIgXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUgXAogCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MgXAorCS1JJChzcmNkaXIpL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL2pzIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9JbmplY3Rl
ZEJ1bmRsZSBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNs
dWRlIFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKaW5kZXggMjEyZTk5MTExMTNj
MDc5Y2E5N2JjNzIyODI3YmZiODVkMzQxMWQ1OC4uZGI4YWFjMjE5MDY2MjY2MDNjMDlhYTJiMjA0
ZjYyNjdjZDNkZmZmZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKQEAgLTQ0
LDE0ICs0NCw2IEBAIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IEFjY2Vzc2li
aWxpdHlDb250cm9sbGVyOjpjcmVhdGUoKQogfQogCiBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKQotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0o
RUZMKQotICAgIDogbV9zdGF0ZUNoYW5nZUxpc3RlbmVySWQoMCkKLSAgICAsIG1fZm9jdXNFdmVu
dExpc3RlbmVySWQoMCkKLSAgICAsIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklk
KDApCi0gICAgLCBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQoMCkKLSAgICAsIG1fcHJvcGVy
dHlDaGFuZ2VkTGlzdGVuZXJJZCgwKQotICAgICwgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5l
cklkKDApCi0jZW5kaWYKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCmluZGV4
IDI0N2RlMzQyMDYxZWFhYmVmMzgwN2IyNWQwMjY2Nzg3Mjk5MmFiYjMuLjMzMDI4N2QxYWQxNDli
OTlkMmE1MmMwNTExOGNkMTQ0YjczZjdjMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmgKQEAgLTMzLDYgKzMzLDkgQEAKICNpZiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8d2luZG93
cy5oPgogI2VuZGlmCisjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBIQVZF
KEFDQ0VTU0lCSUxJVFkpKQorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyQXRrLmgiCisjZW5kaWYKIAogbmFtZXNwYWNlIFdUUiB7CiAgICAgCkBAIC02OCwxMyArNzEs
OCBAQCBwcml2YXRlOgogICAgIFJldGFpblB0cjxOb3RpZmljYXRpb25IYW5kbGVyPiBtX2dsb2Jh
bE5vdGlmaWNhdGlvbkhhbmRsZXI7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oRUZMKQotICAgIHVuc2lnbmVkIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkOwotICAgIHVu
c2lnbmVkIG1fZm9jdXNFdmVudExpc3RlbmVySWQ7Ci0gICAgdW5zaWduZWQgbV9hY3RpdmVEZXNj
ZW5kYW50Q2hhbmdlZExpc3RlbmVySWQ7Ci0gICAgdW5zaWduZWQgbV9jaGlsZHJlbkNoYW5nZWRM
aXN0ZW5lcklkOwotICAgIHVuc2lnbmVkIG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZDsKLSAg
ICB1bnNpZ25lZCBtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQ7CisjaWYgUExBVEZPUk0o
R1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkpKQorICAgIFJlZlB0
cjxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9nbG9iYWxOb3RpZmljYXRpb25I
YW5kbGVyOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCmluZGV4IGJi
MWJkZTVkMzVhYmZlN2NmODMxNzczM2YyNTZiZjQxODZhMTU1OWEuLjkzZjdkMDkyZmM2Yjg5YWQ4
NGIyOTQ1ZTEyZjEzMWJiN2M0N2ViYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oCkBA
IC01MCw2ICs1MCw3IEBAIHR5cGVkZWYgc3RydWN0IG9iamNfb2JqZWN0KiBQbGF0Zm9ybVVJRWxl
bWVudDsKIAogdHlwZWRlZiBDT01QdHI8SUFjY2Vzc2libGU+IFBsYXRmb3JtVUlFbGVtZW50Owog
I2VsaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJ
VFkpKQorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgiCiAj
aW5jbHVkZSA8YXRrL2F0ay5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KIHR5
cGVkZWYgR1JlZlB0cjxBdGtPYmplY3Q+IFBsYXRmb3JtVUlFbGVtZW50OwpAQCAtMjYyLDYgKzI2
MywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPFJlZlB0cjxBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50PiA+Jik7CiAgICAgdm9pZCBnZXRDaGlsZHJlbldpdGhSYW5nZShW
ZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4mLCB1bnNpZ25lZCBsb2NhdGlv
biwgdW5zaWduZWQgbGVuZ3RoKTsKICNlbmRpZgorCisjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExB
VEZPUk0oRUZMKSAmJiBIQVZFKEFDQ0VTU0lCSUxJVFkpKQorICAgIFJlZlB0cjxBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gbV9ub3RpZmljYXRpb25IYW5kbGVyOworI2VuZGlmCiB9
OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlckF0ay5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5
Q29udHJvbGxlckF0ay5jcHAKaW5kZXggM2I1OGMwZGEwMzM4YjQ1NjY1ZWE5NTdiNGM2YmY5ZDhm
MGEyNDA0NC4uYzE4NzUxNTRlZGMyYTYxNzhmNDYxMjE3MDgwZmEzNWIxOGQzMDgwNyAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXJBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQXRrLmNwcApAQCAtMzksNjMgKzM5
LDYgQEAKIAogbmFtZXNwYWNlIFdUUiB7CiAKLXN0YXRpYyB2b2lkIHByaW50QWNjZXNzaWJpbGl0
eUV2ZW50KEF0a09iamVjdCogYWNjZXNzaWJsZSwgY29uc3QgZ2NoYXIqIHNpZ25hbE5hbWUsIGNv
bnN0IGdjaGFyKiBzaWduYWxWYWx1ZSkKLXsKLSAgICAvLyBEbyBub3QgaGFuZGxlIHN0YXRlLWNo
YW5nZTpkZWZ1bmN0IHNpZ25hbHMsIGFzIHRoZSBBdGtPYmplY3QKLSAgICAvLyBhc3NvY2lhdGVk
IHRvIHRoZW0gd2lsbCBub3QgYmUgdmFsaWQgYXQgdGhpcyBwb2ludCBhbHJlYWR5LgotICAgIGlm
ICghc2lnbmFsTmFtZSB8fCAhZ19zdHJjbXAwKHNpZ25hbE5hbWUsICJzdGF0ZS1jaGFuZ2U6ZGVm
dW5jdCIpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWFjY2Vzc2libGUgfHwgIUFUS19J
U19PQkpFQ1QoYWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IGdjaGFy
KiBvYmplY3ROYW1lID0gYXRrX29iamVjdF9nZXRfbmFtZShhY2Nlc3NpYmxlKTsKLSAgICBBdGtS
b2xlIG9iamVjdFJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKGFjY2Vzc2libGUpOwotCi0gICAg
Ly8gVHJ5IHRvIGFsd2F5cyBwcm92aWRlIGEgbmFtZSB0byBiZSBsb2dnZWQgZm9yIHRoZSBvYmpl
Y3QuCi0gICAgaWYgKCFvYmplY3ROYW1lIHx8ICpvYmplY3ROYW1lID09ICdcMCcpCi0gICAgICAg
IG9iamVjdE5hbWUgPSAiKE5vIG5hbWUpIjsKLQotICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5h
bWVBbmRWYWx1ZShzaWduYWxWYWx1ZSA/IGdfc3RyZHVwX3ByaW50ZigiJXMgPSAlcyIsIHNpZ25h
bE5hbWUsIHNpZ25hbFZhbHVlKSA6IGdfc3RyZHVwKHNpZ25hbE5hbWUpKTsKLSAgICBHT3duUHRy
PGdjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCJBY2Nlc3Np
YmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAvIE5hbWU6IFwiJXNcIiAvIFJvbGU6ICVkXG4i
LCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9iamVjdE5hbWUsIG9iamVjdFJvbGUpKTsKLSAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0cHV0VGV4dChTdHJpbmc6OmZyb21VVEY4KGFj
Y2Vzc2liaWxpdHlFdmVudFN0cmluZy5nZXQoKSkpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gYXhP
YmplY3RFdmVudExpc3RlbmVyKEdTaWduYWxJbnZvY2F0aW9uSGludCAqc2lnbmFsSGludCwgZ3Vp
bnQgbnVtUGFyYW1WYWx1ZXMsIGNvbnN0IEdWYWx1ZSAqcGFyYW1WYWx1ZXMsIGdwb2ludGVyIGRh
dGEpCi17Ci0gICAgLy8gQXQgbGVhc3Qgd2Ugc2hvdWxkIHJlY2VpdmUgdGhlIGluc3RhbmNlIGVt
aXR0aW5nIHRoZSBzaWduYWwuCi0gICAgaWYgKG51bVBhcmFtVmFsdWVzIDwgMSkKLSAgICAgICAg
cmV0dXJuIFRSVUU7Ci0KLSAgICBBdGtPYmplY3QqIGFjY2Vzc2libGUgPSBBVEtfT0JKRUNUKGdf
dmFsdWVfZ2V0X29iamVjdCgmcGFyYW1WYWx1ZXNbMF0pKTsKLSAgICBpZiAoIWFjY2Vzc2libGUg
fHwgIUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCi0gICAgICAgIHJldHVybiBUUlVFOwotCi0g
ICAgR1NpZ25hbFF1ZXJ5IHNpZ25hbFF1ZXJ5OwotICAgIEdPd25QdHI8Z2NoYXI+IHNpZ25hbE5h
bWU7Ci0gICAgR093blB0cjxnY2hhcj4gc2lnbmFsVmFsdWU7Ci0KLSAgICBnX3NpZ25hbF9xdWVy
eShzaWduYWxIaW50LT5zaWduYWxfaWQsICZzaWduYWxRdWVyeSk7Ci0KLSAgICBpZiAoIWdfc3Ry
Y21wMChzaWduYWxRdWVyeS5zaWduYWxfbmFtZSwgInN0YXRlLWNoYW5nZSIpKSB7Ci0gICAgICAg
IHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1
ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSkpKTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0
KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1sy
XSkpKTsKLSAgICB9IGVsc2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUs
ICJmb2N1cy1ldmVudCIpKSB7Ci0gICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1
cy1ldmVudCIpKTsKLSAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQi
LCBnX3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1sxXSkpKTsKLSAgICB9IGVsc2UgaWYg
KCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJjaGlsZHJlbi1jaGFuZ2VkIikp
IHsKLSAgICAgICAgc2lnbmFsTmFtZS5zZXQoZ19zdHJkdXAoImNoaWxkcmVuLWNoYW5nZWQiKSk7
Ci0gICAgICAgIHNpZ25hbFZhbHVlLnNldChnX3N0cmR1cF9wcmludGYoIiVkIiwgZ192YWx1ZV9n
ZXRfdWludCgmcGFyYW1WYWx1ZXNbMV0pKSk7Ci0gICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNp
Z25hbFF1ZXJ5LnNpZ25hbF9uYW1lLCAicHJvcGVydHktY2hhbmdlIikpCi0gICAgICAgIHNpZ25h
bE5hbWUuc2V0KGdfc3RyZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVzIiwgZ19xdWFya190
b19zdHJpbmcoc2lnbmFsSGludC0+ZGV0YWlsKSkpOwotICAgIGVsc2UKLSAgICAgICAgc2lnbmFs
TmFtZS5zZXQoZ19zdHJkdXAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUpKTsKLQotICAgIHByaW50
QWNjZXNzaWJpbGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZh
bHVlLmdldCgpKTsKLQotICAgIHJldHVybiBUUlVFOwotfQotCiB2b2lkIEFjY2Vzc2liaWxpdHlD
b250cm9sbGVyOjpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKIHsKICAgICAvLyBFbnN1cmUgbm8g
Y2FsbGJhY2tzIGFyZSBjb25uZWN0ZWQgYmVmb3JlLgpAQCAtMTA1LDEzICs0OCw5IEBAIHZvaWQg
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKQogICAgIC8v
IHRoZSByb290IGFjY2Vzc2libGUgb2JqZWN0LCB3aGljaCB3aWxsIGNyZWF0ZSB0aGUgZnVsbCBo
aWVyYXJjaHkuCiAgICAgcm9vdEVsZW1lbnQoKTsKIAotICAgIC8vIEFkZCBnbG9iYWwgbGlzdGVu
ZXJzIGZvciBBdGtPYmplY3QncyBzaWduYWxzLgotICAgIG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklk
ID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAi
QVRLOkF0a09iamVjdDpzdGF0ZS1jaGFuZ2UiKTsKLSAgICBtX2ZvY3VzRXZlbnRMaXN0ZW5lcklk
ID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAi
QVRLOkF0a09iamVjdDpmb2N1cy1ldmVudCIpOwotICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5n
ZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVu
dExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDphY3RpdmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7Ci0g
ICAgbV9jaGlsZHJlbkNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxfZXZlbnRfbGlz
dGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpjaGlsZHJlbi1jaGFu
Z2VkIik7Ci0gICAgbV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9iYWxf
ZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDpwcm9w
ZXJ0eS1jaGFuZ2UiKTsKLSAgICBtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSBhdGtf
YWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRr
T2JqZWN0OnZpc2libGUtZGF0YS1jaGFuZ2VkIik7CisgICAgaWYgKCFtX2dsb2JhbE5vdGlmaWNh
dGlvbkhhbmRsZXIpCisgICAgICAgIG1fZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IEFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjcmVhdGUoKTsKKyAgICBtX2dsb2JhbE5vdGlm
aWNhdGlvbkhhbmRsZXItPmxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKIAogICAgIC8vIEVuc3Vy
ZSB0aGUgQXRrIGludGVyZmFjZSB0eXBlcyBhcmUgcmVnaXN0ZXJlZCwgb3RoZXJ3aXNlCiAgICAg
Ly8gdGhlIEF0a0RvY3VtZW50IHNpZ25hbCBoYW5kbGVycyBiZWxvdyB3b24ndCBnZXQgcmVnaXN0
ZXJlZC4KQEAgLTEyMywzMSArNjIsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjps
b2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKIAogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
cmVzZXRUb0NvbnNpc3RlbnRTdGF0ZSgpCiB7Ci0gICAgLy8gQXRrT2JqZWN0IHNpZ25hbHMuCi0g
ICAgaWYgKG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKSB7Ci0gICAgICAgIGF0a19yZW1vdmVfZ2xv
YmFsX2V2ZW50X2xpc3RlbmVyKG1fc3RhdGVDaGFuZ2VMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9z
dGF0ZUNoYW5nZUxpc3RlbmVySWQgPSAwOwotICAgIH0KLSAgICBpZiAobV9mb2N1c0V2ZW50TGlz
dGVuZXJJZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2Zv
Y3VzRXZlbnRMaXN0ZW5lcklkKTsKLSAgICAgICAgbV9mb2N1c0V2ZW50TGlzdGVuZXJJZCA9IDA7
Ci0gICAgfQotICAgIGlmIChtX2FjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCkgewot
ICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2FjdGl2ZURlc2NlbmRh
bnRDaGFuZ2VkTGlzdGVuZXJJZCk7Ci0gICAgICAgIG1fYWN0aXZlRGVzY2VuZGFudENoYW5nZWRM
aXN0ZW5lcklkID0gMDsKLSAgICB9Ci0gICAgaWYgKG1fY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJ
ZCkgewotICAgICAgICBhdGtfcmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcihtX2NoaWxkcmVu
Q2hhbmdlZExpc3RlbmVySWQpOwotICAgICAgICBtX2NoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQg
PSAwOwotICAgIH0KLSAgICBpZiAobV9wcm9wZXJ0eUNoYW5nZWRMaXN0ZW5lcklkKSB7Ci0gICAg
ICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKG1fcHJvcGVydHlDaGFuZ2VkTGlz
dGVuZXJJZCk7Ci0gICAgICAgIG1fcHJvcGVydHlDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Ci0gICAg
fQotICAgIGlmIChtX3Zpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQpIHsKLSAgICAgICAgYXRr
X3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIobV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5l
cklkKTsKLSAgICAgICAgbV92aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklkID0gMDsKLSAgICB9
CisgICAgbV9nbG9iYWxOb3RpZmljYXRpb25IYW5kbGVyID0gMDsKIH0KIAogc3RhdGljIEF0a09i
amVjdCogY2hpbGRFbGVtZW50QnlJZChBdGtPYmplY3QqIHBhcmVudCwgY29uc3QgY2hhciogaWQp
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9B
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ckF0ay5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQxNTRlZmJjYWNjNTcwZmZkZDJmZGNhOTM2YzYxNmJkNjNj
NTFlZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcApAQCAtMCww
ICsxLDI4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgiCisKKyNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlUGFnZS5oIgorI2luY2x1ZGUg
IkpTV3JhcHBlci5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgorI2luY2x1
ZGUgPFdlYktpdDIvV0tCdW5kbGVQYWdlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZVBh
Z2VQcml2YXRlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvZ29i
amVjdC9HT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV1RSIHsKKworbmFtZXNwYWNlIHsK
KwordHlwZWRlZiBIYXNoTWFwPEF0a09iamVjdCosIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyKj4gTm90aWZpY2F0aW9uSGFuZGxlcnNNYXA7CisKK3Vuc2lnbmVkIHN0YXRlQ2hhbmdl
TGlzdGVuZXJJZCA9IDA7Cit1bnNpZ25lZCBmb2N1c0V2ZW50TGlzdGVuZXJJZCA9IDA7Cit1bnNp
Z25lZCBhY3RpdmVEZXNjZW5kYW50Q2hhbmdlZExpc3RlbmVySWQgPSAwOwordW5zaWduZWQgY2hp
bGRyZW5DaGFuZ2VkTGlzdGVuZXJJZCA9IDA7Cit1bnNpZ25lZCBwcm9wZXJ0eUNoYW5nZWRMaXN0
ZW5lcklkID0gMDsKK3Vuc2lnbmVkIHZpc2libGVEYXRhQ2hhbmdlZExpc3RlbmVySWQgPSAwOwor
Tm90aWZpY2F0aW9uSGFuZGxlcnNNYXAgbm90aWZpY2F0aW9uSGFuZGxlcnM7CitBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9uSGFuZGxlciogZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IDA7Citi
b29sIGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzID0gZmFsc2U7CisKK3ZvaWQgcHJpbnRBY2Nl
c3NpYmlsaXR5RXZlbnQoQXRrT2JqZWN0KiBhY2Nlc3NpYmxlLCBjb25zdCBjaGFyKiBzaWduYWxO
YW1lLCBjb25zdCBjaGFyKiBzaWduYWxWYWx1ZSkKK3sKKyAgICAvLyBEbyBub3QgaGFuZGxlIHN0
YXRlLWNoYW5nZTpkZWZ1bmN0IHNpZ25hbHMsIGFzIHRoZSBBdGtPYmplY3QKKyAgICAvLyBhc3Nv
Y2lhdGVkIHRvIHRoZW0gd2lsbCBub3QgYmUgdmFsaWQgYXQgdGhpcyBwb2ludCBhbHJlYWR5Lgor
ICAgIGlmICghc2lnbmFsTmFtZSB8fCAhZ19zdHJjbXAwKHNpZ25hbE5hbWUsICJzdGF0ZS1jaGFu
Z2U6ZGVmdW5jdCIpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWFjY2Vzc2libGUgfHwg
IUFUS19JU19PQkpFQ1QoYWNjZXNzaWJsZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0
IGNoYXIqIG9iamVjdE5hbWUgPSBhdGtfb2JqZWN0X2dldF9uYW1lKGFjY2Vzc2libGUpOworICAg
IEF0a1JvbGUgb2JqZWN0Um9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoYWNjZXNzaWJsZSk7CisK
KyAgICAvLyBUcnkgdG8gYWx3YXlzIHByb3ZpZGUgYSBuYW1lIHRvIGJlIGxvZ2dlZCBmb3IgdGhl
IG9iamVjdC4KKyAgICBpZiAoIW9iamVjdE5hbWUgfHwgKm9iamVjdE5hbWUgPT0gJ1wwJykKKyAg
ICAgICAgb2JqZWN0TmFtZSA9ICIoTm8gbmFtZSkiOworCisgICAgR093blB0cjxjaGFyPiBzaWdu
YWxOYW1lQW5kVmFsdWUoc2lnbmFsVmFsdWUgPyBnX3N0cmR1cF9wcmludGYoIiVzID0gJXMiLCBz
aWduYWxOYW1lLCBzaWduYWxWYWx1ZSkgOiBnX3N0cmR1cChzaWduYWxOYW1lKSk7CisgICAgR093
blB0cjxjaGFyPiBhY2Nlc3NpYmlsaXR5RXZlbnRTdHJpbmcoZ19zdHJkdXBfcHJpbnRmKCJBY2Nl
c3NpYmlsaXR5IG9iamVjdCBlbWl0dGVkIFwiJXNcIiAvIE5hbWU6IFwiJXNcIiAvIFJvbGU6ICVk
XG4iLCBzaWduYWxOYW1lQW5kVmFsdWUuZ2V0KCksIG9iamVjdE5hbWUsIG9iamVjdFJvbGUpKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkub3V0cHV0VGV4dChTdHJpbmc6OmZyb21VVEY4
KGFjY2Vzc2liaWxpdHlFdmVudFN0cmluZy5nZXQoKSkpOworfQorCitnYm9vbGVhbiBheE9iamVj
dEV2ZW50TGlzdGVuZXIoR1NpZ25hbEludm9jYXRpb25IaW50KiBzaWduYWxIaW50LCB1bnNpZ25l
ZCBudW1QYXJhbVZhbHVlcywgY29uc3QgR1ZhbHVlKiBwYXJhbVZhbHVlcywgZ3BvaW50ZXIgZGF0
YSkKK3sKKyAgICAvLyBBdCBsZWFzdCB3ZSBzaG91bGQgcmVjZWl2ZSB0aGUgaW5zdGFuY2UgZW1p
dHRpbmcgdGhlIHNpZ25hbC4KKyAgICBpZiAoIW51bVBhcmFtVmFsdWVzKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIEF0a09iamVjdCogYWNjZXNzaWJsZSA9IEFUS19PQkpFQ1QoZ192YWx1
ZV9nZXRfb2JqZWN0KCZwYXJhbVZhbHVlc1swXSkpOworICAgIGlmICghYWNjZXNzaWJsZSB8fCAh
QVRLX0lTX09CSkVDVChhY2Nlc3NpYmxlKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBH
U2lnbmFsUXVlcnkgc2lnbmFsUXVlcnk7CisgICAgR093blB0cjxjaGFyPiBzaWduYWxOYW1lOwor
ICAgIEdPd25QdHI8Y2hhcj4gc2lnbmFsVmFsdWU7CisgICAgY29uc3QgY2hhciogbm90aWZpY2F0
aW9uTmFtZSA9IDA7CisKKyAgICBnX3NpZ25hbF9xdWVyeShzaWduYWxIaW50LT5zaWduYWxfaWQs
ICZzaWduYWxRdWVyeSk7CisKKyAgICBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxf
bmFtZSwgInN0YXRlLWNoYW5nZSIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVw
X3ByaW50Zigic3RhdGUtY2hhbmdlOiVzIiwgZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVl
c1sxXSkpKTsKKyAgICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBn
X3ZhbHVlX2dldF9ib29sZWFuKCZwYXJhbVZhbHVlc1syXSkpKTsKKyAgICAgICAgaWYgKCFnX3N0
cmNtcDAoZ192YWx1ZV9nZXRfc3RyaW5nKCZwYXJhbVZhbHVlc1sxXSksICJjaGVja2VkIikpCisg
ICAgICAgICAgICBub3RpZmljYXRpb25OYW1lID0gIkNoZWNrZWRTdGF0ZUNoYW5nZWQiOworICAg
ICAgICBlbHNlIGlmICghZ19zdHJjbXAwKGdfdmFsdWVfZ2V0X3N0cmluZygmcGFyYW1WYWx1ZXNb
MV0pLCAiaW52YWxpZC1lbnRyeSIpKQorICAgICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJB
WEludmFsaWRTdGF0dXNDaGFuZ2VkIjsKKyAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMChnX3Zh
bHVlX2dldF9zdHJpbmcoJnBhcmFtVmFsdWVzWzFdKSwgImxheW91dC1jb21wbGV0ZSIpKQorICAg
ICAgICAgICAgbm90aWZpY2F0aW9uTmFtZSA9ICJBWExheW91dENvbXBsZXRlIjsKKyAgICB9IGVs
c2UgaWYgKCFnX3N0cmNtcDAoc2lnbmFsUXVlcnkuc2lnbmFsX25hbWUsICJmb2N1cy1ldmVudCIp
KSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKCJmb2N1cy1ldmVudCIpKTsKKyAg
ICAgICAgc2lnbmFsVmFsdWUuc2V0KGdfc3RyZHVwX3ByaW50ZigiJWQiLCBnX3ZhbHVlX2dldF9i
b29sZWFuKCZwYXJhbVZhbHVlc1sxXSkpKTsKKyAgICAgICAgaWYgKGdfdmFsdWVfZ2V0X2Jvb2xl
YW4oJnBhcmFtVmFsdWVzWzFdKSkKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbk5hbWUgPSAiQVhG
b2N1c2VkVUlFbGVtZW50Q2hhbmdlZCI7CisgICAgfSBlbHNlIGlmICghZ19zdHJjbXAwKHNpZ25h
bFF1ZXJ5LnNpZ25hbF9uYW1lLCAiY2hpbGRyZW4tY2hhbmdlZCIpKSB7CisgICAgICAgIHNpZ25h
bE5hbWUuc2V0KGdfc3RyZHVwKCJjaGlsZHJlbi1jaGFuZ2VkIikpOworICAgICAgICBzaWduYWxW
YWx1ZS5zZXQoZ19zdHJkdXBfcHJpbnRmKCIlZCIsIGdfdmFsdWVfZ2V0X3VpbnQoJnBhcmFtVmFs
dWVzWzFdKSkpOworICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMChzaWduYWxRdWVyeS5zaWduYWxf
bmFtZSwgInByb3BlcnR5LWNoYW5nZSIpKSB7CisgICAgICAgIHNpZ25hbE5hbWUuc2V0KGdfc3Ry
ZHVwX3ByaW50ZigicHJvcGVydHktY2hhbmdlOiVzIiwgZ19xdWFya190b19zdHJpbmcoc2lnbmFs
SGludC0+ZGV0YWlsKSkpOworICAgICAgICBpZiAoIWdfc3RyY21wMChnX3F1YXJrX3RvX3N0cmlu
ZyhzaWduYWxIaW50LT5kZXRhaWwpLCAiYWNjZXNzaWJsZS12YWx1ZSIpKQorICAgICAgICAgICAg
bm90aWZpY2F0aW9uTmFtZSA9ICJBWFZhbHVlQ2hhbmdlZCI7CisgICAgfSBlbHNlCisgICAgICAg
IHNpZ25hbE5hbWUuc2V0KGdfc3RyZHVwKHNpZ25hbFF1ZXJ5LnNpZ25hbF9uYW1lKSk7CisKKyAg
ICBpZiAobG9nZ2luZ0FjY2Vzc2liaWxpdHlFdmVudHMpCisgICAgICAgIHByaW50QWNjZXNzaWJp
bGl0eUV2ZW50KGFjY2Vzc2libGUsIHNpZ25hbE5hbWUuZ2V0KCksIHNpZ25hbFZhbHVlLmdldCgp
KTsKKworI2lmIFBMQVRGT1JNKEdUSykKKyAgICBXS0J1bmRsZVBhZ2VSZWYgcGFnZSA9IEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5wYWdlKCktPnBhZ2UoKTsKKyAgICBXS0J1bmRsZUZyYW1lUmVm
IG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShwYWdlKTsKKyAgICBKU0NvbnRl
eHRSZWYganNDb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5G
cmFtZSk7CisjZWxzZQorICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSAwOworI2VuZGlmCisg
ICAgaWYgKCFqc0NvbnRleHQpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG5vdGlm
aWNhdGlvbk5hbWUpIHsKKyAgICAgICAgSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IGpzTm90aWZp
Y2F0aW9uRXZlbnROYW1lKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhub3Rp
ZmljYXRpb25OYW1lKSk7CisgICAgICAgIEpTVmFsdWVSZWYgbm90aWZpY2F0aW9uTmFtZUFyZ3Vt
ZW50ID0gSlNWYWx1ZU1ha2VTdHJpbmcoanNDb250ZXh0LCBqc05vdGlmaWNhdGlvbkV2ZW50TmFt
ZS5nZXQoKSk7CisgICAgICAgIE5vdGlmaWNhdGlvbkhhbmRsZXJzTWFwOjppdGVyYXRvciBlbGVt
ZW50Tm90aWZpY2F0aW9uSGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQoYWNjZXNz
aWJsZSk7CisgICAgICAgIGlmIChlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlciAhPSBub3RpZmlj
YXRpb25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgLy8gTGlzdGVuZXIgZm9yIG9uZSBl
bGVtZW50IGp1c3QgZ2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24gbmFtZS4KKyAg
ICAgICAgICAgIEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb24oanNDb250ZXh0LCBjb25zdF9jYXN0PEpT
T2JqZWN0UmVmPihlbGVtZW50Tm90aWZpY2F0aW9uSGFuZGxlci0+dmFsdWUtPm5vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDEsICZub3RpZmljYXRpb25OYW1lQXJndW1lbnQsIDAp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpIHsK
KyAgICAgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhlIGVsZW1lbnQgYW5kIHRo
ZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMuCisgICAgICAgICAgICBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1syXTsKKyAgICAgICAgICAgIGFyZ3VtZW50c1swXSA9IHRvSlMoanNDb250ZXh0
LCBXVEY6OmdldFB0cihXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhY2Nlc3Np
YmxlKSkpOworICAgICAgICAgICAgYXJndW1lbnRzWzFdID0gbm90aWZpY2F0aW9uTmFtZUFyZ3Vt
ZW50OworICAgICAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlvbihqc0NvbnRleHQsIGNvbnN0
X2Nhc3Q8SlNPYmplY3RSZWY+KGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXItPm5vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2soKSksIDAsIDIsIGFyZ3VtZW50cywgMCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
KCkKKyAgICA6IG1fcGxhdGZvcm1FbGVtZW50KDApCisgICAgLCBtX25vdGlmaWNhdGlvbkZ1bmN0
aW9uQ2FsbGJhY2soMCkKK3sKK30KKworQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6
On5BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpCit7CisgICAgcmVtb3ZlQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIoKTsKKyAgICBkaXNjb25uZWN0QWNjZXNzaWJpbGl0
eUNhbGxiYWNrcygpOworfQorCit2b2lkIEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVy
Ojpsb2dBY2Nlc3NpYmlsaXR5RXZlbnRzKCkKK3sKKyAgICBjb25uZWN0QWNjZXNzaWJpbGl0eUNh
bGxiYWNrcygpOworICAgIGxvZ2dpbmdBY2Nlc3NpYmlsaXR5RXZlbnRzID0gdHJ1ZTsKK30KKwor
dm9pZCBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcjo6c2V0Tm90aWZpY2F0aW9uRnVu
Y3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmIG5vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2spCit7
CisgICAgaWYgKCFub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKSB7CisgICAgICAgIHJlbW92
ZUFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgICAgIGRpc2Nvbm5lY3RB
Y2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBt
X25vdGlmaWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2sgPSBub3RpZmljYXRpb25GdW5jdGlvbkNhbGxi
YWNrOworCisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdLQnVuZGxlUGFnZVJlZiBwYWdlID0gSW5q
ZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAgIFdLQnVuZGxlRnJhbWVS
ZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBhZ2UpOworICAgIEpTQ29u
dGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNjcmlwdENvbnRleHQobWFp
bkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4dCA9IDA7CisjZW5kaWYK
KyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgY29ubmVjdEFjY2Vz
c2liaWxpdHlDYWxsYmFja3MoKTsKKworICAgIEpTVmFsdWVQcm90ZWN0KGpzQ29udGV4dCwgbV9u
b3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrKTsKKyAgICAvLyBDaGVjayBpZiB0aGlzIG5vdGlm
aWNhdGlvbiBoYW5kbGVyIGlzIHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyBlbGVtZW50LgorICAgIGlm
IChtX3BsYXRmb3JtRWxlbWVudCkgeworICAgICAgICBOb3RpZmljYXRpb25IYW5kbGVyc01hcDo6
aXRlcmF0b3IgY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXIgPSBub3RpZmljYXRpb25IYW5kbGVy
cy5maW5kKG1fcGxhdGZvcm1FbGVtZW50LmdldCgpKTsKKyAgICAgICAgaWYgKGN1cnJlbnROb3Rp
ZmljYXRpb25IYW5kbGVyICE9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmVuZCgpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoY3VycmVudE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5wbGF0Zm9ybUVs
ZW1lbnQoKSk7CisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgY3VycmVu
dE5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNr
KCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKGN1cnJlbnROb3Rp
ZmljYXRpb25IYW5kbGVyLT52YWx1ZS0+cGxhdGZvcm1FbGVtZW50KCkuZ2V0KCkpOworICAgICAg
ICB9CisgICAgICAgIG5vdGlmaWNhdGlvbkhhbmRsZXJzLmFkZChtX3BsYXRmb3JtRWxlbWVudC5n
ZXQoKSwgdGhpcyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlv
bkhhbmRsZXIpCisgICAgICAgICAgICBKU1ZhbHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFs
Tm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAg
ICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlciA9IHRoaXM7CisgICAgfQorfQorCit2b2lk
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpyZW1vdmVBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcigpCit7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlID0gSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnBhZ2UoKS0+cGFnZSgpOworICAg
IFdLQnVuZGxlRnJhbWVSZWYgbWFpbkZyYW1lID0gV0tCdW5kbGVQYWdlR2V0TWFpbkZyYW1lKHBh
Z2UpOworICAgIEpTQ29udGV4dFJlZiBqc0NvbnRleHQgPSBXS0J1bmRsZUZyYW1lR2V0SmF2YVNj
cmlwdENvbnRleHQobWFpbkZyYW1lKTsKKyNlbHNlCisgICAgSlNDb250ZXh0UmVmIGpzQ29udGV4
dCA9IDA7CisjZW5kaWYKKyAgICBpZiAoIWpzQ29udGV4dCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIgPT0gdGhpcykgeworICAgICAgICBKU1Zh
bHVlVW5wcm90ZWN0KGpzQ29udGV4dCwgZ2xvYmFsTm90aWZpY2F0aW9uSGFuZGxlci0+bm90aWZp
Y2F0aW9uRnVuY3Rpb25DYWxsYmFjaygpKTsKKyAgICAgICAgZ2xvYmFsTm90aWZpY2F0aW9uSGFu
ZGxlciA9IDA7CisgICAgfSBlbHNlIGlmIChtX3BsYXRmb3JtRWxlbWVudC5nZXQoKSkgeworICAg
ICAgICBOb3RpZmljYXRpb25IYW5kbGVyc01hcDo6aXRlcmF0b3IgcmVtb3ZlTm90aWZpY2F0aW9u
SGFuZGxlciA9IG5vdGlmaWNhdGlvbkhhbmRsZXJzLmZpbmQobV9wbGF0Zm9ybUVsZW1lbnQuZ2V0
KCkpOworICAgICAgICBpZiAocmVtb3ZlTm90aWZpY2F0aW9uSGFuZGxlciAhPSBub3RpZmljYXRp
b25IYW5kbGVycy5lbmQoKSkgeworICAgICAgICAgICAgSlNWYWx1ZVVucHJvdGVjdChqc0NvbnRl
eHQsIHJlbW92ZU5vdGlmaWNhdGlvbkhhbmRsZXItPnZhbHVlLT5ub3RpZmljYXRpb25GdW5jdGlv
bkNhbGxiYWNrKCkpOworICAgICAgICAgICAgbm90aWZpY2F0aW9uSGFuZGxlcnMucmVtb3ZlKHJl
bW92ZU5vdGlmaWNhdGlvbkhhbmRsZXIpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyOjpjb25uZWN0QWNjZXNzaWJpbGl0eUNhbGxi
YWNrcygpCit7CisgICAgLy8gRW5zdXJlIG5vIGNhbGxiYWNrcyBhcmUgY29ubmVjdGVkIGJlZm9y
ZS4KKyAgICBpZiAoIWRpc2Nvbm5lY3RBY2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIC8vIEFkZCBnbG9iYWwgbGlzdGVuZXJzIGZvciBBdGtPYmplY3QncyBz
aWduYWxzLgorICAgIHN0YXRlQ2hhbmdlTGlzdGVuZXJJZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50
X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwgIkFUSzpBdGtPYmplY3Q6c3RhdGUtY2hh
bmdlIik7CisgICAgZm9jdXNFdmVudExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9s
aXN0ZW5lcihheE9iamVjdEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OmZvY3VzLWV2ZW50
Iik7CisgICAgYWN0aXZlRGVzY2VuZGFudENoYW5nZWRMaXN0ZW5lcklkID0gYXRrX2FkZF9nbG9i
YWxfZXZlbnRfbGlzdGVuZXIoYXhPYmplY3RFdmVudExpc3RlbmVyLCAiQVRLOkF0a09iamVjdDph
Y3RpdmUtZGVzY2VuZGFudC1jaGFuZ2VkIik7CisgICAgY2hpbGRyZW5DaGFuZ2VkTGlzdGVuZXJJ
ZCA9IGF0a19hZGRfZ2xvYmFsX2V2ZW50X2xpc3RlbmVyKGF4T2JqZWN0RXZlbnRMaXN0ZW5lciwg
IkFUSzpBdGtPYmplY3Q6Y2hpbGRyZW4tY2hhbmdlZCIpOworICAgIHByb3BlcnR5Q2hhbmdlZExp
c3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVjdEV2ZW50TGlz
dGVuZXIsICJBVEs6QXRrT2JqZWN0OnByb3BlcnR5LWNoYW5nZSIpOworICAgIHZpc2libGVEYXRh
Q2hhbmdlZExpc3RlbmVySWQgPSBhdGtfYWRkX2dsb2JhbF9ldmVudF9saXN0ZW5lcihheE9iamVj
dEV2ZW50TGlzdGVuZXIsICJBVEs6QXRrT2JqZWN0OnZpc2libGUtZGF0YS1jaGFuZ2VkIik7Cit9
CisKK2Jvb2wgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmRpc2Nvbm5lY3RBY2Nl
c3NpYmlsaXR5Q2FsbGJhY2tzKCkKK3sKKyAgICAvLyBPbmx5IGRpc2Nvbm5lY3QgaWYgbG9nZ2lu
ZyBpcyBvZmYgYW5kIHRoZXJlIGlzIG5vIG5vdGlmaWNhdGlvbiBoYW5kbGVyLgorICAgIGlmIChs
b2dnaW5nQWNjZXNzaWJpbGl0eUV2ZW50cyB8fCAhbm90aWZpY2F0aW9uSGFuZGxlcnMuaXNFbXB0
eSgpIHx8IGdsb2JhbE5vdGlmaWNhdGlvbkhhbmRsZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIC8vIEF0a09iamVjdCBzaWduYWxzLgorICAgIGlmIChzdGF0ZUNoYW5nZUxpc3RlbmVy
SWQpIHsKKyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIoc3RhdGVDaGFu
Z2VMaXN0ZW5lcklkKTsKKyAgICAgICAgc3RhdGVDaGFuZ2VMaXN0ZW5lcklkID0gMDsKKyAgICB9
CisgICAgaWYgKGZvY3VzRXZlbnRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xv
YmFsX2V2ZW50X2xpc3RlbmVyKGZvY3VzRXZlbnRMaXN0ZW5lcklkKTsKKyAgICAgICAgZm9jdXNF
dmVudExpc3RlbmVySWQgPSAwOworICAgIH0KKyAgICBpZiAoYWN0aXZlRGVzY2VuZGFudENoYW5n
ZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVy
KGFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCk7CisgICAgICAgIGFjdGl2ZURlc2Nl
bmRhbnRDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CisgICAgfQorICAgIGlmIChjaGlsZHJlbkNoYW5n
ZWRMaXN0ZW5lcklkKSB7CisgICAgICAgIGF0a19yZW1vdmVfZ2xvYmFsX2V2ZW50X2xpc3RlbmVy
KGNoaWxkcmVuQ2hhbmdlZExpc3RlbmVySWQpOworICAgICAgICBjaGlsZHJlbkNoYW5nZWRMaXN0
ZW5lcklkID0gMDsKKyAgICB9CisgICAgaWYgKHByb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQpIHsK
KyAgICAgICAgYXRrX3JlbW92ZV9nbG9iYWxfZXZlbnRfbGlzdGVuZXIocHJvcGVydHlDaGFuZ2Vk
TGlzdGVuZXJJZCk7CisgICAgICAgIHByb3BlcnR5Q2hhbmdlZExpc3RlbmVySWQgPSAwOworICAg
IH0KKyAgICBpZiAodmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCkgeworICAgICAgICBhdGtf
cmVtb3ZlX2dsb2JhbF9ldmVudF9saXN0ZW5lcih2aXNpYmxlRGF0YUNoYW5nZWRMaXN0ZW5lcklk
KTsKKyAgICAgICAgdmlzaWJsZURhdGFDaGFuZ2VkTGlzdGVuZXJJZCA9IDA7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eU5vdGlm
aWNhdGlvbkhhbmRsZXJBdGsuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDc5ZGVjMmY5OWM5ZjhiOTU4MjQ1N2Y0MzNkNGRiODNmMTNmMTAxMAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8K
KworI2lmbmRlZiBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlckF0a19oCisjZGVmaW5l
IEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrX2gKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW5jbHVkZSA8YXRrL2F0ay5oPgorI2luY2x1ZGUg
PGF0ay9hdGtvYmplY3QuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV1RSIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcj4gewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25I
YW5kbGVyPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nl
c3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpKTsKKyAgICB9CisgICAgfkFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25IYW5kbGVyKCk7CisgICAgdm9pZCBzZXRQbGF0Zm9ybUVsZW1lbnQoR1Jl
ZlB0cjxBdGtPYmplY3Q+IHBsYXRmb3JtRWxlbWVudCkgeyBtX3BsYXRmb3JtRWxlbWVudCA9IHBs
YXRmb3JtRWxlbWVudDsgfQorICAgIEdSZWZQdHI8QXRrT2JqZWN0PiBwbGF0Zm9ybUVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtRWxlbWVudDsgfQorICAgIHZvaWQgc2V0Tm90aWZp
Y2F0aW9uRnVuY3Rpb25DYWxsYmFjayhKU1ZhbHVlUmVmKTsKKyAgICBKU1ZhbHVlUmVmIG5vdGlm
aWNhdGlvbkZ1bmN0aW9uQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX25vdGlmaWNhdGlvbkZ1
bmN0aW9uQ2FsbGJhY2s7IH0KKyAgICB2b2lkIGxvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKKwor
cHJpdmF0ZToKKyAgICBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlcigpOworICAgIHZv
aWQgY29ubmVjdEFjY2Vzc2liaWxpdHlDYWxsYmFja3MoKTsKKyAgICBib29sIGRpc2Nvbm5lY3RB
Y2Nlc3NpYmlsaXR5Q2FsbGJhY2tzKCk7CisgICAgdm9pZCByZW1vdmVBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uSGFuZGxlcigpOworCisgICAgR1JlZlB0cjxBdGtPYmplY3Q+IG1fcGxhdGZvcm1F
bGVtZW50OworICAgIEpTVmFsdWVSZWYgbV9ub3RpZmljYXRpb25GdW5jdGlvbkNhbGxiYWNrOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNlbmRpZiAvLyBBY2Nlc3NpYmlsaXR5Tm90aWZp
Y2F0aW9uSGFuZGxlckF0a19oCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRB
dGsuY3BwCmluZGV4IDNlNzBmZTQ2YmI1NDQ0MjkwZTczM2Y3YTU5ZGRhNmMyNGM2NDU2YzUuLjRi
Y2ZjZWJkZmJkNWQ0NGU0NjI5N2U0OTMyNThkMTdhNmMwZTY0MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1l
bnRBdGsuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvYXRr
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC0xMTE5LDEzICsxMTE5LDI2IEBAIEpT
UmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1cmwoKQogCiBi
b29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmFkZE5vdGlmaWNhdGlvbkxpc3RlbmVyKEpTVmFs
dWVSZWYgZnVuY3Rpb25DYWxsYmFjaykKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAg
aWYgKCFmdW5jdGlvbkNhbGxiYWNrKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBP
bmx5IG9uZSBub3RpZmljYXRpb24gbGlzdGVuZXIgcGVyIGVsZW1lbnQuCisgICAgaWYgKG1fbm90
aWZpY2F0aW9uSGFuZGxlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9ub3RpZmlj
YXRpb25IYW5kbGVyID0gQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbkhhbmRsZXI6OmNyZWF0ZSgp
OworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+c2V0UGxhdGZvcm1FbGVtZW50KHBsYXRmb3Jt
VUlFbGVtZW50KCkpOworICAgIG1fbm90aWZpY2F0aW9uSGFuZGxlci0+c2V0Tm90aWZpY2F0aW9u
RnVuY3Rpb25DYWxsYmFjayhmdW5jdGlvbkNhbGxiYWNrKTsKKwogICAgIHJldHVybiB0cnVlOwog
fQogCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlmaWNhdGlvbkxpc3Rl
bmVyKCkKIHsKLSAgICAvLyBGSVhNRTogaW1wbGVtZW50CisgICAgLy8gUHJvZ3JhbW1lcnMgc2hv
dWxkIG5vdCBiZSB0cnlpbmcgdG8gcmVtb3ZlIGEgbGlzdGVuZXIgdGhhdCdzIGFscmVhZHkgcmVt
b3ZlZC4KKyAgICBBU1NFUlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKKyAgICBtX25vdGlmaWNh
dGlvbkhhbmRsZXIgPSAwOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDUwYWVmY2EwNzY1NWI3YzEzNWY4YTg2NTc5
MDU1NWJmMDcyZjc4YjAuLjlkMjZkODkzOThmYzJmNjcyN2M0YjM3Y2JkYTdjM2EzYjJmZTUxNzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvUGxhdGZvcm1FZmwuY21ha2UKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNzAsNiArNzAs
NyBAQCBhZGRfZGVmaW5pdGlvbnMoLURGT05UU19DT05GX0RJUj0iJHtUT09MU19ESVJ9L0R1bXBS
ZW5kZXJUcmVlL2d0ay9mb250cyIKIGlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKICAgICBsaXN0
KEFQUEVORCBXZWJLaXRUZXN0UnVubmVySW5qZWN0ZWRCdW5kbGVfU09VUkNFUwogICAgICAgICAk
e1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyQXRrLmNwcAorICAgICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVO
RExFX0RJUn0vYXRrL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyQXRrLmNwcAogICAg
ICAgICAke1dFQktJVF9URVNUUlVOTkVSX0lOSkVDVEVEQlVORExFX0RJUn0vYXRrL0FjY2Vzc2li
aWxpdHlVSUVsZW1lbnRBdGsuY3BwCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdlYktpdFRlc3RS
dW5uZXJfSU5DTFVERV9ESVJFQ1RPUklFUwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>