<?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>85527</bug_id>
          
          <creation_ts>2012-05-03 11:46:12 -0700</creation_ts>
          <short_desc>[Qt][WK2] Add support for multi-select list</short_desc>
          <delta_ts>2012-07-20 07:38:17 -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>WebKit2</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>88418</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dinu Jacob">dinu.jacob</reporter>
          <assigned_to name="Pierre Rossi">pierre.rossi</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>hausmann</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>menard</cc>
    
    <cc>pierre.rossi</cc>
    
    <cc>tkent</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>615454</commentid>
    <comment_count>0</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-03 11:46:12 -0700</bug_when>
    <thetext>Assertion failure on selecting an item from a multi-selection list:

ASSERTION FAILED: i &lt; size()
Source/WTF/wtf/Vector.h(527) : T&amp; WTF::Vector&lt;T, inlineCapacity&gt;::at(size_t) [with T = WebKit::PopupMenuItemModel::Item, unsigned int inlineCapacity = 0u, size_t = unsigned int]
1   0xb734ddfe WebKitBuild/Debug/lib/libWebKit2.so.1(_ZN3WTF6VectorIN6WebKit18PopupMenuItemModel4ItemELj0EE2atEj+0x56) [0xb734ddfe]
2   0xb734d946 WebKitBuild/Debug/lib/libWebKit2.so.1(_ZN3WTF6VectorIN6WebKit18PopupMenuItemModel4ItemELj0EEixEj+0x24) [0xb734d946]
3   0xb734c430 WebKitBuild/Debug/lib/libWebKit2.so.1(_ZN6WebKit18PopupMenuItemModel6selectEi+0x98) [0xb734c430]
4   0xb734bf4f WebKitBuild/Debug/lib/libWebKit2.so.1(_ZN6WebKit25ItemSelectorContextObject6acceptEi+0x2d) [0xb734bf4f]
5   0xb734d2d1 WebKitBuild/Debug/lib/libWebKit2.so.1(+0x6ba2d1) [0xb734d2d1]
6   0xb734d47e WebKitBuild/Debug/lib/libWebKit2.so.1(_ZN6WebKit25ItemSelectorContextObject11qt_metacallEN11QMetaObject4CallEiPPv+0x70) [0xb734d47e]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615460</commentid>
    <comment_count>1</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-03 11:48:34 -0700</bug_when>
    <thetext>Multi-select lists has an invalid selectedIndex(-1). In PopupMenuItemModel::select, attempt to m_items[oldIndex] with oldIndex = m_selectedModelIndex = -1 results in the assertion.

Current implementation supports only single selection list and hence shouldn&apos;t even display the selection list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615471</commentid>
    <comment_count>2</comment_count>
      <attachid>140059</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-03 11:59:57 -0700</bug_when>
    <thetext>Created attachment 140059
Patch

This patch just prevents the selection list from being displayed for multi-select lists. Changes are in the working to actually support multi-select list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615475</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-03 12:05:21 -0700</bug_when>
    <thetext>Attachment 140059 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:234:  Missing space before {  [whitespace/braces] [5]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615485</commentid>
    <comment_count>4</comment_count>
      <attachid>140066</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-03 12:11:21 -0700</bug_when>
    <thetext>Created attachment 140066
Patch with style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>615642</commentid>
    <comment_count>5</comment_count>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2012-05-03 14:37:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=140066) [details]
&gt; Patch with style fix

Question : what about other ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616557</commentid>
    <comment_count>6</comment_count>
      <attachid>140066</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-04 13:05:29 -0700</bug_when>
    <thetext>Comment on attachment 140066
Patch with style fix

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

&gt; Source/WebKit2/ChangeLog:7
&gt; +        Do not display current popup-menu if a multi-select list is requested
&gt; +        as current implementation only supports single selection.

Hm, wouldn&apos;t it be better to extend the itemSelector API to allow for the selection of multiple items? Isn&apos;t that what we need in the end anyway for the itemSelector API to be complete?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616608</commentid>
    <comment_count>7</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-04 13:56:00 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 140066 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140066&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:7
&gt; &gt; +        Do not display current popup-menu if a multi-select list is requested
&gt; &gt; +        as current implementation only supports single selection.
&gt; 
&gt; Hm, wouldn&apos;t it be better to extend the itemSelector API to allow for the selection of multiple items? Isn&apos;t that what we need in the end anyway for the itemSelector API to be complete?


Yes, that is the final target :) I mentioned in the patch comments that the actual support for multi-select list is being worked on. There are missing parts like this one(where UIProcess doesn&apos;t have information on whether the list allows multiple selections), &apos;selected&apos; flag for each item, refactoring of the existing item selector model and context object before actual support for multi-select can be added. I was planning on doing them in increments to keep the changes more manageable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>616696</commentid>
    <comment_count>8</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-04 14:54:21 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Created an attachment (id=140066) [details] [details]
&gt; &gt; Patch with style fix
&gt; 
&gt; Question : what about other ports?

Didn&apos;t see other ports using this attribute in their implementations. So I added this only for Qt port (Was that the question? :) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634127</commentid>
    <comment_count>9</comment_count>
      <attachid>144112</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-25 11:49:01 -0700</bug_when>
    <thetext>Created attachment 144112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634128</commentid>
    <comment_count>10</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-25 11:49:56 -0700</bug_when>
    <thetext>Using the bug to add support for multi-select list. Changed the title to reflect that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634133</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-25 11:52:16 -0700</bug_when>
    <thetext>Attachment 144112 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1
Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:205:  An else should appear on the same line as the preceding }  [whitespace/newline] [4]
Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:221:  Missing space after ,  [whitespace/comma] [3]
Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:295:  Missing space before {  [whitespace/braces] [5]
Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:306:  Missing space before {  [whitespace/braces] [5]
Source/WebKit2/UIProcess/WebPageProxy.cpp:2756:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebKit2/UIProcess/WebPageProxy.cpp:2756:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/WebPageProxy.cpp:2756:  Extra space after ( in function call  [whitespace/parens] [4]
Source/WebKit2/UIProcess/WebPageProxy.cpp:2757:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/UIProcess/WebPageProxy.cpp:2759:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit2/WebProcess/WebCoreSupport/WebPopupMenu.cpp:95:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 10 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634259</commentid>
    <comment_count>12</comment_count>
      <attachid>144141</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-25 13:50:26 -0700</bug_when>
    <thetext>Created attachment 144141
Patch with style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634616</commentid>
    <comment_count>13</comment_count>
      <attachid>144141</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-26 01:17:23 -0700</bug_when>
    <thetext>Comment on attachment 144141
Patch with style fix

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

Just skimming thought... Would be great if Caio could have a look

&gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:67
&gt; +#elif PLATFORM(QT)

I thnk there were another if def used in the theme itself when delegation of multiply selection was used

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_multiSelect.qml:8
&gt; +// FIXME: Moved to Desktop tests because we want to have mouseClick() to open the &lt;select&gt; tag. We can move it back
&gt; +// when TestCase starts supporting touch events, see https://bugreports.qt.nokia.com/browse/QTBUG-23083.

Can you use experimental.test? I have some local patch adding better touch support there.

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/multiselect.html:12
&gt; +    var seloptions =document.getElementById(&apos;sel&apos;).options;
&gt; +    var opt;
&gt; +    var str = new String(&quot;&quot;);
&gt; +    var value = new String(&quot;&quot;);
&gt; +    for (var i=0, len=seloptions.length; i&lt;len; i++)
&gt; +    {

=document ?
len=sel ?

We should use consistent coding style

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2733
&gt; +void WebPageProxy::valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex, bool closePopupMenu)

shouldClosePopuoMenu? closeWhenDone?

It really seems hacked in here. Why not a separate method/message?

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:196
&gt; +        // Update the selected indices list

punctuation at end.

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:206
&gt; +    } else {
&gt; +
&gt; +        int oldIndex = -1;

Why the added newline?

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:244
&gt; +    qSort(list);

Why is the sortign needed?

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.h:71
&gt; +    bool m_allowMultipleSelections;

Maybe this should be an enum? SelectionStyle { SingleSelection, MultiSelection }, just wondering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>635950</commentid>
    <comment_count>14</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-29 06:25:18 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 144141 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144141&amp;action=review
&gt; 
&gt; Just skimming thought... Would be great if Caio could have a look
&gt; 
&gt; &gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:67
&gt; &gt; +#elif PLATFORM(QT)
&gt; 
&gt; I thnk there were another if def used in the theme itself when delegation of multiply selection was used
&gt;
Please let me know if there is any other way of getting this information. 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_multiSelect.qml:8
&gt; &gt; +// FIXME: Moved to Desktop tests because we want to have mouseClick() to open the &lt;select&gt; tag. We can move it back
&gt; &gt; +// when TestCase starts supporting touch events, see https://bugreports.qt.nokia.com/browse/QTBUG-23083.
&gt; 
&gt; Can you use experimental.test? I have some local patch adding better touch support there.
&gt; 
Sure. I will use that.
&gt; &gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/common/multiselect.html:12
&gt; &gt; +    var seloptions =document.getElementById(&apos;sel&apos;).options;
&gt; &gt; +    var opt;
&gt; &gt; +    var str = new String(&quot;&quot;);
&gt; &gt; +    var value = new String(&quot;&quot;);
&gt; &gt; +    for (var i=0, len=seloptions.length; i&lt;len; i++)
&gt; &gt; +    {
&gt; 
&gt; =document ?
&gt; len=sel ?
&gt; 
Will fix it.
&gt; We should use consistent coding style
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2733
&gt; &gt; +void WebPageProxy::valueChangedForPopupMenu(WebPopupMenuProxy*, int32_t newSelectedIndex, bool closePopupMenu)
&gt; 
&gt; shouldClosePopuoMenu? closeWhenDone?
&gt; 
&gt; It really seems hacked in here. Why not a separate method/message?
&gt; 
I did this is to avoid making changes in other ports. I can add new methods for QT that splits this into two.

&gt; &gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:196
&gt; &gt; +        // Update the selected indices list
&gt; 
&gt; punctuation at end.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:206
&gt; &gt; +    } else {
&gt; &gt; +
&gt; &gt; +        int oldIndex = -1;
&gt; 
&gt; Why the added newline?
&gt; 

&gt; &gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:244
&gt; &gt; +    qSort(list);
&gt; 
&gt; Why is the sortign needed?
&gt; 
For multi-select, more than one index can be in selected state. The smallest indexed item is what is displayed. The selected indices are sorted to determine the smallest when finally closing the popup menu.
&gt; &gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.h:71
&gt; &gt; +    bool m_allowMultipleSelections;
&gt; 
&gt; Maybe this should be an enum? SelectionStyle { SingleSelection, MultiSelection }, just wondering
Yes, it might be better to use an enum</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636046</commentid>
    <comment_count>15</comment_count>
      <attachid>144141</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-05-29 08:20:54 -0700</bug_when>
    <thetext>Comment on attachment 144141
Patch with style fix

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

From an API point of view in QML, I&apos;m missing something in that change: the fact that a multiple picker is needed or not. I think a &quot;multiple&quot; property of some sort should be exposed in the context object to enforce single selection when the select element expects only one item to be picked and allow picking multiple in other cases.
So essentially one could have two different components for that. I think I&apos;d also have gone for overloads taking a list or a vector of the selected indices and passing that only once to the web process once the selection process is over rather than trying to stick too closely to the very synchronous listbox approach.

&gt;&gt;&gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:67
&gt;&gt;&gt; +#elif PLATFORM(QT)
&gt;&gt; 
&gt;&gt; I thnk there were another if def used in the theme itself when delegation of multiply selection was used
&gt; 
&gt; Please let me know if there is any other way of getting this information.

Actually it&apos;s now a runtime thing in RenderTheme (RenderTheme::delegatesMenuListRendering which returns false by default but is reimplemented in the mobile theme to return true). So in that case I think PLATFORM(QT) is the right thing to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636067</commentid>
    <comment_count>16</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-29 08:42:51 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 144141 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=144141&amp;action=review
&gt; 
&gt; From an API point of view in QML, I&apos;m missing something in that change: the fact that a multiple picker is needed or not. I think a &quot;multiple&quot; property of some sort should be exposed in the context object to enforce single selection when the select element expects only one item to be picked and allow picking multiple in other cases.
&gt; So essentially one could have two different components for that. I think I&apos;d also have gone for overloads taking a list or a vector of the selected indices and passing that only once to the web process once the selection process is over rather than trying to stick too closely to the very synchronous listbox approach.
&gt; 
Thanks. 
- Yes, I missed exposing that as a property in the context object though the information has been trickled down. I will add that.

- The reason why the change for each index is sent to WebProcess rather than using a list of indicies is for any onchange event listeners to trigger when the selection/de-selection happens.

&gt; &gt;&gt;&gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:67
&gt; &gt;&gt;&gt; +#elif PLATFORM(QT)
&gt; &gt;&gt; 
&gt; &gt;&gt; I thnk there were another if def used in the theme itself when delegation of multiply selection was used
&gt; &gt; 
&gt; &gt; Please let me know if there is any other way of getting this information.
&gt; 
&gt; Actually it&apos;s now a runtime thing in RenderTheme (RenderTheme::delegatesMenuListRendering which returns false by default but is reimplemented in the mobile theme to return true). So in that case I think PLATFORM(QT) is the right thing to use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636375</commentid>
    <comment_count>17</comment_count>
      <attachid>144606</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-29 13:18:43 -0700</bug_when>
    <thetext>Created attachment 144606
Patch with fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638349</commentid>
    <comment_count>18</comment_count>
      <attachid>144606</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-05-31 06:45:37 -0700</bug_when>
    <thetext>Comment on attachment 144606
Patch with fixes

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

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_itemSelector.qml:24
&gt; +                model.close()

I don&apos;t like this change. All the dialogs have accept(), reject(), and dismiss(), where the latter is a neutral &quot;close&quot; and the two former implies the latter.

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_multiSelect.qml:26
&gt; +        Timer {
&gt; +            running: true
&gt; +            interval: 1
&gt; +            onTriggered: {
&gt; +                var selectedIndices = [0,1]
&gt; +                if (model.allowMultiSelect &amp;&amp; selectItems){
&gt; +                    for (var i = 0; i &lt;  selectedIndices.length; i++)
&gt; +                        model.accept(selectedIndices[i])
&gt; +                }
&gt; +                model.close();

There&apos;s no need for a timer here anymore, you should be able to do the test in  Component.onCompleted: {} like the other dialog tests do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638593</commentid>
    <comment_count>19</comment_count>
      <attachid>145120</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-31 11:23:46 -0700</bug_when>
    <thetext>Created attachment 145120
Patch

Changes from latest review comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638694</commentid>
    <comment_count>20</comment_count>
      <attachid>145120</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-05-31 13:58:31 -0700</bug_when>
    <thetext>Comment on attachment 145120
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2759
&gt; +#if PLATFORM(QT)

Could those be in WebPageProxyQt.cpp maybe ?

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:246
&gt; +    qSort(list);

In general, couldn&apos;t we avoid this whole logic of determining this selectedOriginalIndex() in the UI process at that point and passing it along with the HidePopupMenu messgage ?

Why not update the Button&apos;s text directly in the WebProcess ?

Seems to me that something like this should work:
void RenderMenuList::listBoxSelectItem(int listIndex, bool allowMultiplySelections, bool shift, bool fireOnChangeNow)
{
    HTMLSelectElement* select = toHTMLSelectElement(node());
    select-&gt;listBoxSelectItem(listIndex, allowMultiplySelections, shift, fireOnChangeNow);
#if PLATFORM(QT)
    const int firstSelectedIndex = select-&gt;selectedIndex();
    if (listIndex &lt;= firstSelectedIndex)
        setTextFromItem(firstSelectedIndex);
#endif
}

With the added benefit of updating the combo button directly during the selection process.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2344
&gt; +#if PLATFORM(QT)

Same as above. WebPageQt.cpp ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638898</commentid>
    <comment_count>21</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-31 19:07:22 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 145120 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145120&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.cpp:2759
&gt; &gt; +#if PLATFORM(QT)
&gt; 
&gt; Could those be in WebPageProxyQt.cpp maybe ?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:246
&gt; &gt; +    qSort(list);
&gt; 
&gt; In general, couldn&apos;t we avoid this whole logic of determining this selectedOriginalIndex() in the UI process at that point and passing it along with the HidePopupMenu messgage ?
&gt; 
&gt; Why not update the Button&apos;s text directly in the WebProcess ?
&gt; 
&gt; Seems to me that something like this should work:
&gt; void RenderMenuList::listBoxSelectItem(int listIndex, bool allowMultiplySelections, bool shift, bool fireOnChangeNow)
&gt; {
&gt;     HTMLSelectElement* select = toHTMLSelectElement(node());
&gt;     select-&gt;listBoxSelectItem(listIndex, allowMultiplySelections, shift, fireOnChangeNow);
&gt; #if PLATFORM(QT)
&gt;     const int firstSelectedIndex = select-&gt;selectedIndex();
&gt;     if (listIndex &lt;= firstSelectedIndex)
&gt;         setTextFromItem(firstSelectedIndex);
&gt; #endif
&gt; }
&gt; 
&gt; With the added benefit of updating the combo button directly during the selection process.

Yes, I think this is much cleaner. This will eliminate having to maintain the list of selected indices as well.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2344
&gt; &gt; +#if PLATFORM(QT)
&gt; 
&gt; Same as above. WebPageQt.cpp ?


Didn&apos;t realize there was a Qt specific file for WebPage.cpp and WebPageProxy.cpp. Will move the changes there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638899</commentid>
    <comment_count>22</comment_count>
      <attachid>145192</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-31 19:08:00 -0700</bug_when>
    <thetext>Created attachment 145192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638903</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-31 19:10:12 -0700</bug_when>
    <thetext>Attachment 145192 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:194:  Extra space before ) in if  [whitespace/parens] [5]
Total errors found: 1 in 21 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638914</commentid>
    <comment_count>24</comment_count>
      <attachid>145197</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-05-31 19:27:54 -0700</bug_when>
    <thetext>Created attachment 145197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639211</commentid>
    <comment_count>25</comment_count>
      <attachid>145197</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-06-01 05:05:45 -0700</bug_when>
    <thetext>Comment on attachment 145197
Patch

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

&gt; Source/WebKit2/UIProcess/API/qt/tests/qmltests/WebView/tst_multiSelect.qml:23
&gt; +            if (model.allowMultiSelect &amp;&amp; selectItems){
&gt; +                for (var i = 0; i &lt;  selectedIndices.length; i++)
&gt; +                    model.accept(selectedIndices[i])
&gt; +            }
&gt; +            model.dismiss();

I think perhaps a better API for this would be a bunch of select(index), with a following accept()

accept(index) would be shorthand for select(index) &amp;&amp; accept()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639804</commentid>
    <comment_count>26</comment_count>
      <attachid>145393</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-06-01 15:51:13 -0700</bug_when>
    <thetext>Created attachment 145393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639854</commentid>
    <comment_count>27</comment_count>
      <attachid>145404</attachid>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-06-01 16:31:16 -0700</bug_when>
    <thetext>Created attachment 145404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657526</commentid>
    <comment_count>28</comment_count>
      <attachid>145404</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-06-26 05:20:19 -0700</bug_when>
    <thetext>Comment on attachment 145404
Patch

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

Otherwise it looks good I think. Have you pinged any reviewers recently?

&gt; Source/WebCore/rendering/RenderMenuList.cpp:349
&gt; +    setTextFromItem(firstSelectedIndex);

Missing indentation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660630</commentid>
    <comment_count>29</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2012-06-29 10:51:08 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 145404 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=145404&amp;action=review
&gt; 
&gt; Otherwise it looks good I think. Have you pinged any reviewers recently?
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderMenuList.cpp:349
&gt; &gt; +    setTextFromItem(firstSelectedIndex);
&gt; 
&gt; Missing indentation?

Will fix that. No, I didn&apos;t ping any reviewers after the re-org at Nokia :( I will ping them now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662935</commentid>
    <comment_count>30</comment_count>
      <attachid>145404</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-07-04 07:37:11 -0700</bug_when>
    <thetext>Comment on attachment 145404
Patch

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

While we&apos;re at it on small refinements... ;)

&gt; Source/WebCore/rendering/RenderMenuList.cpp:348
&gt; +    if (listIndex &lt;= firstSelectedIndex)

Changing this condition to take into account the de-selection of the last item would be icing on the cake.
Something along that line should do:
if (listIndex &lt;= firstSelectedIndex || firstSelectedIndex &lt; 0)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663659</commentid>
    <comment_count>31</comment_count>
      <attachid>145404</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-07-05 11:18:06 -0700</bug_when>
    <thetext>Comment on attachment 145404
Patch

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

&gt; Source/WebCore/rendering/RenderMenuList.cpp:347
&gt; +    const int firstSelectedIndex = select-&gt;selectedIndex();

As discussed on IRC, this should be a separate patch with ref. to possible spec behavior etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>673651</commentid>
    <comment_count>32</comment_count>
      <attachid>153299</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-07-19 10:39:30 -0700</bug_when>
    <thetext>Created attachment 153299
Patch

Updated Dinu&apos;s patch based on previous comments. Leaving RenderMenuList out of it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674095</commentid>
    <comment_count>33</comment_count>
      <attachid>153299</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-07-19 20:37:59 -0700</bug_when>
    <thetext>Comment on attachment 153299
Patch

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

I think this is fine for the initial commit. Why no test?

&gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:69
&gt; +#elif PLATFORM(QT)
&gt; +    encoder-&gt;encode(multipleSelections);
&gt;  #endif

Other ports might want this, maybe we can find another define

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:63
&gt; +    void selectItem(int);

isnt this more of a toggleItem? im just wondering

&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:145
&gt; +    if ((index == -1 ) &amp;&amp; m_items.multiple())

some werd space there</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674553</commentid>
    <comment_count>34</comment_count>
      <attachid>153299</attachid>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-07-20 07:29:25 -0700</bug_when>
    <thetext>Comment on attachment 153299
Patch

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

&gt;&gt; Source/WebKit2/Shared/PlatformPopupMenuData.cpp:69
&gt;&gt;  #endif
&gt; 
&gt; Other ports might want this, maybe we can find another define

Technically we could expose it for everybody, and leave it up to each port to use it or not. AFAIK, we&apos;re the only WK2 port to delegate menu list rendering (formerly guarded by NO_LISTBOX_RENDERING). If anybody else shows interest in this, we can always change it.

&gt;&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:63
&gt;&gt; +    void selectItem(int);
&gt; 
&gt; isnt this more of a toggleItem? im just wondering

Agreed, I also think it is a more accurate description.

&gt;&gt; Source/WebKit2/UIProcess/qt/WebPopupMenuProxyQt.cpp:145
&gt;&gt; +    if ((index == -1 ) &amp;&amp; m_items.multiple())
&gt; 
&gt; some werd space there

Will fix that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674560</commentid>
    <comment_count>35</comment_count>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2012-07-20 07:38:17 -0700</bug_when>
    <thetext>Committed r123216: &lt;http://trac.webkit.org/changeset/123216&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140059</attachid>
            <date>2012-05-03 11:59:57 -0700</date>
            <delta_ts>2012-05-03 12:11:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527.patch</filename>
            <type>text/plain</type>
            <size>4325</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzOTg3NWRhLi45MzQyMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMDUtMDMgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQVNTRVJUIGZhaWx1cmUgd2hlbiBzZWxlY3RpbmcgYW4gaXRlbSBmcm9t
IGEgbXVsdGktc2VsZWN0aW9uIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg1NTI3CisKKyAgICAgICAgRG8gbm90IGRpc3BsYXkgY3VycmVudCBw
b3B1cC1tZW51IGlmIGEgbXVsdGktc2VsZWN0IGxpc3QgaXMgcmVxdWVzdGVkCisgICAgICAgIGFz
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBzaW5nbGUgc2VsZWN0aW9uLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVk
L1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51
RGF0YS5oOgorICAgICAgICAoUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKwogMjAxMi0wNS0wMyAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG9jdW1lbnQg
dGhlIFFNTCBXZWJWaWV3RXhwZXJpbWVudGFsIEFQSSBkZXZpY2VQaXhlbFJhdGlvLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAppbmRleCA2YzRk
MjBlLi5iNjI3YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBs
YXRmb3JtUG9wdXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQoMCkKICAgICAs
IG1fcG9wdXBXaWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQTEFURk9STShR
VCkKKyAgICA6IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewogfQpAQCAtNjIs
NiArNjQsOCBAQCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBl
bmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShzaG91bGRQb3BP
dmVyKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShtdWx0aXBsZVNl
bGVjdGlvbnMpOwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBs
YXRmb3JtUG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEuc2hvdWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFBMQVRG
T1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25z
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXgg
Zjg1MDA4YS4uMjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRm
b3JtUG9wdXBNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBv
cHVwTWVudURhdGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhIHsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBi
b29sIHNob3VsZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29sIG11bHRpcGxl
U2VsZWN0aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCmluZGV4IDlmOTEwMGEuLjIwN2MxMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5jcHAKQEAgLTIyOSw4ICsyMjksMTMgQEAgV2ViUG9wdXBNZW51UHJveHlRdDo6fldlYlBvcHVw
TWVudVByb3h5UXQoKQogewogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1
cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91Ymxl
LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBN
ZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlR
dDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7CisgICAg
aWYgKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25zKXsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgbV9zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRl
eDsKIAogICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcg
SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChyZWN0LCBpdGVtcywgbV9zZWxlY3RlZEluZGV4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQv
V2ViUG9wdXBNZW51UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAKaW5kZXggYjIxZjA2Yy4uZjBhOGY3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1
cE1lbnVRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAKQEAgLTI3LDEzICsyNywxNSBAQAogI2luY2x1ZGUgIldl
YlBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCisjaW5j
bHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit2b2lkIFdl
YlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9w
dXBNZW51RGF0YSYgZGF0YSkKIHsKKyAgICBkYXRhLm11bHRpcGxlU2VsZWN0aW9ucyA9IG1fcG9w
dXBDbGllbnQtPm11bHRpcGxlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140066</attachid>
            <date>2012-05-03 12:11:21 -0700</date>
            <delta_ts>2012-05-25 11:49:01 -0700</delta_ts>
            <desc>Patch with style fix</desc>
            <filename>85527.patch</filename>
            <type>text/plain</type>
            <size>4326</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzOTg3NWRhLi45MzQyMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTItMDUtMDMgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQVNTRVJUIGZhaWx1cmUgd2hlbiBzZWxlY3RpbmcgYW4gaXRlbSBmcm9t
IGEgbXVsdGktc2VsZWN0aW9uIGxpc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg1NTI3CisKKyAgICAgICAgRG8gbm90IGRpc3BsYXkgY3VycmVudCBw
b3B1cC1tZW51IGlmIGEgbXVsdGktc2VsZWN0IGxpc3QgaXMgcmVxdWVzdGVkCisgICAgICAgIGFz
IGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBzaW5nbGUgc2VsZWN0aW9uLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVk
L1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51
RGF0YS5oOgorICAgICAgICAoUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
b3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKToKKwogMjAxMi0wNS0wMyAgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG9jdW1lbnQg
dGhlIFFNTCBXZWJWaWV3RXhwZXJpbWVudGFsIEFQSSBkZXZpY2VQaXhlbFJhdGlvLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAppbmRleCA2YzRk
MjBlLi5iNjI3YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBs
YXRmb3JtUG9wdXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQoMCkKICAgICAs
IG1fcG9wdXBXaWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQTEFURk9STShR
VCkKKyAgICA6IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewogfQpAQCAtNjIs
NiArNjQsOCBAQCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFy
Z3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBl
bmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShzaG91bGRQb3BP
dmVyKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShtdWx0aXBsZVNl
bGVjdGlvbnMpOwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBs
YXRmb3JtUG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KGRhdGEuc2hvdWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFBMQVRG
T1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25z
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXgg
Zjg1MDA4YS4uMjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRm
b3JtUG9wdXBNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBv
cHVwTWVudURhdGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhIHsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBi
b29sIHNob3VsZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29sIG11bHRpcGxl
U2VsZWN0aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCmluZGV4IDlmOTEwMGEuLjIwN2MxMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5jcHAKQEAgLTIyOSw4ICsyMjksMTMgQEAgV2ViUG9wdXBNZW51UHJveHlRdDo6fldlYlBvcHVw
TWVudVByb3h5UXQoKQogewogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1
cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91Ymxl
LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBN
ZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlR
dDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0
aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCiB7CisgICAg
aWYgKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25zKSB7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5k
ZXg7CiAKICAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3
IEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QocmVjdCwgaXRlbXMsIG1fc2VsZWN0ZWRJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0
L1dlYlBvcHVwTWVudVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCmluZGV4IGIyMWYwNmMuLmYwYThmNzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9w
dXBNZW51UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCkBAIC0yNywxMyArMjcsMTUgQEAKICNpbmNsdWRlICJX
ZWJQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2lu
Y2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxh
dGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQordm9pZCBX
ZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBv
cHVwTWVudURhdGEmIGRhdGEpCiB7CisgICAgZGF0YS5tdWx0aXBsZVNlbGVjdGlvbnMgPSBtX3Bv
cHVwQ2xpZW50LT5tdWx0aXBsZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144112</attachid>
            <date>2012-05-25 11:49:01 -0700</date>
            <delta_ts>2012-05-25 13:50:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527.patch</filename>
            <type>text/plain</type>
            <size>35841</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1ZWVlM2U4Li42MWY1NzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEyLTA1LTI1ICBEaW51IEphY29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAg
ICAgICAgW1F0XVtXSzJdIEFkZCBzdXBwb3J0IGZvciBtdWx0aS1zZWxlY3QgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZv
ciBtdWx0aS1zZWxlY3QgbGlzdC4gRm9yIG11bHRpLXNlbGVjdCBsaXN0LCB0aGUgcG9wdXAgbWVu
dSBpcyBub3QgY2xvc2VkIG9uIHNlbGVjdGluZworICAgICAgICBhbiBpdGVtIGFuZCByZXF1aXJl
cyBleHBsaWNpdCBjYWxsIHRvIGhpZGUgdGhlIG1lbnUuIFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0
byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgbWVudQorICAgICAgICBpcyBoaWRkZW4gaXMgcHJvdmlk
ZWQgd2l0aCByZXF1ZXN0IHRvIGhpZGUgdGhlIHBvcHVwLgorCisgICAgICAgIC0gQWRkZWQgbXVs
dGktc2VsZWN0aW9uIGZsYWcgdG8gUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHRvIGluZGljYXRlIHdo
ZXRoZXIgdG8gYWNjZXB0IG11bHRpcGxlIHNlbGVjdGlvbnMgb3Igbm90LgorICAgICAgICAtIEFk
ZGVkIHNlbGVjdGVkIHN0YXRlIHRvIFdlYlBvcHVwSXRlbS4KKyAgICAgICAgLSBNb2RpZmllZCBX
ZWJQb3B1cE1lbnVRdCB0byBzdXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbnMuCisKKyAgICAgICAg
KiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjpQbGF0Zm9ybVBvcHVwTWVudURhdGEpOiBBZGRlZCBtZW1iZXIg
aW5kaWNhdGluZyBtdWx0aS1zZWxlY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaDoK
KyAgICAgICAgKFBsYXRmb3JtUG9wdXBNZW51RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYlBv
cHVwSXRlbS5jcHA6IEFkZGVkIG5ldyBtZW1iZXIgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgaXRl
bSBoYXMgYmVlbiBzZWxlY3RlZCBvciBub3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRl
bTo6V2ViUG9wdXBJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sOiBVc2UgcmVuYW1lZCBz
aWduYWwgdG8gaGlkZSB0aGUgbWVudS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbXVsdGlTZWxlY3QucW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVj
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUpOiBB
ZGRlZCBuZXcgYXJndW1lbnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaGlkZSB0aGUgbWVudS4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2VQ
b3B1cE1lbnUpOiBOZXcgQVBJIHRoYXQgc2VuZHMgcmVxdWVzdCB0byBoaWRlIHRoZSBwb3B1cCBt
ZW51IHdpdGggdGhlIGl0ZW0gdG8gYmUgZGlzcGxheWVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDogU2V0IHRoZSBkZWZhdWx0IG9mIG5ldyBhcmd1bWVudCB0byB2YWx1ZUNo
YW5nZWRGb3JQb3B1cE1lbnUgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5Lmg6IEFkZGVkIG5ldyBBUEkgdG8gcmVx
dWVzdCB0byBoaWRlIHBvcHVwIG1lbnUgYW5kIG5ldyBhcmd1bWVudCB0byB2YWx1ZUNoYW5nZWRG
b3JQb3B1cE1lbnUKKyAgICAgICAgICB0byBkZXRlcm1pbmUgd2hldGhlciB0byBjbG9zZSB0aGUg
cG9wdXAgbWVudSBhcyB3ZWxsLgorICAgICAgICAoQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAgIChQb3B1cE1lbnVJdGVtTW9k
ZWwpOiBSZW1vdmVkIHNlbGVjdGVkT3JpZ2luYWxJbmRleCBhbmQgYWRkZWQgbmV3IGFyZ3VtZW50
IHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgaXQgaXMgYSBtdWx0aS1zZWxlY3QgbGlzdC4KKyAgICAg
ICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjptdWx0aXBsZSk6IEFkZGVkIHRvIGluZGlj
YXRlIHdoZXRoZXIgdG8gYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucy4KKyAgICAgICAgKFdlYktp
dDo6UG9wdXBNZW51SXRlbU1vZGVsOjpJdGVtOjpJdGVtKToKKyAgICAgICAgKEl0ZW1TZWxlY3Rv
ckNvbnRleHRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2Jq
ZWN0OjpjbG9zZSk6IFJlbmFtZWQgcmVqZWN0IHRvIGNsb3NlIHRvIGJlIGdlbmVyaWMgZm9yIGJv
dGggc2luZ2xlLXNlbGVjdCBhcyB3ZWxsIGFzIG11bHRpLXNlbGVjdCBsaXN0cy4KKyAgICAgICAg
KFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdCk6IEFkZGVkICBuZXcgYXJndW1lbnQgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBpdCBpcyBh
IG11bHRpLXNlbGVjdCBsaXN0LgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0OjphY2NlcHQpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OlBv
cHVwTWVudUl0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6
c2VsZWN0KTogQWRkcy9yZXBsYWNlcyB0aGUgaW5kZXggaW4gdGhlIHNlbGVjdGVkIGluZGljZXMg
bGlzdC4gRm9yIHNpbmdsZSBzZWxlY3QgbGlzdCwKKyAgICAgICAgcmVtb3ZlcyB0aGUgb2xkIGlu
ZGV4IChpZiBhbnkpIGZyb20gdGhlIHNlbGVjdGVkIGluZGljZXMgbGlzdC4KKyAgICAgICAgKFdl
YktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpvcmlnaW5hbEluZGV4KTogUmV0dXJucyB0aGUgb3Jp
Z2luYWwgaW5kZXggb2YgdGhlIGl0ZW0gZnJvbSB0aGUgbGlzdC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0ZWRPcmlnaW5hbElu
ZGV4KTogVGhpcyBpcyB0aGUgKG9yaWdpbmFsKSBpbmRleCB0byBiZSBkaXNwbGF5ZWQgLSB0aGlz
IGlzIHRoZSBsb3dlc3QgaW5kZXhlZCBpdGVtIHRoYXQKKyAgICAgICAgaXMgaW4gc2VsZWN0ZWQg
c3RhdGUgZm9yIG11bHRpLXNlbGVjdC4KKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1v
ZGVsOjpidWlsZEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6
c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6Omhp
ZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxl
Y3RJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oOgorICAgICAg
ICAoV2ViUG9wdXBNZW51UHJveHlRdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmRp
ZENoYW5nZVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnBv
cHVsYXRlSXRlbXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9w
dXBNZW51Lmg6CisgICAgICAgIChXZWJQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKTogUG9scHVsYXRlIGRhdGEgd2l0aCBtdWx0
aXBsZVNlbGVjdGlvbnMgZmxhZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhG
b3JBY3RpdmVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBOZXcgbWVzc2FnZSB0byByZXF1ZXN0IHRoZSBwb3B1cCBt
ZW51IHRvIGJlIGhpZGRlbi4KKwogMjAxMi0wNS0yMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIGFkZCBiYWNrIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgZmxleGJv
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcApp
bmRleCA2YzRkMjBlLi5iNjI3YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQo
MCkKICAgICAsIG1fcG9wdXBXaWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQ
TEFURk9STShRVCkKKyAgICA6IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewog
fQpAQCAtNjIsNiArNjQsOCBAQCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1B
QykKICAgICBlbmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShz
aG91bGRQb3BPdmVyKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZSht
dWx0aXBsZVNlbGVjdGlvbnMpOwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQ
bGF0Zm9ybVBvcHVwTWVudURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFBsYXRmb3JtUG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGRhdGEuc2hvdWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bGlmIFBMQVRGT1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVT
ZWxlY3Rpb25zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmgKaW5kZXggZjg1MDA4YS4uMjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bGF0Zm9ybVBvcHVwTWVudURhdGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhIHsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5m
bzsKICAgICBib29sIHNob3VsZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29s
IG11bHRpcGxlU2VsZWN0aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UG9wdXBJdGVtLmNwcAppbmRleCBhOWFjMDMyLi5jMjE1ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUG9wdXBJdGVtLmNwcApAQCAtMzksNiArMzksNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBv
cHVwSXRlbSgpCiAgICAgLCBtX3RleHREaXJlY3Rpb24oTFRSKQogICAgICwgbV9oYXNUZXh0RGly
ZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQorICAgICwgbV9p
c1NlbGVjdGVkKGZhbHNlKQogewogfQogCkBAIC00OCwxMCArNDksMTEgQEAgV2ViUG9wdXBJdGVt
OjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc0xhYmVsKGZhbHNl
KQorICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQogewogfQogCi1XZWJQb3B1cEl0ZW06OldlYlBv
cHVwSXRlbShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0
RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0
b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwg
Ym9vbCBpc0xhYmVsKQorV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0
RGlyZWN0aW9uT3ZlcnJpZGUsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBh
Y2Nlc3NpYmlsaXR5VGV4dCwgYm9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCwgYm9vbCBpc1Nl
bGVjdGVkKQogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBtX3RleHQodGV4dCkKICAgICAsIG1f
dGV4dERpcmVjdGlvbih0ZXh0RGlyZWN0aW9uKQpAQCAtNjAsMTIgKzYyLDE0IEBAIFdlYlBvcHVw
SXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGly
ZWN0aW9uIHRleHREaXJlCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2liaWxpdHlU
ZXh0KQogICAgICwgbV9pc0VuYWJsZWQoaXNFbmFibGVkKQogICAgICwgbV9pc0xhYmVsKGlzTGFi
ZWwpCisgICAgLCBtX2lzU2VsZWN0ZWQoaXNTZWxlY3RlZCkKIHsKIH0KIAogdm9pZCBXZWJQb3B1
cEl0ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X3R5cGUpLCBtX3RleHQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3RleHREaXJlY3Rpb24pLCBt
X2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgbV90b29sVGlwLCBtX2FjY2Vzc2liaWxpdHlUZXh0
LCBtX2lzRW5hYmxlZCwgbV9pc0xhYmVsKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6
OkluKG1faXNTZWxlY3RlZCkpOwogfQogCiBib29sIFdlYlBvcHVwSXRlbTo6ZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViUG9wdXBJdGVtJiBpdGVtKQpAQCAtNzgs
MTAgKzgyLDE1IEBAIGJvb2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCiAgICAgU3RyaW5nIGFjY2Vzc2li
aWxpdHlUZXh0OwogICAgIGJvb2wgaXNFbmFibGVkOwogICAgIGJvb2wgaXNMYWJlbDsKKyAgICBi
b29sIGlzU2VsZWN0ZWQ7CisKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQo
dHlwZSwgdGV4dCwgdGV4dERpcmVjdGlvbiwgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCB0b29s
VGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4o
dHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBo
YXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0Vu
YWJsZWQsIGlzTGFiZWwpOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChp
c1NlbGVjdGVkKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGl0ZW0gPSBXZWJQb3B1
cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJl
Y3Rpb24+KHRleHREaXJlY3Rpb24pLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAs
IGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UG9wdXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgKaW5kZXgg
M2RjNjFkNy4uZDg1ODRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBv
cHVwSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaApAQCAt
NDQsNyArNDQsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKIAogICAgIFdlYlBvcHVwSXRlbSgp
OwogICAgIFdlYlBvcHVwSXRlbShUeXBlKTsKLSAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rp
b25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2li
aWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsKTsKKyAgICBXZWJQb3B1cEl0
ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29s
IGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBT
dHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBi
b29sIGlzU2VsZWN0ZWQpOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciosIFdlYlBvcHVwSXRlbSYpOwpAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJ
dGVtIHsKICAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBib29sIG1faXNFbmFi
bGVkOwogICAgIGJvb2wgbV9pc0xhYmVsOworICAgIGJvb2wgbV9pc1NlbGVjdGVkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfaXRlbVNlbGVjdG9y
LnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVz
a3RvcEJlaGF2aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sCmluZGV4IGQzZDc3ODYuLjMwY2NlNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9p
dGVtU2VsZWN0b3IucW1sCkBAIC0yMyw3ICsyMyw3IEBAIFRlc3RXZWJWaWV3IHsKICAgICAgICAg
ICAgICAgICBtb2RlbC5pdGVtcy5zZWxlY3QoV2ViVmlldy52aWV3LmluaXRpYWxTZWxlY3Rpb24p
CiAKICAgICAgICAgICAgIGlmIChXZWJWaWV3LnZpZXcuZmluYWxTZWxlY3Rpb24gPT0gLTEpCi0g
ICAgICAgICAgICAgICAgbW9kZWwucmVqZWN0KCkKKyAgICAgICAgICAgICAgICBtb2RlbC5jbG9z
ZSgpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAodXNlQWNjZXB0RGly
ZWN0bHkpIHsKICAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KFdlYlZpZXcudmlldy5m
aW5hbFNlbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9tdWx0aVNlbGVjdC5xbWwgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhh
dmlvci90c3RfbXVsdGlTZWxlY3QucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmVlZDNkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbXVsdGlTZWxlY3QucW1s
CkBAIC0wLDAgKzEsNzIgQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAK
K2ltcG9ydCBRdFdlYktpdCAzLjAKK2ltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMS4wCitp
bXBvcnQgIi4uL2NvbW1vbiIKKworLy8gRklYTUU6IE1vdmVkIHRvIERlc2t0b3AgdGVzdHMgYmVj
YXVzZSB3ZSB3YW50IHRvIGhhdmUgbW91c2VDbGljaygpIHRvIG9wZW4gdGhlIDxzZWxlY3Q+IHRh
Zy4gV2UgY2FuIG1vdmUgaXQgYmFjaworLy8gd2hlbiBUZXN0Q2FzZSBzdGFydHMgc3VwcG9ydGlu
ZyB0b3VjaCBldmVudHMsIHNlZSBodHRwczovL2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dz
ZS9RVEJVRy0yMzA4My4KK1Rlc3RXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworCisgICAgd2lk
dGg6IDQwMAorICAgIGhlaWdodDogNDAwCisKKyAgICBwcm9wZXJ0eSBib29sIHNlbGVjdEl0ZW1z
CisKKyAgICBleHBlcmltZW50YWwuaXRlbVNlbGVjdG9yOiBJdGVtIHsKKyAgICAgICAgVGltZXIg
eworICAgICAgICAgICAgcnVubmluZzogdHJ1ZQorICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAg
ICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkSW5k
aWNlcyA9IFswLDFdCisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEl0ZW1zKXsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAgc2VsZWN0ZWRJbmRpY2VzLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KHNlbGVjdGVkSW5kaWNl
c1tpXSkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAg
ICAgIGlkOiB0aXRsZVNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFs
TmFtZTogInRpdGxlQ2hhbmdlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIGlk
OiB0ZXN0CisgICAgICAgIG5hbWU6ICJXZWJWaWV3TXVsdGlJdGVtU2VsZWN0b3IiCisgICAgICAg
IHdoZW46IHdpbmRvd1Nob3duCisKKyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAg
ICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9tdWx0aXNlbGVjdC5o
dG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkp
CisgICAgICAgICAgICB0aXRsZVNweS5jbGVhcigpCisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvcGVuSXRlbVNlbGVjdG9yKCkgeworICAgICAgICAgICAgbW91c2VDbGljayh3ZWJWaWV3
LCAxNSwgMTUsIFF0LkxlZnRCdXR0b24pCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0
ZXN0X3JlamVjdCgpIHsKKyAgICAgICAgICAgIHZhciBvbGRUaXRsZSA9IHdlYlZpZXcudGl0bGUK
KyAgICAgICAgICAgIHdlYlZpZXcuc2VsZWN0SXRlbXMgPSBmYWxzZTsKKyAgICAgICAgICAgIG9w
ZW5JdGVtU2VsZWN0b3IoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCBvbGRU
aXRsZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfYWNjZXB0KCkgeworICAg
ICAgICAgICAgd2ViVmlldy5zZWxlY3RJdGVtcyA9IHRydWU7CisgICAgICAgICAgICBvcGVuSXRl
bVNlbGVjdG9yKCkKKyAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19vcGVuX18iKQorICAgICAgICAgICAgdGl0bGVTcHkud2Fp
dCgpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJfX29wZW5fXyxfX2Nsb3Nl
ZF9fIikKKworICAgICAgICB9CisKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211bHRpc2VsZWN0Lmh0
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1v
bi9tdWx0aXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEw
NzFhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5ObyBuZXcgc2VsZWN0aW9u
IHdhcyBtYWRlPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB1cGRhdGUoKSB7CisgICAgdmFy
IHNlbG9wdGlvbnMgPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWwnKS5vcHRpb25zOworICAg
IHZhciBvcHQ7CisgICAgdmFyIHN0ciA9IG5ldyBTdHJpbmcoIiIpOworICAgIHZhciB2YWx1ZSA9
IG5ldyBTdHJpbmcoIiIpOworICAgIGZvciAodmFyIGk9MCwgbGVuPXNlbG9wdGlvbnMubGVuZ3Ro
OyBpPGxlbjsgaSsrKQorICAgIHsKKyAgICAgICAgb3B0ID0gc2Vsb3B0aW9uc1tpXTsKKyAgICAg
ICAgaWYgKG9wdC5zZWxlY3RlZCkgeworICAgICAgICAgICAgbmFtZSA9IG9wdC52YWx1ZTsKKyAg
ICAgICAgICAgIGlmIChzdHIubGVuZ3RoID09IDApCisgICAgICAgICAgICAgICAgc3RyID0gbmFt
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdHIgPSBzdHIgKyAiLCIgKyBu
YW1lOworICAgICAgICAgICAgYWxlcnQoIlZhbHVlOiIgKyBuYW1lICArICIgc3RyOiAiICsgc3Ry
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC50aXRsZSA9IHN0cjsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgICA8c2VsZWN0IGlkPSJzZWwiICBtdWx0aXBsZT0i
bXVsdGlwbGUiICBvbmNoYW5nZT0idXBkYXRlKCk7Ij4KKyAgICAgIDxvcHRpb24gdmFsdWU9Il9f
b3Blbl9fIiA+T3Blbjwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iX19jbG9zZWRfXyIg
PkNsb3NlZDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iX19hbGxfXyIgPkFsbDwvb3B0
aW9uPgorICAgICAgPC9zZWxlY3Q+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmI3ZjRmYi4uNzRjNWM3ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI3MzAsOSArMjczMCw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9GaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIG1fZmluZENsaWVudC5kaWRGYWlsVG9GaW5kU3RyaW5nKHRoaXMsIHN0cmlu
Zyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUoV2Vi
UG9wdXBNZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJf
dCBuZXdTZWxlY3RlZEluZGV4LCBib29sIGNsb3NlUG9wdXBNZW51KQogewotICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2
ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBv
cHVwTWVudShuZXdTZWxlY3RlZEluZGV4LCBjbG9zZVBvcHVwTWVudSksIG1fcGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1
cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpCkBAIC0yNzUyLDYgKzI3NTIsMTMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgpCiB9CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFFUKQorIHZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBvcHVwTWVudSggaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQorIHsKKyAgICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
OjpIaWRlUG9wdXBNZW51KHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2VJRCk7CisgfQorI2VuZGlmCisK
IHZvaWQgV2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIHVp
bnQ2NF90IHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywg
aW50MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEp
CiB7CiAgICAgaWYgKG1fYWN0aXZlUG9wdXBNZW51KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKaW5kZXggNzJkNDY5NS4uZDAyMWUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjY2LDExICs2NjYsMTQgQEAgcHJpdmF0ZToKICAg
ICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIEFQSVR5cGU7IH0KIAogICAgIC8v
IFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQKLSAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2Vk
Rm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4
KTsKKyAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVu
dVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4LCBib29sIGNsb3NlUG9wdXBNZW51ID0g
dHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQ
b3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2
aXJ0dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7Ci0jZW5kaWYgICAgCisjZW5kaWYK
KyNpZiBQTEFURk9STShRVCkKKyAgICAgdmlydHVhbCB2b2lkIGNsb3NlUG9wdXBNZW51KGludCBp
bmRleCA9IC0xKTsKKyNlbmRpZgogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdl
YlBhZ2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdl
UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBvcHVwTWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UG9wdXBNZW51UHJveHkuaAppbmRleCAzY2VmYzBkLi5lYTljYjZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaApAQCAtNTAsMTIgKzUwLDE1IEBAIHB1
YmxpYzoKICAgICAgICAgfQogCiAgICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIHZvaWQgdmFs
dWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxl
Y3RlZEluZGV4KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCB2YWx1ZUNoYW5nZWRGb3JQb3B1
cE1lbnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgsIGJvb2wg
Y2xvc2VQb3B1cE1lbnUgPSB0cnVlKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0
RnJvbUl0ZW1Gb3JQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHkqLCBpbnQzMl90IGluZGV4KSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vz
c2VkTW91c2VEb3duRXZlbnQoKSA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCkgPSAwOwotI2VuZGlmICAgICAgICAKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQb3B1cE1l
bnUoaW50IGluZGV4ID0gLTEpID0gMDsKKyNlbmRpZgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5X
ZWJQb3B1cE1lbnVQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMmY5MjA5OC4uYWI4OTFmYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcApA
QCAtNTIsMjMgKzUyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgSXNTZXBhcmF0b3JSb2xlID0gUXQ6
OlVzZXJSb2xlICsgMwogICAgIH07CiAKLSAgICBQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVj
dG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KTsKKyAgICBQb3B1
cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBib29sIG11bHRpcGxl
KTsKICAgICB2aXJ0dWFsIGludCByb3dDb3VudChjb25zdCBRTW9kZWxJbmRleCYgcGFyZW50ID0g
UU1vZGVsSW5kZXgoKSkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5zaXplKCk7IH0KICAgICB2aXJ0
dWFsIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXgmLCBpbnQgcm9sZSA9IFF0OjpEaXNw
bGF5Um9sZSkgY29uc3Q7CiAKICAgICBRX0lOVk9LQUJMRSB2b2lkIHNlbGVjdChpbnQpOwogCisg
ICAgaW50IG9yaWdpbmFsSW5kZXgoaW50IGluZGV4ID0gLTEpIGNvbnN0OwogICAgIGludCBzZWxl
Y3RlZE9yaWdpbmFsSW5kZXgoKSBjb25zdDsKKyAgICBib29sIG11bHRpcGxlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvd011bHRpcGxlczsgfQogCiBwcml2YXRlOgogICAgIHN0cnVjdCBJdGVtIHsK
LSAgICAgICAgSXRlbShjb25zdCBXZWJQb3B1cEl0ZW0mIHdlYlBvcHVwSXRlbSwgY29uc3QgUVN0
cmluZyYgZ3JvdXAsIGludCBvcmlnaW5hbEluZGV4LCBib29sIHNlbGVjdGVkKQorICAgICAgICBJ
dGVtKGNvbnN0IFdlYlBvcHVwSXRlbSYgd2ViUG9wdXBJdGVtLCBjb25zdCBRU3RyaW5nJiBncm91
cCwgaW50IG9yaWdpbmFsSW5kZXgpCiAgICAgICAgICAgICA6IHRleHQod2ViUG9wdXBJdGVtLm1f
dGV4dCkKICAgICAgICAgICAgICwgdG9vbFRpcCh3ZWJQb3B1cEl0ZW0ubV90b29sVGlwKQogICAg
ICAgICAgICAgLCBncm91cChncm91cCkKICAgICAgICAgICAgICwgb3JpZ2luYWxJbmRleChvcmln
aW5hbEluZGV4KQogICAgICAgICAgICAgLCBlbmFibGVkKHdlYlBvcHVwSXRlbS5tX2lzRW5hYmxl
ZCkKLSAgICAgICAgICAgICwgc2VsZWN0ZWQoc2VsZWN0ZWQpCisgICAgICAgICAgICAsIHNlbGVj
dGVkKHdlYlBvcHVwSXRlbS5tX2lzU2VsZWN0ZWQpCiAgICAgICAgICAgICAsIGlzU2VwYXJhdG9y
KHdlYlBvcHVwSXRlbS5tX3R5cGUgPT0gV2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpCiAgICAgICAg
IHsgfQogCkBAIC04MiwxMCArODQsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc1NlcGFy
YXRvcjsKICAgICB9OwogCi0gICAgdm9pZCBidWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KTsKKyAgICB2
b2lkIGJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMp
OwogCiAgICAgVmVjdG9yPEl0ZW0+IG1faXRlbXM7Ci0gICAgaW50IG1fc2VsZWN0ZWRNb2RlbElu
ZGV4OworICAgIFFMaXN0PGludD4gbV9zZWxlY3RlZEluZGljZXM7CisgICAgYm9vbCBtX2FsbG93
TXVsdGlwbGVzOwogfTsKIAogY2xhc3MgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdCA6IHB1Ymxp
YyBRT2JqZWN0IHsKQEAgLTk0LDI2ICs5NywyNiBAQCBjbGFzcyBJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0IDogcHVibGljIFFPYmplY3QgewogICAgIFFfUFJPUEVSVFkoUU9iamVjdCogaXRlbXMg
UkVBRCBpdGVtcyBDT05TVEFOVCBGSU5BTCkKIAogcHVibGljOgotICAgIEl0ZW1TZWxlY3RvckNv
bnRleHRPYmplY3QoY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiwgaW50IHNlbGVjdGVkSW5kZXgpOworICAgIEl0ZW1TZWxlY3RvckNvbnRleHRP
YmplY3QoY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0
ZW0+JiwgYm9vbCBtdWx0aXBsZSk7CiAKICAgICBRUmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fZWxlbWVudFJlY3Q7IH0KICAgICBQb3B1cE1lbnVJdGVtTW9kZWwqIGl0ZW1zKCkg
eyByZXR1cm4gJm1faXRlbXM7IH0KIAogICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXB0KGludCBp
bmRleCA9IC0xKTsKLSAgICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWplY3Rl
ZCgpOyB9CisgICAgUV9JTlZPS0FCTEUgdm9pZCBjbG9zZSgpIHsgZW1pdCBkb25lKCk7IH0KIAog
UV9TSUdOQUxTOgogICAgIHZvaWQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpOwotICAg
IHZvaWQgcmVqZWN0ZWQoKTsKKyAgICB2b2lkIGRvbmUoKTsKIAogcHJpdmF0ZToKICAgICBRUmVj
dCBtX2VsZW1lbnRSZWN0OwogICAgIFBvcHVwTWVudUl0ZW1Nb2RlbCBtX2l0ZW1zOwogfTsKIAot
SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25z
dCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBv
cHVwSXRlbXMsIGludCBzZWxlY3RlZEluZGV4KQorSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6
SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGJvb2wgbXVsdGlwbGUpCiAg
ICAgOiBtX2VsZW1lbnRSZWN0KGVsZW1lbnRSZWN0KQotICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0
ZW1zLCBzZWxlY3RlZEluZGV4KQorICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0ZW1zLCBtdWx0aXBs
ZSkKIHsKIH0KIApAQCAtMTIxLDcgKzEyNCwxMCBAQCB2b2lkIEl0ZW1TZWxlY3RvckNvbnRleHRP
YmplY3Q6OmFjY2VwdChpbnQgaW5kZXgpCiB7CiAgICAgaWYgKGluZGV4ICE9IC0xKQogICAgICAg
ICBtX2l0ZW1zLnNlbGVjdChpbmRleCk7Ci0gICAgaW50IG9yaWdpbmFsSW5kZXggPSBtX2l0ZW1z
LnNlbGVjdGVkT3JpZ2luYWxJbmRleCgpOworICAgIGVsc2UgaWYgKG1faXRlbXMubXVsdGlwbGUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW50IG9yaWdpbmFsSW5kZXggPSBtX2l0ZW1zLm9y
aWdpbmFsSW5kZXgoaW5kZXgpOwogICAgIGVtaXQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChv
cmlnaW5hbEluZGV4KTsKIH0KIApAQCAtMTM3LDEyICsxNDMsMTIgQEAgc3RhdGljIFFIYXNoPGlu
dCwgUUJ5dGVBcnJheT4gY3JlYXRlUm9sZU5hbWVzSGFzaCgpCiAgICAgcmV0dXJuIHJvbGVzOwog
fQogCi1Qb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8
V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCkK
LSAgICA6IG1fc2VsZWN0ZWRNb2RlbEluZGV4KC0xKQorUG9wdXBNZW51SXRlbU1vZGVsOjpQb3B1
cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMs
IGJvb2wgbXVsdGlwbGUpCisgICAgOiBtX2FsbG93TXVsdGlwbGVzKG11bHRpcGxlKQogewogICAg
IHN0YXRpYyBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+IHJvbGVzID0gY3JlYXRlUm9sZU5hbWVzSGFz
aCgpOwogICAgIHNldFJvbGVOYW1lcyhyb2xlcyk7Ci0gICAgYnVpbGRJdGVtcyh3ZWJQb3B1cEl0
ZW1zLCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOworICAgIGJ1aWxkSXRlbXMod2ViUG9wdXBJdGVt
cyk7CiB9CiAKIFFWYXJpYW50IFBvcHVwTWVudUl0ZW1Nb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJ
bmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdApAQCAtMTc3LDM1ICsxODMsNzEgQEAgUVZhcmlh
bnQgUG9wdXBNZW51SXRlbU1vZGVsOjpkYXRhKGNvbnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50
IHJvbGUpIGNvbnN0CiAKIHZvaWQgUG9wdXBNZW51SXRlbU1vZGVsOjpzZWxlY3QoaW50IGluZGV4
KQogewotICAgIGludCBvbGRJbmRleCA9IG1fc2VsZWN0ZWRNb2RlbEluZGV4OwotICAgIGlmIChp
bmRleCA9PSBvbGRJbmRleCkKLSAgICAgICAgcmV0dXJuOwogICAgIGlmIChpbmRleCA8IDAgfHwg
aW5kZXggPj0gbV9pdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKKwogICAgIEl0ZW0mIGl0
ZW0gPSBtX2l0ZW1zW2luZGV4XTsKICAgICBpZiAoIWl0ZW0uZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7Ci0gICAgbV9zZWxlY3RlZE1vZGVsSW5k
ZXggPSBpbmRleDsKKyAgICBpZiAobV9hbGxvd011bHRpcGxlcykgeworICAgICAgICBpdGVtLnNl
bGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7CiAKLSAgICBpZiAob2xkSW5kZXggIT0gLTEpIHsKLSAg
ICAgICAgSXRlbSYgb2xkSXRlbSA9IG1faXRlbXNbb2xkSW5kZXhdOwotICAgICAgICBvbGRJdGVt
LnNlbGVjdGVkID0gZmFsc2U7Ci0gICAgICAgIGVtaXQgZGF0YUNoYW5nZWQodGhpcy0+aW5kZXgo
b2xkSW5kZXgpLCB0aGlzLT5pbmRleChvbGRJbmRleCkpOworICAgICAgICAvLyBVcGRhdGUgdGhl
IHNlbGVjdGVkIGluZGljZXMgbGlzdAorICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkKKyAgICAg
ICAgICAgIG1fc2VsZWN0ZWRJbmRpY2VzLmFwcGVuZChpbmRleCk7CisgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgaW50IGxpc3RJbmRleCA9IG1fc2VsZWN0ZWRJbmRpY2VzLmluZGV4T2YoaW5k
ZXgpOworICAgICAgICAgICAgaWYgKGxpc3RJbmRleCAhPSAtMSkKKyAgICAgICAgICAgICAgICBt
X3NlbGVjdGVkSW5kaWNlcy5yZW1vdmVBdChsaXN0SW5kZXgpOworICAgICAgICB9CiAgICAgfQor
ICAgIGVsc2UgewogCisgICAgICAgIGludCBvbGRJbmRleCA9IC0xOworICAgICAgICBpZiAoIW1f
c2VsZWN0ZWRJbmRpY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG9sZEluZGV4ID0gbV9zZWxl
Y3RlZEluZGljZXNbMF07CisKKyAgICAgICAgaWYgKGluZGV4ID09IG9sZEluZGV4KQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOworCisgICAgICAg
IGlmIChvbGRJbmRleCA9PSAtMSkKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRJbmRpY2VzLmFwcGVu
ZChpbmRleCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSXRlbSYgb2xkSXRlbSA9IG1f
aXRlbXNbb2xkSW5kZXhdOworICAgICAgICAgICAgb2xkSXRlbS5zZWxlY3RlZCA9IGZhbHNlOwor
ICAgICAgICAgICAgbV9zZWxlY3RlZEluZGljZXMucmVwbGFjZSgwLGluZGV4KTsKKyAgICAgICAg
ICAgIGVtaXQgZGF0YUNoYW5nZWQodGhpcy0+aW5kZXgob2xkSW5kZXgpLCB0aGlzLT5pbmRleChv
bGRJbmRleCkpOworICAgICAgICB9CisgICAgfQogICAgIGVtaXQgZGF0YUNoYW5nZWQodGhpcy0+
aW5kZXgoaW5kZXgpLCB0aGlzLT5pbmRleChpbmRleCkpOwogfQogCitpbnQgUG9wdXBNZW51SXRl
bU1vZGVsOjpvcmlnaW5hbEluZGV4KGludCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXgg
PT0gLTEgJiYgIW1fYWxsb3dNdWx0aXBsZXMpCisgICAgICAgIGluZGV4ID0gbV9zZWxlY3RlZElu
ZGljZXMuYXQoMCk7CisKKyAgICBpZiAoaW5kZXggPT0gLTEpCisgICAgICAgIHJldHVybiAtMTsK
KworICAgIHJldHVybiBtX2l0ZW1zW2luZGV4XS5vcmlnaW5hbEluZGV4OworfQorCiBpbnQgUG9w
dXBNZW51SXRlbU1vZGVsOjpzZWxlY3RlZE9yaWdpbmFsSW5kZXgoKSBjb25zdAogewotICAgIGlm
IChtX3NlbGVjdGVkTW9kZWxJbmRleCA9PSAtMSkKKyAgICBpZiAobV9zZWxlY3RlZEluZGljZXMu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0dXJuIG1faXRlbXNbbV9zZWxl
Y3RlZE1vZGVsSW5kZXhdLm9yaWdpbmFsSW5kZXg7CisKKyAgICBRTGlzdDxpbnQ+IGxpc3QgPSBt
X3NlbGVjdGVkSW5kaWNlczsKKyAgICBxU29ydChsaXN0KTsKKworICAgIHJldHVybiBvcmlnaW5h
bEluZGV4KGxpc3QuYXQoMCkpOwogfQogCi12b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJ
dGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgaW50IHNlbGVj
dGVkT3JpZ2luYWxJbmRleCkKK3ZvaWQgUG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKGNv
bnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zKQogewogICAgIFFTdHJpbmcg
Y3VycmVudEdyb3VwOwogICAgIG1faXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh3ZWJQb3B1
cEl0ZW1zLnNpemUoKSk7CkBAIC0yMTUsMTAgKzI1Nyw5IEBAIHZvaWQgUG9wdXBNZW51SXRlbU1v
ZGVsOjpidWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1z
LCBpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSB3ZWJQb3B1cEl0ZW0ubV90ZXh0OwogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3QgYm9vbCBzZWxlY3Rl
ZCA9IGkgPT0gc2VsZWN0ZWRPcmlnaW5hbEluZGV4OwotICAgICAgICBpZiAoc2VsZWN0ZWQpCi0g
ICAgICAgICAgICBtX3NlbGVjdGVkTW9kZWxJbmRleCA9IG1faXRlbXMuc2l6ZSgpOwotICAgICAg
ICBtX2l0ZW1zLmFwcGVuZChJdGVtKHdlYlBvcHVwSXRlbSwgY3VycmVudEdyb3VwLCBpLCBzZWxl
Y3RlZCkpOworICAgICAgICBpZiAod2ViUG9wdXBJdGVtLm1faXNTZWxlY3RlZCkKKyAgICAgICAg
ICAgIG1fc2VsZWN0ZWRJbmRpY2VzLmFwcGVuZChtX2l0ZW1zLnNpemUoKSk7CisgICAgICAgIG1f
aXRlbXMuYXBwZW5kKEl0ZW0od2ViUG9wdXBJdGVtLCBjdXJyZW50R3JvdXAsIGkpKTsKICAgICB9
CiB9CiAKQEAgLTIzMiwxNCArMjczLDE3IEBAIFdlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1
cE1lbnVQcm94eVF0KCkKIHsKIH0KIAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9w
dXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJs
ZSwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVw
TWVudURhdGEmLCBpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5
UXQ6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVj
dGlvbiwgZG91YmxlLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBs
YXRmb3JtUG9wdXBNZW51RGF0YSYgZGF0YSwgaW50MzJfdCkKIHsKLSAgICBtX3NlbGVjdGVkSW5k
ZXggPSBzZWxlY3RlZEluZGV4OworICAgIG1fYWxsb3dNdWx0aXBsZVNlbGVjdGlvbnMgPSBkYXRh
Lm11bHRpcGxlU2VsZWN0aW9uczsKIAotICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QqIGNv
bnRleHRPYmplY3QgPSBuZXcgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChyZWN0LCBpdGVtcywg
bV9zZWxlY3RlZEluZGV4KTsKLSAgICBjcmVhdGVJdGVtKGNvbnRleHRPYmplY3QpOworICAgIG1f
Y29udGV4dE9iamVjdCA9IGFkb3B0UHRyKG5ldyBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KHJl
Y3QsIGl0ZW1zLCBtX2FsbG93TXVsdGlwbGVTZWxlY3Rpb25zKSk7CisgICAgaWYgKCFtX2NvbnRl
eHRPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIGNyZWF0ZUl0ZW0obV9jb250ZXh0T2Jq
ZWN0LmdldCgpKTsKICAgICBpZiAoIW1faXRlbVNlbGVjdG9yKSB7Ci0gICAgICAgIG5vdGlmeVZh
bHVlQ2hhbmdlZCgpOworICAgICAgICBoaWRlUG9wdXBNZW51KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5zZXREaWFs
b2dBY3RpdmUodHJ1ZSk7CkBAIC0yNDcsNDQgKzI5MSw1MSBAQCB2b2lkIFdlYlBvcHVwTWVudVBy
b3h5UXQ6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERp
cmVjdAogCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUoKQogeworICAg
IGludCBzZWxlY3RlZEluZGV4ID0gLTE7CisgICAgaWYgKG1fY29udGV4dE9iamVjdCl7CisgICAg
ICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBzdGF0aWNfY2Fz
dDxJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0Kj4obV9jb250ZXh0T2JqZWN0LmdldCgpKTsKKyAg
ICAgICAgaWYgKGNvbnRleHRPYmplY3QpCisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gY29u
dGV4dE9iamVjdC0+aXRlbXMoKS0+c2VsZWN0ZWRPcmlnaW5hbEluZGV4KCk7CisgICAgfQorCiAg
ICAgbV9pdGVtU2VsZWN0b3IuY2xlYXIoKTsKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0
KG1fd2ViVmlldyktPnNldERpYWxvZ0FjdGl2ZShmYWxzZSk7CiAgICAgbV9jb250ZXh0LmNsZWFy
KCk7Ci0gICAgbm90aWZ5VmFsdWVDaGFuZ2VkKCk7CisgICAgbV9jb250ZXh0T2JqZWN0LmNsZWFy
KCk7CisKKyAgICBpZiAobV9jbGllbnQpeworICAgICAgICBtX2NsaWVudC0+Y2xvc2VQb3B1cE1l
bnUoc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICB9CisKIH0KIAog
dm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJbmRleChpbnQgaW5kZXgpCiB7Ci0gICAg
bV9zZWxlY3RlZEluZGV4ID0gaW5kZXg7CisgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudSh0aGlzLCBpbmRleCwgZmFsc2UpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5
UXQ6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKIHsKICAgICBRUW1sQ29tcG9u
ZW50KiBjb21wb25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5pdGVtU2VsZWN0b3Io
KTsKLSAgICBpZiAoIWNvbXBvbmVudCkgewotICAgICAgICBkZWxldGUgY29udGV4dE9iamVjdDsK
KyAgICBpZiAoIWNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNyZWF0
ZUNvbnRleHQoY29tcG9uZW50LCBjb250ZXh0T2JqZWN0KTsKICAgICBRT2JqZWN0KiBvYmplY3Qg
PSBjb21wb25lbnQtPmJlZ2luQ3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFvYmpl
Y3QpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7CisgICAgaWYgKCFvYmplY3QpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBtX2l0ZW1TZWxlY3RvciA9IGFkb3B0UHRyKHFvYmpl
Y3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7Ci0gICAgaWYgKCFtX2l0ZW1TZWxlY3Rvcikg
ewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgbV9pdGVtU2VsZWN0b3IuY2xl
YXIoKTsKKyAgICBpZiAoIW1faXRlbVNlbGVjdG9yKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWRXaXRoT3JpZ2luYWxJ
bmRleChpbnQpKSwgU0xPVChzZWxlY3RJbmRleChpbnQpKSk7CiAKICAgICAvLyBXZSBlbnF1ZXVl
IHRoZXNlIGJlY2F1c2UgdGhleSBhcmUgdHJpZ2dlcmVkIGJ5IG1faXRlbVNlbGVjdG9yIGFuZCB3
aWxsIGxlYWQgdG8gaXRzIGRlc3RydWN0aW9uLgotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwg
U0lHTkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVu
dSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwg
U0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25u
ZWN0aW9uKTsKKyAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChkb25lKCkpLCBTTE9U
KGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fYWxs
b3dNdWx0aXBsZVNlbGVjdGlvbnMpCisgICAgICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lH
TkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVudSgp
KSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogCiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omdl
dChtX3dlYlZpZXcpLT5hZGRBdHRhY2hlZFByb3BlcnR5VG8obV9pdGVtU2VsZWN0b3IuZ2V0KCkp
OwogICAgIG1faXRlbVNlbGVjdG9yLT5zZXRQYXJlbnRJdGVtKG1fd2ViVmlldyk7CkBAIC0zMDIs
MTkgKzM1MywxMCBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUNvbnRleHQoUVFt
bENvbXBvbmVudCogY29tcG9uZW50LCBRT2JqZWN0KiBjb250ZQogICAgICAgICBiYXNlQ29udGV4
dCA9IFFRbWxFbmdpbmU6OmNvbnRleHRGb3JPYmplY3QobV93ZWJWaWV3KTsKICAgICBtX2NvbnRl
eHQgPSBhZG9wdFB0cihuZXcgUVFtbENvbnRleHQoYmFzZUNvbnRleHQpKTsKIAotICAgIGNvbnRl
eHRPYmplY3QtPnNldFBhcmVudChtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dC0+c2V0
Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJpbmcoIm1vZGVsIiksIGNvbnRleHRPYmplY3QpOwog
ICAgIG1fY29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2JqZWN0KTsKIH0KIAotdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eVF0Ojpub3RpZnlWYWx1ZUNoYW5nZWQoKQotewotICAgIGlmICht
X2NsaWVudCkgewotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRo
aXMsIG1fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICB9Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAvLyBTaW5jZSB3ZSBkZWZpbmUgUU9iamVjdHMgaW4g
V2ViUG9wdXBNZW51UHJveHlRdC5jcHAsIHRoaXMgd2lsbCB0cmlnZ2VyIG1vYyB0byBydW4gb24g
LmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1l
bnVQcm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJv
eHlRdC5oCmluZGV4IDIxZWVjNWQuLjE0N2YzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtNjEsMTMgKzYxLDE0IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJdGVtKFFPYmplY3QqKTsKICAgICB2b2lkIGNyZWF0ZUNv
bnRleHQoUVFtbENvbXBvbmVudCosIFFPYmplY3QqKTsKIAotICAgIHZvaWQgbm90aWZ5VmFsdWVD
aGFuZ2VkKCk7CisgICAgdm9pZCBjbG9zZVBvcHVwTWVudSgpOwogCiAgICAgT3duUHRyPFFRbWxD
b250ZXh0PiBtX2NvbnRleHQ7CiAgICAgT3duUHRyPFFRdWlja0l0ZW0+IG1faXRlbVNlbGVjdG9y
OworICAgIE93blB0cjxRT2JqZWN0PiBtX2NvbnRleHRPYmplY3Q7CiAKICAgICBRUXVpY2tXZWJW
aWV3KiBtX3dlYlZpZXc7Ci0gICAgaW50MzJfdCBtX3NlbGVjdGVkSW5kZXg7CisgICAgYm9vbCBt
X2FsbG93TXVsdGlwbGVTZWxlY3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBv
cHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBvcHVwTWVudS5jcHAKaW5kZXggOTQwY2I5NS4uZjQ4YWI3YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNTksOSArNTksMTQgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OmRpZENoYW5nZVNlbGVjdGVk
SW5kZXgoaW50IG5ld0luZGV4KQogICAgIGlmICghbV9wb3B1cENsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgaWYgKG5ld0luZGV4ID49IDApCisgICAgICAg
IG1fcG9wdXBDbGllbnQtPmxpc3RCb3hTZWxlY3RJdGVtKG5ld0luZGV4LCBtX3BvcHVwQ2xpZW50
LT5tdWx0aXBsZSgpLCBmYWxzZSk7CisjZWxzZQogICAgIG1fcG9wdXBDbGllbnQtPnBvcHVwRGlk
SGlkZSgpOwogICAgIGlmIChuZXdJbmRleCA+PSAwKQogICAgICAgICBtX3BvcHVwQ2xpZW50LT52
YWx1ZUNoYW5nZWQobmV3SW5kZXgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51Ojpz
ZXRUZXh0Rm9ySW5kZXgoaW50IGluZGV4KQpAQCAtODcsNyArOTIsNyBAQCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiBXZWJQb3B1cE1lbnU6OnBvcHVsYXRlSXRlbXMoKQogICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBzdHlsaW5nIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5k
IGNvbG9ycy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGN1c3RvbWl6ZSB0
ZXh0IGNvbG9yIHdoZW4gYW4gaXRlbSBpcyBoaWdobGlnaHRlZC4KICAgICAgICAgICAgIFBvcHVw
TWVudVN0eWxlIGl0ZW1TdHlsZSA9IG1fcG9wdXBDbGllbnQtPml0ZW1TdHlsZShpKTsKLSAgICAg
ICAgICAgIGl0ZW1zLmFwcGVuZChXZWJQb3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJdGVtLCBtX3Bv
cHVwQ2xpZW50LT5pdGVtVGV4dChpKSwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0
eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLCBtX3BvcHVwQ2xpZW50LT5pdGVtVG9vbFRp
cChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUFjY2Vzc2liaWxpdHlUZXh0KGkpLCBtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNFbmFibGVkKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJlbChpKSkpOwor
ICAgICAgICAgICAgaXRlbXMuYXBwZW5kKFdlYlBvcHVwSXRlbShXZWJQb3B1cEl0ZW06Okl0ZW0s
IG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBp
dGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCksIG1fcG9wdXBDbGllbnQtPml0ZW1U
b29sVGlwKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtQWNjZXNzaWJpbGl0eVRleHQoaSksIG1fcG9w
dXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkp
LG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlbGVjdGVkKGkpKSk7CiAgICAgICAgIH0KICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBvcHVwTWVudS5oCmluZGV4IDhlNjYyNTAuLjYzMTliOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaApAQCAt
NDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1f
cGFnZSA9IDA7IH0KICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW50IG5ld0luZGV4
KTsKICAgICB2b2lkIHNldFRleHRGb3JJbmRleChpbnQgbmV3SW5kZXgpOwotI2lmIFBMQVRGT1JN
KEdUSykgICAgCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICBXZWJDb3Jl
OjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCmluZGV4IGIyMWYwNmMuLmYw
YThmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCkBAIC0yNywxMyArMjcsMTUgQEAK
ICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51
RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1l
bnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmKQordm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3Qm
LCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7CisgICAgZGF0YS5tdWx0aXBsZVNlbGVj
dGlvbnMgPSBtX3BvcHVwQ2xpZW50LT5tdWx0aXBsZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCAzODU5MGRmLi43YjAzNGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzMyLDE0ICsyMzMyLDI0IEBAIHZvaWQgV2ViUGFnZTo6
Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25z
LCB1aW50MzJfCiAgICAgbV9maW5kQ29udHJvbGxlci5jb3VudFN0cmluZ01hdGNoZXMoc3RyaW5n
LCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQpOwogfQog
Ci12b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUo
aW50MzJfdCBuZXdJbmRleCkKK3ZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZv
ckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4LCBib29sIGNsb3NlUG9wdXBNZW51KQog
ewogICAgIGlmICghbV9hY3RpdmVQb3B1cE1lbnUpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1f
YWN0aXZlUG9wdXBNZW51LT5kaWRDaGFuZ2VTZWxlY3RlZEluZGV4KG5ld0luZGV4KTsKKyAgICBp
ZiAoY2xvc2VQb3B1cE1lbnUpCisgICAgICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKK30KKwor
I2lmIFBMQVRGT1JNKFFUKQordm9pZCBXZWJQYWdlOjpoaWRlUG9wdXBNZW51KGludDMyX3QgbmV3
SW5kZXgpCit7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmNsaWVudCgpLT5wb3B1cERpZEhpZGUo
KTsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+c2V0VGV4dEZvckluZGV4KG5ld0luZGV4KTsKICAg
ICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7CiB9CisjZW5kaWYKIAogdm9pZCBXZWJQYWdlOjpkaWRD
aG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA0YjJiNzZj
Li40YjcyYzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTY2MiwxMiArNjYyLDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmaW5kWm9vbWFibGVB
cmVhRm9yUG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBhcmVhKTsKICNlbmRpZgogCi0gICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9y
QWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOworICAgIHZvaWQgZGlkQ2hhbmdlU2Vs
ZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4LCBib29sIGNsb3Nl
UG9wdXBNZW51KTsKICAgICB2b2lkIHNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBp
bmRleCk7CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBmYWlsZWRUb1Nob3dQb3B1cE1l
bnUoKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlkZVBvcHVwTWVudShp
bnQzMl90IG5ld0luZGV4ID0gLTEpOworI2VuZGlmCiAKICAgICB2b2lkIGRpZENob29zZUZpbGVz
Rm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgdm9pZCBkaWRDYW5jZWxG
b3JPcGVuUGFuZWwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNGJhYjhhYy4uYjExMjI1ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KQEAgLTE1NSwxMSArMTU1LDE0IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogI2VuZGlmCiAK
ICAgICAjIFBvcHVwIG1lbnUuCi0gICAgRGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBv
cHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKyAgICBEaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9y
QWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgsIGJvb2wgY2xvc2VQb3B1cE1lbnUpOwog
ICAgIFNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBpbmRleCk7CiAjaWYgUExBVEZP
Uk0oR1RLKSAgICAKICAgICBGYWlsZWRUb1Nob3dQb3B1cE1lbnUoKTsKLSNlbmRpZiAgICAKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIEhpZGVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRl
eCk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAjIENvbnRl
eHQgbWVudS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCBjMTQ4Y2UwLi4yN2M4OWU5IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDUtMjUgIERpbnUgSmFjb2Ig
IDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQg
Zm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWw6CisKKyAg
ICAgICBVcGRhdGUgdG8gbWF0Y2ggdGhlIGNoYW5nZSBpbiB0aGUgbmFtZSBvZiB0aGUgc2xvdCB0
bworICAgICAgIGhpZGUgdGhlIHBvcHVwIG1lbnUuCisKIDIwMTItMDUtMjMgIEthbmdpbCBIYW4g
IDxrYW5naWwuaGFuQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW0RSVF0gRml4IFdlYkNv
cmUgbGlicmFyeSBwYXRoIGFuZCByZWJhc2VsaW5lIHJlc3VsdApkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9xbWwvSXRlbVNlbGVjdG9yLnFtbAppbmRleCA0MzAyMmI2Li40NWRmMWE0IDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci9xdC9xbWwvSXRlbVNlbGVjdG9yLnFtbAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9xbWwvSXRlbVNlbGVjdG9yLnFtbApAQCAtMzEsNyArMzEsNyBAQCBNb3Vz
ZUFyZWEgewogICAgIC8vIFRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGggTGlzdFZpZXcubW9kZWwg
d2hlbiBpbnNpZGUgTGlzdFZpZXcgY29udGV4dC4KICAgICBwcm9wZXJ0eSBRdE9iamVjdCBzZWxl
Y3Rvck1vZGVsOiBtb2RlbAogICAgIGFuY2hvcnMuZmlsbDogcGFyZW50Ci0gICAgb25DbGlja2Vk
OiBzZWxlY3Rvck1vZGVsLnJlamVjdCgpCisgICAgb25DbGlja2VkOiBzZWxlY3Rvck1vZGVsLmNs
b3NlKCkKIAogICAgIFJlY3RhbmdsZSB7CiAgICAgICAgIGNsaXA6IHRydWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144141</attachid>
            <date>2012-05-25 13:50:26 -0700</date>
            <delta_ts>2012-05-29 13:18:43 -0700</delta_ts>
            <desc>Patch with style fix</desc>
            <filename>85527.patch</filename>
            <type>text/plain</type>
            <size>35842</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1ZWVlM2U4Li42MWY1NzNjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDEyLTA1LTI1ICBEaW51IEphY29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAg
ICAgICAgW1F0XVtXSzJdIEFkZCBzdXBwb3J0IGZvciBtdWx0aS1zZWxlY3QgbGlzdAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MjcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZv
ciBtdWx0aS1zZWxlY3QgbGlzdC4gRm9yIG11bHRpLXNlbGVjdCBsaXN0LCB0aGUgcG9wdXAgbWVu
dSBpcyBub3QgY2xvc2VkIG9uIHNlbGVjdGluZworICAgICAgICBhbiBpdGVtIGFuZCByZXF1aXJl
cyBleHBsaWNpdCBjYWxsIHRvIGhpZGUgdGhlIG1lbnUuIFRoZSBpbmRleCBvZiB0aGUgaXRlbSB0
byBiZSBkaXNwbGF5ZWQgd2hlbiB0aGUgbWVudQorICAgICAgICBpcyBoaWRkZW4gaXMgcHJvdmlk
ZWQgd2l0aCByZXF1ZXN0IHRvIGhpZGUgdGhlIHBvcHVwLgorCisgICAgICAgIC0gQWRkZWQgbXVs
dGktc2VsZWN0aW9uIGZsYWcgdG8gUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHRvIGluZGljYXRlIHdo
ZXRoZXIgdG8gYWNjZXB0IG11bHRpcGxlIHNlbGVjdGlvbnMgb3Igbm90LgorICAgICAgICAtIEFk
ZGVkIHNlbGVjdGVkIHN0YXRlIHRvIFdlYlBvcHVwSXRlbS4KKyAgICAgICAgLSBNb2RpZmllZCBX
ZWJQb3B1cE1lbnVRdCB0byBzdXBwb3J0IG11bHRpcGxlIHNlbGVjdGlvbnMuCisKKyAgICAgICAg
KiBTaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjpQbGF0Zm9ybVBvcHVwTWVudURhdGEpOiBBZGRlZCBtZW1iZXIg
aW5kaWNhdGluZyBtdWx0aS1zZWxlY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVE
YXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaDoK
KyAgICAgICAgKFBsYXRmb3JtUG9wdXBNZW51RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYlBv
cHVwSXRlbS5jcHA6IEFkZGVkIG5ldyBtZW1iZXIgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgaXRl
bSBoYXMgYmVlbiBzZWxlY3RlZCBvciBub3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRl
bTo6V2ViUG9wdXBJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sOiBVc2UgcmVuYW1lZCBz
aWduYWwgdG8gaGlkZSB0aGUgbWVudS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbXVsdGlTZWxlY3QucW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVj
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUpOiBB
ZGRlZCBuZXcgYXJndW1lbnQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaGlkZSB0aGUgbWVudS4K
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2VQ
b3B1cE1lbnUpOiBOZXcgQVBJIHRoYXQgc2VuZHMgcmVxdWVzdCB0byBoaWRlIHRoZSBwb3B1cCBt
ZW51IHdpdGggdGhlIGl0ZW0gdG8gYmUgZGlzcGxheWVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaDogU2V0IHRoZSBkZWZhdWx0IG9mIG5ldyBhcmd1bWVudCB0byB2YWx1ZUNo
YW5nZWRGb3JQb3B1cE1lbnUgdG8gdHJ1ZS4KKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5Lmg6IEFkZGVkIG5ldyBBUEkgdG8gcmVx
dWVzdCB0byBoaWRlIHBvcHVwIG1lbnUgYW5kIG5ldyBhcmd1bWVudCB0byB2YWx1ZUNoYW5nZWRG
b3JQb3B1cE1lbnUKKyAgICAgICAgICB0byBkZXRlcm1pbmUgd2hldGhlciB0byBjbG9zZSB0aGUg
cG9wdXAgbWVudSBhcyB3ZWxsLgorICAgICAgICAoQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAgIChQb3B1cE1lbnVJdGVtTW9k
ZWwpOiBSZW1vdmVkIHNlbGVjdGVkT3JpZ2luYWxJbmRleCBhbmQgYWRkZWQgbmV3IGFyZ3VtZW50
IHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgaXQgaXMgYSBtdWx0aS1zZWxlY3QgbGlzdC4KKyAgICAg
ICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjptdWx0aXBsZSk6IEFkZGVkIHRvIGluZGlj
YXRlIHdoZXRoZXIgdG8gYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucy4KKyAgICAgICAgKFdlYktp
dDo6UG9wdXBNZW51SXRlbU1vZGVsOjpJdGVtOjpJdGVtKToKKyAgICAgICAgKEl0ZW1TZWxlY3Rv
ckNvbnRleHRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2Jq
ZWN0OjpjbG9zZSk6IFJlbmFtZWQgcmVqZWN0IHRvIGNsb3NlIHRvIGJlIGdlbmVyaWMgZm9yIGJv
dGggc2luZ2xlLXNlbGVjdCBhcyB3ZWxsIGFzIG11bHRpLXNlbGVjdCBsaXN0cy4KKyAgICAgICAg
KFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdCk6IEFkZGVkICBuZXcgYXJndW1lbnQgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBpdCBpcyBh
IG11bHRpLXNlbGVjdCBsaXN0LgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0OjphY2NlcHQpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OlBv
cHVwTWVudUl0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6
c2VsZWN0KTogQWRkcy9yZXBsYWNlcyB0aGUgaW5kZXggaW4gdGhlIHNlbGVjdGVkIGluZGljZXMg
bGlzdC4gRm9yIHNpbmdsZSBzZWxlY3QgbGlzdCwKKyAgICAgICAgcmVtb3ZlcyB0aGUgb2xkIGlu
ZGV4IChpZiBhbnkpIGZyb20gdGhlIHNlbGVjdGVkIGluZGljZXMgbGlzdC4KKyAgICAgICAgKFdl
YktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpvcmlnaW5hbEluZGV4KTogUmV0dXJucyB0aGUgb3Jp
Z2luYWwgaW5kZXggb2YgdGhlIGl0ZW0gZnJvbSB0aGUgbGlzdC4KKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0ZWRPcmlnaW5hbElu
ZGV4KTogVGhpcyBpcyB0aGUgKG9yaWdpbmFsKSBpbmRleCB0byBiZSBkaXNwbGF5ZWQgLSB0aGlz
IGlzIHRoZSBsb3dlc3QgaW5kZXhlZCBpdGVtIHRoYXQKKyAgICAgICAgaXMgaW4gc2VsZWN0ZWQg
c3RhdGUgZm9yIG11bHRpLXNlbGVjdC4KKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1v
ZGVsOjpidWlsZEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6
c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6Omhp
ZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxl
Y3RJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0
ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVDb250ZXh0
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oOgorICAgICAg
ICAoV2ViUG9wdXBNZW51UHJveHlRdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cE1lbnUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmRp
ZENoYW5nZVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnBv
cHVsYXRlSXRlbXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9w
dXBNZW51Lmg6CisgICAgICAgIChXZWJQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKTogUG9scHVsYXRlIGRhdGEgd2l0aCBtdWx0
aXBsZVNlbGVjdGlvbnMgZmxhZy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhG
b3JBY3RpdmVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKFdlYlBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluOiBOZXcgbWVzc2FnZSB0byByZXF1ZXN0IHRoZSBwb3B1cCBt
ZW51IHRvIGJlIGhpZGRlbi4KKwogMjAxMi0wNS0yMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIGFkZCBiYWNrIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgZmxleGJv
eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0
YS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcApp
bmRleCA2YzRkMjBlLi5iNjI3YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQo
MCkKICAgICAsIG1fcG9wdXBXaWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQ
TEFURk9STShRVCkKKyAgICA6IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewog
fQpAQCAtNjIsNiArNjQsOCBAQCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1B
QykKICAgICBlbmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShz
aG91bGRQb3BPdmVyKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZSht
dWx0aXBsZVNlbGVjdGlvbnMpOwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQ
bGF0Zm9ybVBvcHVwTWVudURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFBsYXRmb3JtUG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKGRhdGEuc2hvdWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNl
bGlmIFBMQVRGT1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVT
ZWxlY3Rpb25zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0
dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmgKaW5kZXggZjg1MDA4YS4uMjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bGF0Zm9ybVBvcHVwTWVudURhdGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Q
b3B1cE1lbnVEYXRhIHsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5m
bzsKICAgICBib29sIHNob3VsZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29s
IG11bHRpcGxlU2VsZWN0aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UG9wdXBJdGVtLmNwcAppbmRleCBhOWFjMDMyLi5jMjE1ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViUG9wdXBJdGVtLmNwcApAQCAtMzksNiArMzksNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBv
cHVwSXRlbSgpCiAgICAgLCBtX3RleHREaXJlY3Rpb24oTFRSKQogICAgICwgbV9oYXNUZXh0RGly
ZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQorICAgICwgbV9p
c1NlbGVjdGVkKGZhbHNlKQogewogfQogCkBAIC00OCwxMCArNDksMTEgQEAgV2ViUG9wdXBJdGVt
OjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc0xhYmVsKGZhbHNl
KQorICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQogewogfQogCi1XZWJQb3B1cEl0ZW06OldlYlBv
cHVwSXRlbShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0
RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0
b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwg
Ym9vbCBpc0xhYmVsKQorV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0
RGlyZWN0aW9uT3ZlcnJpZGUsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBh
Y2Nlc3NpYmlsaXR5VGV4dCwgYm9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCwgYm9vbCBpc1Nl
bGVjdGVkKQogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBtX3RleHQodGV4dCkKICAgICAsIG1f
dGV4dERpcmVjdGlvbih0ZXh0RGlyZWN0aW9uKQpAQCAtNjAsMTIgKzYyLDE0IEBAIFdlYlBvcHVw
SXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGly
ZWN0aW9uIHRleHREaXJlCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2liaWxpdHlU
ZXh0KQogICAgICwgbV9pc0VuYWJsZWQoaXNFbmFibGVkKQogICAgICwgbV9pc0xhYmVsKGlzTGFi
ZWwpCisgICAgLCBtX2lzU2VsZWN0ZWQoaXNTZWxlY3RlZCkKIHsKIH0KIAogdm9pZCBXZWJQb3B1
cEl0ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90Piht
X3R5cGUpLCBtX3RleHQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3RleHREaXJlY3Rpb24pLCBt
X2hhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgbV90b29sVGlwLCBtX2FjY2Vzc2liaWxpdHlUZXh0
LCBtX2lzRW5hYmxlZCwgbV9pc0xhYmVsKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6
OkluKG1faXNTZWxlY3RlZCkpOwogfQogCiBib29sIFdlYlBvcHVwSXRlbTo6ZGVjb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViUG9wdXBJdGVtJiBpdGVtKQpAQCAtNzgs
MTAgKzgyLDE1IEBAIGJvb2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiBkZWNvZGVyLCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCiAgICAgU3RyaW5nIGFjY2Vzc2li
aWxpdHlUZXh0OwogICAgIGJvb2wgaXNFbmFibGVkOwogICAgIGJvb2wgaXNMYWJlbDsKKyAgICBi
b29sIGlzU2VsZWN0ZWQ7CisKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQo
dHlwZSwgdGV4dCwgdGV4dERpcmVjdGlvbiwgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCB0b29s
VGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsKSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4o
dHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBo
YXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0Vu
YWJsZWQsIGlzTGFiZWwpOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChp
c1NlbGVjdGVkKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGl0ZW0gPSBXZWJQb3B1
cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJl
Y3Rpb24+KHRleHREaXJlY3Rpb24pLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAs
IGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQpOwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UG9wdXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgKaW5kZXgg
M2RjNjFkNy4uZDg1ODRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBv
cHVwSXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaApAQCAt
NDQsNyArNDQsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKIAogICAgIFdlYlBvcHVwSXRlbSgp
OwogICAgIFdlYlBvcHVwSXRlbShUeXBlKTsKLSAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rp
b25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2li
aWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsKTsKKyAgICBXZWJQb3B1cEl0
ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29s
IGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBT
dHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBi
b29sIGlzU2VsZWN0ZWQpOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNv
ZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciosIFdlYlBvcHVwSXRlbSYpOwpAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJ
dGVtIHsKICAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBib29sIG1faXNFbmFi
bGVkOwogICAgIGJvb2wgbV9pc0xhYmVsOworICAgIGJvb2wgbV9pc1NlbGVjdGVkOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfaXRlbVNlbGVjdG9y
LnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVz
a3RvcEJlaGF2aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sCmluZGV4IGQzZDc3ODYuLjMwY2NlNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVz
dHMvRGVza3RvcEJlaGF2aW9yL3RzdF9pdGVtU2VsZWN0b3IucW1sCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9p
dGVtU2VsZWN0b3IucW1sCkBAIC0yMyw3ICsyMyw3IEBAIFRlc3RXZWJWaWV3IHsKICAgICAgICAg
ICAgICAgICBtb2RlbC5pdGVtcy5zZWxlY3QoV2ViVmlldy52aWV3LmluaXRpYWxTZWxlY3Rpb24p
CiAKICAgICAgICAgICAgIGlmIChXZWJWaWV3LnZpZXcuZmluYWxTZWxlY3Rpb24gPT0gLTEpCi0g
ICAgICAgICAgICAgICAgbW9kZWwucmVqZWN0KCkKKyAgICAgICAgICAgICAgICBtb2RlbC5jbG9z
ZSgpCiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAodXNlQWNjZXB0RGly
ZWN0bHkpIHsKICAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KFdlYlZpZXcudmlldy5m
aW5hbFNlbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvRGVza3RvcEJlaGF2aW9yL3RzdF9tdWx0aVNlbGVjdC5xbWwgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhh
dmlvci90c3RfbXVsdGlTZWxlY3QucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmVlZDNkM2EKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL0Rlc2t0b3BCZWhhdmlvci90c3RfbXVsdGlTZWxlY3QucW1s
CkBAIC0wLDAgKzEsNzIgQEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAK
K2ltcG9ydCBRdFdlYktpdCAzLjAKK2ltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMS4wCitp
bXBvcnQgIi4uL2NvbW1vbiIKKworLy8gRklYTUU6IE1vdmVkIHRvIERlc2t0b3AgdGVzdHMgYmVj
YXVzZSB3ZSB3YW50IHRvIGhhdmUgbW91c2VDbGljaygpIHRvIG9wZW4gdGhlIDxzZWxlY3Q+IHRh
Zy4gV2UgY2FuIG1vdmUgaXQgYmFjaworLy8gd2hlbiBUZXN0Q2FzZSBzdGFydHMgc3VwcG9ydGlu
ZyB0b3VjaCBldmVudHMsIHNlZSBodHRwczovL2J1Z3JlcG9ydHMucXQubm9raWEuY29tL2Jyb3dz
ZS9RVEJVRy0yMzA4My4KK1Rlc3RXZWJWaWV3IHsKKyAgICBpZDogd2ViVmlldworCisgICAgd2lk
dGg6IDQwMAorICAgIGhlaWdodDogNDAwCisKKyAgICBwcm9wZXJ0eSBib29sIHNlbGVjdEl0ZW1z
CisKKyAgICBleHBlcmltZW50YWwuaXRlbVNlbGVjdG9yOiBJdGVtIHsKKyAgICAgICAgVGltZXIg
eworICAgICAgICAgICAgcnVubmluZzogdHJ1ZQorICAgICAgICAgICAgaW50ZXJ2YWw6IDEKKyAg
ICAgICAgICAgIG9uVHJpZ2dlcmVkOiB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkSW5k
aWNlcyA9IFswLDFdCisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdEl0ZW1zKXsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAgc2VsZWN0ZWRJbmRpY2VzLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KHNlbGVjdGVkSW5kaWNl
c1tpXSkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbW9kZWwuY2xvc2UoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAg
ICAgIGlkOiB0aXRsZVNweQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFs
TmFtZTogInRpdGxlQ2hhbmdlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIGlk
OiB0ZXN0CisgICAgICAgIG5hbWU6ICJXZWJWaWV3TXVsdGlJdGVtU2VsZWN0b3IiCisgICAgICAg
IHdoZW46IHdpbmRvd1Nob3duCisKKyAgICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAg
ICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9tdWx0aXNlbGVjdC5o
dG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkp
CisgICAgICAgICAgICB0aXRsZVNweS5jbGVhcigpCisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBvcGVuSXRlbVNlbGVjdG9yKCkgeworICAgICAgICAgICAgbW91c2VDbGljayh3ZWJWaWV3
LCAxNSwgMTUsIFF0LkxlZnRCdXR0b24pCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0
ZXN0X3JlamVjdCgpIHsKKyAgICAgICAgICAgIHZhciBvbGRUaXRsZSA9IHdlYlZpZXcudGl0bGUK
KyAgICAgICAgICAgIHdlYlZpZXcuc2VsZWN0SXRlbXMgPSBmYWxzZTsKKyAgICAgICAgICAgIG9w
ZW5JdGVtU2VsZWN0b3IoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCBvbGRU
aXRsZSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfYWNjZXB0KCkgeworICAg
ICAgICAgICAgd2ViVmlldy5zZWxlY3RJdGVtcyA9IHRydWU7CisgICAgICAgICAgICBvcGVuSXRl
bVNlbGVjdG9yKCkKKyAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAgY29t
cGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19vcGVuX18iKQorICAgICAgICAgICAgdGl0bGVTcHkud2Fp
dCgpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsICJfX29wZW5fXyxfX2Nsb3Nl
ZF9fIikKKworICAgICAgICB9CisKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211bHRpc2VsZWN0Lmh0
bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1v
bi9tdWx0aXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEw
NzFhZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCkBAIC0wLDAgKzEsMzUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5ObyBuZXcgc2VsZWN0aW9u
IHdhcyBtYWRlPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB1cGRhdGUoKSB7CisgICAgdmFy
IHNlbG9wdGlvbnMgPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWwnKS5vcHRpb25zOworICAg
IHZhciBvcHQ7CisgICAgdmFyIHN0ciA9IG5ldyBTdHJpbmcoIiIpOworICAgIHZhciB2YWx1ZSA9
IG5ldyBTdHJpbmcoIiIpOworICAgIGZvciAodmFyIGk9MCwgbGVuPXNlbG9wdGlvbnMubGVuZ3Ro
OyBpPGxlbjsgaSsrKQorICAgIHsKKyAgICAgICAgb3B0ID0gc2Vsb3B0aW9uc1tpXTsKKyAgICAg
ICAgaWYgKG9wdC5zZWxlY3RlZCkgeworICAgICAgICAgICAgbmFtZSA9IG9wdC52YWx1ZTsKKyAg
ICAgICAgICAgIGlmIChzdHIubGVuZ3RoID09IDApCisgICAgICAgICAgICAgICAgc3RyID0gbmFt
ZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdHIgPSBzdHIgKyAiLCIgKyBu
YW1lOworICAgICAgICAgICAgYWxlcnQoIlZhbHVlOiIgKyBuYW1lICArICIgc3RyOiAiICsgc3Ry
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC50aXRsZSA9IHN0cjsKK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgICA8c2VsZWN0IGlkPSJzZWwiICBtdWx0aXBsZT0i
bXVsdGlwbGUiICBvbmNoYW5nZT0idXBkYXRlKCk7Ij4KKyAgICAgIDxvcHRpb24gdmFsdWU9Il9f
b3Blbl9fIiA+T3Blbjwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iX19jbG9zZWRfXyIg
PkNsb3NlZDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iX19hbGxfXyIgPkFsbDwvb3B0
aW9uPgorICAgICAgPC9zZWxlY3Q+Cis8L2JvZHk+CisKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZmI3ZjRmYi4uNThhODY0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTI3MzAsOSArMjczMCw5
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9GaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nKQogICAgIG1fZmluZENsaWVudC5kaWRGYWlsVG9GaW5kU3RyaW5nKHRoaXMsIHN0cmlu
Zyk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp2YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUoV2Vi
UG9wdXBNZW51UHJveHkqLCBpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJf
dCBuZXdTZWxlY3RlZEluZGV4LCBib29sIGNsb3NlUG9wdXBNZW51KQogewotICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2
ZVBvcHVwTWVudShuZXdTZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBv
cHVwTWVudShuZXdTZWxlY3RlZEluZGV4LCBjbG9zZVBvcHVwTWVudSksIG1fcGFnZUlEKTsKIH0K
IAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVudShXZWJQb3B1
cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpCkBAIC0yNzUyLDYgKzI3NTIsMTMgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgpCiB9CiAjZW5kaWYKIAorI2lmIFBM
QVRGT1JNKFFUKQordm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUG9wdXBNZW51KGludDMyX3Qgc2Vs
ZWN0ZWRJbmRleCkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okhp
ZGVQb3B1cE1lbnUoc2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKK30KKyNlbmRpZgorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCB1aW50NjRf
dCB0ZXh0RGlyZWN0aW9uLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGludDMy
X3Qgc2VsZWN0ZWRJbmRleCwgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogewog
ICAgIGlmIChtX2FjdGl2ZVBvcHVwTWVudSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDcyZDQ2OTUuLmQwMjFlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTY2NiwxMSArNjY2LDE0IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKICAgICAvLyBXZWJQ
b3B1cE1lbnVQcm94eTo6Q2xpZW50Ci0gICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCk7Cisg
ICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94
eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCwgYm9vbCBjbG9zZVBvcHVwTWVudSA9IHRydWUp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW1Gb3JQb3B1cE1lbnUoV2ViUG9wdXBN
ZW51UHJveHkqLCBpbnQzMl90IGluZGV4KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVh
bCB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpOwotI2VuZGlmICAgIAorI2VuZGlmCisjaWYg
UExBVEZPUk0oUVQpCisgICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBvcHVwTWVudShpbnQgaW5kZXgg
PSAtMSk7CisjZW5kaWYKIAogICAgIC8vIEltcGxlbWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdl
UHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAgdm9pZCBkaWRSZWNlaXZlV2ViUGFnZVByb3h5
TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBD
OjpBcmd1bWVudERlY29kZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQb3B1cE1lbnVQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvcHVw
TWVudVByb3h5LmgKaW5kZXggM2NlZmMwZC4uZWE5Y2I2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5LmgKQEAgLTUwLDEyICs1MCwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lkIHZhbHVlQ2hh
bmdlZEZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgbmV3U2VsZWN0ZWRJ
bmRleCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgdmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51
KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4LCBib29sIGNsb3Nl
UG9wdXBNZW51ID0gdHJ1ZSkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dEZyb21J
dGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRleCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1v
dXNlRG93bkV2ZW50KCkgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgdmlydHVhbCB2
b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpID0gMDsKLSNlbmRpZiAgICAgICAgCisjZW5kaWYK
KyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgdmlydHVhbCB2b2lkIGNsb3NlUG9wdXBNZW51KGlu
dCBpbmRleCA9IC0xKSA9IDA7CisjZW5kaWYKICAgICB9OwogCiAgICAgdmlydHVhbCB+V2ViUG9w
dXBNZW51UHJveHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBvcHVwTWVudVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBv
cHVwTWVudVByb3h5UXQuY3BwCmluZGV4IDJmOTIwOTguLjEwNjlkYTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKQEAgLTUy
LDIzICs1MiwyNSBAQCBwdWJsaWM6CiAgICAgICAgIElzU2VwYXJhdG9yUm9sZSA9IFF0OjpVc2Vy
Um9sZSArIDMKICAgICB9OwogCi0gICAgUG9wdXBNZW51SXRlbU1vZGVsKGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiwgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgUG9wdXBNZW51
SXRlbU1vZGVsKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgYm9vbCBtdWx0aXBsZSk7CiAg
ICAgdmlydHVhbCBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVsSW5kZXgmIHBhcmVudCA9IFFNb2Rl
bEluZGV4KCkpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuc2l6ZSgpOyB9CiAgICAgdmlydHVhbCBR
VmFyaWFudCBkYXRhKGNvbnN0IFFNb2RlbEluZGV4JiwgaW50IHJvbGUgPSBRdDo6RGlzcGxheVJv
bGUpIGNvbnN0OwogCiAgICAgUV9JTlZPS0FCTEUgdm9pZCBzZWxlY3QoaW50KTsKIAorICAgIGlu
dCBvcmlnaW5hbEluZGV4KGludCBpbmRleCA9IC0xKSBjb25zdDsKICAgICBpbnQgc2VsZWN0ZWRP
cmlnaW5hbEluZGV4KCkgY29uc3Q7CisgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fYWxsb3dNdWx0aXBsZXM7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAg
ICAgIEl0ZW0oY29uc3QgV2ViUG9wdXBJdGVtJiB3ZWJQb3B1cEl0ZW0sIGNvbnN0IFFTdHJpbmcm
IGdyb3VwLCBpbnQgb3JpZ2luYWxJbmRleCwgYm9vbCBzZWxlY3RlZCkKKyAgICAgICAgSXRlbShj
b25zdCBXZWJQb3B1cEl0ZW0mIHdlYlBvcHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGlu
dCBvcmlnaW5hbEluZGV4KQogICAgICAgICAgICAgOiB0ZXh0KHdlYlBvcHVwSXRlbS5tX3RleHQp
CiAgICAgICAgICAgICAsIHRvb2xUaXAod2ViUG9wdXBJdGVtLm1fdG9vbFRpcCkKICAgICAgICAg
ICAgICwgZ3JvdXAoZ3JvdXApCiAgICAgICAgICAgICAsIG9yaWdpbmFsSW5kZXgob3JpZ2luYWxJ
bmRleCkKICAgICAgICAgICAgICwgZW5hYmxlZCh3ZWJQb3B1cEl0ZW0ubV9pc0VuYWJsZWQpCi0g
ICAgICAgICAgICAsIHNlbGVjdGVkKHNlbGVjdGVkKQorICAgICAgICAgICAgLCBzZWxlY3RlZCh3
ZWJQb3B1cEl0ZW0ubV9pc1NlbGVjdGVkKQogICAgICAgICAgICAgLCBpc1NlcGFyYXRvcih3ZWJQ
b3B1cEl0ZW0ubV90eXBlID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQogICAgICAgICB7IH0K
IApAQCAtODIsMTAgKzg0LDExIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNTZXBhcmF0b3I7
CiAgICAgfTsKIAotICAgIHZvaWQgYnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgd2ViUG9wdXBJdGVtcywgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgdm9pZCBi
dWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zKTsKIAog
ICAgIFZlY3RvcjxJdGVtPiBtX2l0ZW1zOwotICAgIGludCBtX3NlbGVjdGVkTW9kZWxJbmRleDsK
KyAgICBRTGlzdDxpbnQ+IG1fc2VsZWN0ZWRJbmRpY2VzOworICAgIGJvb2wgbV9hbGxvd011bHRp
cGxlczsKIH07CiAKIGNsYXNzIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QgOiBwdWJsaWMgUU9i
amVjdCB7CkBAIC05NCwyNiArOTcsMjYgQEAgY2xhc3MgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVj
dCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX1BST1BFUlRZKFFPYmplY3QqIGl0ZW1zIFJFQUQg
aXRlbXMgQ09OU1RBTlQgRklOQUwpCiAKIHB1YmxpYzoKLSAgICBJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0KGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJ
dGVtPiYsIGludCBzZWxlY3RlZEluZGV4KTsKKyAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0
KGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYs
IGJvb2wgbXVsdGlwbGUpOwogCiAgICAgUVJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2VsZW1lbnRSZWN0OyB9CiAgICAgUG9wdXBNZW51SXRlbU1vZGVsKiBpdGVtcygpIHsgcmV0
dXJuICZtX2l0ZW1zOyB9CiAKICAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2VwdChpbnQgaW5kZXgg
PSAtMSk7Ci0gICAgUV9JTlZPS0FCTEUgdm9pZCByZWplY3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsg
fQorICAgIFFfSU5WT0tBQkxFIHZvaWQgY2xvc2UoKSB7IGVtaXQgZG9uZSgpOyB9CiAKIFFfU0lH
TkFMUzoKICAgICB2b2lkIGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KTsKLSAgICB2b2lk
IHJlamVjdGVkKCk7CisgICAgdm9pZCBkb25lKCk7CiAKIHByaXZhdGU6CiAgICAgUVJlY3QgbV9l
bGVtZW50UmVjdDsKICAgICBQb3B1cE1lbnVJdGVtTW9kZWwgbV9pdGVtczsKIH07CiAKLUl0ZW1T
ZWxlY3RvckNvbnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QoY29uc3QgSW50
UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0
ZW1zLCBpbnQgc2VsZWN0ZWRJbmRleCkKK0l0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Okl0ZW1T
ZWxlY3RvckNvbnRleHRPYmplY3QoY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFZl
Y3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBib29sIG11bHRpcGxlKQogICAgIDog
bV9lbGVtZW50UmVjdChlbGVtZW50UmVjdCkKLSAgICAsIG1faXRlbXMod2ViUG9wdXBJdGVtcywg
c2VsZWN0ZWRJbmRleCkKKyAgICAsIG1faXRlbXMod2ViUG9wdXBJdGVtcywgbXVsdGlwbGUpCiB7
CiB9CiAKQEAgLTEyMSw3ICsxMjQsMTAgQEAgdm9pZCBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0
OjphY2NlcHQoaW50IGluZGV4KQogewogICAgIGlmIChpbmRleCAhPSAtMSkKICAgICAgICAgbV9p
dGVtcy5zZWxlY3QoaW5kZXgpOwotICAgIGludCBvcmlnaW5hbEluZGV4ID0gbV9pdGVtcy5zZWxl
Y3RlZE9yaWdpbmFsSW5kZXgoKTsKKyAgICBlbHNlIGlmIChtX2l0ZW1zLm11bHRpcGxlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIGludCBvcmlnaW5hbEluZGV4ID0gbV9pdGVtcy5vcmlnaW5h
bEluZGV4KGluZGV4KTsKICAgICBlbWl0IGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgob3JpZ2lu
YWxJbmRleCk7CiB9CiAKQEAgLTEzNywxMiArMTQzLDEyIEBAIHN0YXRpYyBRSGFzaDxpbnQsIFFC
eXRlQXJyYXk+IGNyZWF0ZVJvbGVOYW1lc0hhc2goKQogICAgIHJldHVybiByb2xlczsKIH0KIAot
UG9wdXBNZW51SXRlbU1vZGVsOjpQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBv
cHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpCi0gICAg
OiBtX3NlbGVjdGVkTW9kZWxJbmRleCgtMSkKK1BvcHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51
SXRlbU1vZGVsKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBib29s
IG11bHRpcGxlKQorICAgIDogbV9hbGxvd011bHRpcGxlcyhtdWx0aXBsZSkKIHsKICAgICBzdGF0
aWMgUUhhc2g8aW50LCBRQnl0ZUFycmF5PiByb2xlcyA9IGNyZWF0ZVJvbGVOYW1lc0hhc2goKTsK
ICAgICBzZXRSb2xlTmFtZXMocm9sZXMpOwotICAgIGJ1aWxkSXRlbXMod2ViUG9wdXBJdGVtcywg
c2VsZWN0ZWRPcmlnaW5hbEluZGV4KTsKKyAgICBidWlsZEl0ZW1zKHdlYlBvcHVwSXRlbXMpOwog
fQogCiBRVmFyaWFudCBQb3B1cE1lbnVJdGVtTW9kZWw6OmRhdGEoY29uc3QgUU1vZGVsSW5kZXgm
IGluZGV4LCBpbnQgcm9sZSkgY29uc3QKQEAgLTE3NywzNSArMTgzLDcwIEBAIFFWYXJpYW50IFBv
cHVwTWVudUl0ZW1Nb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xl
KSBjb25zdAogCiB2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0KGludCBpbmRleCkKIHsK
LSAgICBpbnQgb2xkSW5kZXggPSBtX3NlbGVjdGVkTW9kZWxJbmRleDsKLSAgICBpZiAoaW5kZXgg
PT0gb2xkSW5kZXgpCi0gICAgICAgIHJldHVybjsKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4
ID49IG1faXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CisKICAgICBJdGVtJiBpdGVtID0g
bV9pdGVtc1tpbmRleF07CiAgICAgaWYgKCFpdGVtLmVuYWJsZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOwotICAgIG1fc2VsZWN0ZWRNb2RlbEluZGV4ID0g
aW5kZXg7CisgICAgaWYgKG1fYWxsb3dNdWx0aXBsZXMpIHsKKyAgICAgICAgaXRlbS5zZWxlY3Rl
ZCA9ICFpdGVtLnNlbGVjdGVkOwogCi0gICAgaWYgKG9sZEluZGV4ICE9IC0xKSB7Ci0gICAgICAg
IEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKLSAgICAgICAgb2xkSXRlbS5zZWxl
Y3RlZCA9IGZhbHNlOwotICAgICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KG9sZElu
ZGV4KSwgdGhpcy0+aW5kZXgob2xkSW5kZXgpKTsKLSAgICB9CisgICAgICAgIC8vIFVwZGF0ZSB0
aGUgc2VsZWN0ZWQgaW5kaWNlcyBsaXN0CisgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKQorICAg
ICAgICAgICAgbV9zZWxlY3RlZEluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBpbnQgbGlzdEluZGV4ID0gbV9zZWxlY3RlZEluZGljZXMuaW5kZXhPZihp
bmRleCk7CisgICAgICAgICAgICBpZiAobGlzdEluZGV4ICE9IC0xKQorICAgICAgICAgICAgICAg
IG1fc2VsZWN0ZWRJbmRpY2VzLnJlbW92ZUF0KGxpc3RJbmRleCk7CisgICAgICAgIH0KKyAgICB9
IGVsc2UgeworCisgICAgICAgIGludCBvbGRJbmRleCA9IC0xOworICAgICAgICBpZiAoIW1fc2Vs
ZWN0ZWRJbmRpY2VzLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG9sZEluZGV4ID0gbV9zZWxlY3Rl
ZEluZGljZXNbMF07CisKKyAgICAgICAgaWYgKGluZGV4ID09IG9sZEluZGV4KQorICAgICAgICAg
ICAgcmV0dXJuOwogCisgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOworCisgICAgICAgIGlm
IChvbGRJbmRleCA9PSAtMSkKKyAgICAgICAgICAgIG1fc2VsZWN0ZWRJbmRpY2VzLmFwcGVuZChp
bmRleCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgSXRlbSYgb2xkSXRlbSA9IG1faXRl
bXNbb2xkSW5kZXhdOworICAgICAgICAgICAgb2xkSXRlbS5zZWxlY3RlZCA9IGZhbHNlOworICAg
ICAgICAgICAgbV9zZWxlY3RlZEluZGljZXMucmVwbGFjZSgwLCBpbmRleCk7CisgICAgICAgICAg
ICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KG9sZEluZGV4KSwgdGhpcy0+aW5kZXgob2xk
SW5kZXgpKTsKKyAgICAgICAgfQorICAgIH0KICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmlu
ZGV4KGluZGV4KSwgdGhpcy0+aW5kZXgoaW5kZXgpKTsKIH0KIAoraW50IFBvcHVwTWVudUl0ZW1N
b2RlbDo6b3JpZ2luYWxJbmRleChpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4ID09
IC0xICYmICFtX2FsbG93TXVsdGlwbGVzKQorICAgICAgICBpbmRleCA9IG1fc2VsZWN0ZWRJbmRp
Y2VzLmF0KDApOworCisgICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisK
KyAgICByZXR1cm4gbV9pdGVtc1tpbmRleF0ub3JpZ2luYWxJbmRleDsKK30KKwogaW50IFBvcHVw
TWVudUl0ZW1Nb2RlbDo6c2VsZWN0ZWRPcmlnaW5hbEluZGV4KCkgY29uc3QKIHsKLSAgICBpZiAo
bV9zZWxlY3RlZE1vZGVsSW5kZXggPT0gLTEpCisgICAgaWYgKG1fc2VsZWN0ZWRJbmRpY2VzLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBtX2l0ZW1zW21fc2VsZWN0
ZWRNb2RlbEluZGV4XS5vcmlnaW5hbEluZGV4OworCisgICAgUUxpc3Q8aW50PiBsaXN0ID0gbV9z
ZWxlY3RlZEluZGljZXM7CisgICAgcVNvcnQobGlzdCk7CisKKyAgICByZXR1cm4gb3JpZ2luYWxJ
bmRleChsaXN0LmF0KDApKTsKIH0KIAotdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRl
bXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3Rl
ZE9yaWdpbmFsSW5kZXgpCit2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJdGVtcyhjb25z
dCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcykKIHsKICAgICBRU3RyaW5nIGN1
cnJlbnRHcm91cDsKICAgICBtX2l0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2ViUG9wdXBJ
dGVtcy5zaXplKCkpOwpAQCAtMjE1LDEwICsyNTYsOSBAQCB2b2lkIFBvcHVwTWVudUl0ZW1Nb2Rl
bDo6YnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywg
aQogICAgICAgICAgICAgY3VycmVudEdyb3VwID0gd2ViUG9wdXBJdGVtLm1fdGV4dDsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGJvb2wgc2VsZWN0ZWQg
PSBpID09IHNlbGVjdGVkT3JpZ2luYWxJbmRleDsKLSAgICAgICAgaWYgKHNlbGVjdGVkKQotICAg
ICAgICAgICAgbV9zZWxlY3RlZE1vZGVsSW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKLSAgICAgICAg
bV9pdGVtcy5hcHBlbmQoSXRlbSh3ZWJQb3B1cEl0ZW0sIGN1cnJlbnRHcm91cCwgaSwgc2VsZWN0
ZWQpKTsKKyAgICAgICAgaWYgKHdlYlBvcHVwSXRlbS5tX2lzU2VsZWN0ZWQpCisgICAgICAgICAg
ICBtX3NlbGVjdGVkSW5kaWNlcy5hcHBlbmQobV9pdGVtcy5zaXplKCkpOworICAgICAgICBtX2l0
ZW1zLmFwcGVuZChJdGVtKHdlYlBvcHVwSXRlbSwgY3VycmVudEdyb3VwLCBpKSk7CiAgICAgfQog
fQogCkBAIC0yMzIsMTQgKzI3MiwxNyBAQCBXZWJQb3B1cE1lbnVQcm94eVF0Ojp+V2ViUG9wdXBN
ZW51UHJveHlRdCgpCiB7CiB9CiAKLXZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVw
TWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUs
IGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhJiwgaW50MzJfdCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0
OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rp
b24sIGRvdWJsZSwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0
Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEsIGludDMyX3QpCiB7Ci0gICAgbV9zZWxlY3RlZEluZGV4
ID0gc2VsZWN0ZWRJbmRleDsKKyAgICBtX2FsbG93TXVsdGlwbGVTZWxlY3Rpb25zID0gZGF0YS5t
dWx0aXBsZVNlbGVjdGlvbnM7CiAKLSAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KiBjb250
ZXh0T2JqZWN0ID0gbmV3IEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QocmVjdCwgaXRlbXMsIG1f
c2VsZWN0ZWRJbmRleCk7Ci0gICAgY3JlYXRlSXRlbShjb250ZXh0T2JqZWN0KTsKKyAgICBtX2Nv
bnRleHRPYmplY3QgPSBhZG9wdFB0cihuZXcgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChyZWN0
LCBpdGVtcywgbV9hbGxvd011bHRpcGxlU2VsZWN0aW9ucykpOworICAgIGlmICghbV9jb250ZXh0
T2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICBjcmVhdGVJdGVtKG1fY29udGV4dE9iamVj
dC5nZXQoKSk7CiAgICAgaWYgKCFtX2l0ZW1TZWxlY3RvcikgewotICAgICAgICBub3RpZnlWYWx1
ZUNoYW5nZWQoKTsKKyAgICAgICAgaGlkZVBvcHVwTWVudSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+c2V0RGlhbG9n
QWN0aXZlKHRydWUpOwpAQCAtMjQ3LDQ0ICsyOTAsNTEgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94
eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJl
Y3QKIAogdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpoaWRlUG9wdXBNZW51KCkKIHsKKyAgICBp
bnQgc2VsZWN0ZWRJbmRleCA9IC0xOworICAgIGlmIChtX2NvbnRleHRPYmplY3QpIHsKKyAgICAg
ICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IHN0YXRpY19jYXN0
PEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QqPihtX2NvbnRleHRPYmplY3QuZ2V0KCkpOworICAg
ICAgICBpZiAoY29udGV4dE9iamVjdCkKKyAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBjb250
ZXh0T2JqZWN0LT5pdGVtcygpLT5zZWxlY3RlZE9yaWdpbmFsSW5kZXgoKTsKKyAgICB9CisKICAg
ICBtX2l0ZW1TZWxlY3Rvci5jbGVhcigpOwogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQo
bV93ZWJWaWV3KS0+c2V0RGlhbG9nQWN0aXZlKGZhbHNlKTsKICAgICBtX2NvbnRleHQuY2xlYXIo
KTsKLSAgICBub3RpZnlWYWx1ZUNoYW5nZWQoKTsKKyAgICBtX2NvbnRleHRPYmplY3QuY2xlYXIo
KTsKKworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBtX2NsaWVudC0+Y2xvc2VQb3B1cE1l
bnUoc2VsZWN0ZWRJbmRleCk7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICB9CisKIH0KIAog
dm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJbmRleChpbnQgaW5kZXgpCiB7Ci0gICAg
bV9zZWxlY3RlZEluZGV4ID0gaW5kZXg7CisgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBv
cHVwTWVudSh0aGlzLCBpbmRleCwgZmFsc2UpOwogfQogCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5
UXQ6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKIHsKICAgICBRUW1sQ29tcG9u
ZW50KiBjb21wb25lbnQgPSBtX3dlYlZpZXctPmV4cGVyaW1lbnRhbCgpLT5pdGVtU2VsZWN0b3Io
KTsKLSAgICBpZiAoIWNvbXBvbmVudCkgewotICAgICAgICBkZWxldGUgY29udGV4dE9iamVjdDsK
KyAgICBpZiAoIWNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNyZWF0
ZUNvbnRleHQoY29tcG9uZW50LCBjb250ZXh0T2JqZWN0KTsKICAgICBRT2JqZWN0KiBvYmplY3Qg
PSBjb21wb25lbnQtPmJlZ2luQ3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFvYmpl
Y3QpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7CisgICAgaWYgKCFvYmplY3QpCiAgICAg
ICAgIHJldHVybjsKLSAgICB9CiAKICAgICBtX2l0ZW1TZWxlY3RvciA9IGFkb3B0UHRyKHFvYmpl
Y3RfY2FzdDxRUXVpY2tJdGVtKj4ob2JqZWN0KSk7Ci0gICAgaWYgKCFtX2l0ZW1TZWxlY3Rvcikg
ewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICAgICAgbV9pdGVtU2VsZWN0b3IuY2xl
YXIoKTsKKyAgICBpZiAoIW1faXRlbVNlbGVjdG9yKQogICAgICAgICByZXR1cm47Ci0gICAgfQog
CiAgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWRXaXRoT3JpZ2luYWxJ
bmRleChpbnQpKSwgU0xPVChzZWxlY3RJbmRleChpbnQpKSk7CiAKICAgICAvLyBXZSBlbnF1ZXVl
IHRoZXNlIGJlY2F1c2UgdGhleSBhcmUgdHJpZ2dlcmVkIGJ5IG1faXRlbVNlbGVjdG9yIGFuZCB3
aWxsIGxlYWQgdG8gaXRzIGRlc3RydWN0aW9uLgotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwg
U0lHTkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVu
dSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwg
U0lHTkFMKHJlamVjdGVkKCkpLCBTTE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25u
ZWN0aW9uKTsKKyAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChkb25lKCkpLCBTTE9U
KGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICBpZiAoIW1fYWxs
b3dNdWx0aXBsZVNlbGVjdGlvbnMpCisgICAgICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lH
TkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVudSgp
KSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogCiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6Omdl
dChtX3dlYlZpZXcpLT5hZGRBdHRhY2hlZFByb3BlcnR5VG8obV9pdGVtU2VsZWN0b3IuZ2V0KCkp
OwogICAgIG1faXRlbVNlbGVjdG9yLT5zZXRQYXJlbnRJdGVtKG1fd2ViVmlldyk7CkBAIC0zMDIs
MTkgKzM1MiwxMCBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUNvbnRleHQoUVFt
bENvbXBvbmVudCogY29tcG9uZW50LCBRT2JqZWN0KiBjb250ZQogICAgICAgICBiYXNlQ29udGV4
dCA9IFFRbWxFbmdpbmU6OmNvbnRleHRGb3JPYmplY3QobV93ZWJWaWV3KTsKICAgICBtX2NvbnRl
eHQgPSBhZG9wdFB0cihuZXcgUVFtbENvbnRleHQoYmFzZUNvbnRleHQpKTsKIAotICAgIGNvbnRl
eHRPYmplY3QtPnNldFBhcmVudChtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dC0+c2V0
Q29udGV4dFByb3BlcnR5KFFMYXRpbjFTdHJpbmcoIm1vZGVsIiksIGNvbnRleHRPYmplY3QpOwog
ICAgIG1fY29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2JqZWN0KTsKIH0KIAotdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eVF0Ojpub3RpZnlWYWx1ZUNoYW5nZWQoKQotewotICAgIGlmICht
X2NsaWVudCkgewotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRo
aXMsIG1fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICB9Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAvLyBTaW5jZSB3ZSBkZWZpbmUgUU9iamVjdHMgaW4g
V2ViUG9wdXBNZW51UHJveHlRdC5jcHAsIHRoaXMgd2lsbCB0cmlnZ2VyIG1vYyB0byBydW4gb24g
LmNwcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1l
bnVQcm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJv
eHlRdC5oCmluZGV4IDIxZWVjNWQuLjE0N2YzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtNjEsMTMgKzYxLDE0IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBjcmVhdGVJdGVtKFFPYmplY3QqKTsKICAgICB2b2lkIGNyZWF0ZUNv
bnRleHQoUVFtbENvbXBvbmVudCosIFFPYmplY3QqKTsKIAotICAgIHZvaWQgbm90aWZ5VmFsdWVD
aGFuZ2VkKCk7CisgICAgdm9pZCBjbG9zZVBvcHVwTWVudSgpOwogCiAgICAgT3duUHRyPFFRbWxD
b250ZXh0PiBtX2NvbnRleHQ7CiAgICAgT3duUHRyPFFRdWlja0l0ZW0+IG1faXRlbVNlbGVjdG9y
OworICAgIE93blB0cjxRT2JqZWN0PiBtX2NvbnRleHRPYmplY3Q7CiAKICAgICBRUXVpY2tXZWJW
aWV3KiBtX3dlYlZpZXc7Ci0gICAgaW50MzJfdCBtX3NlbGVjdGVkSW5kZXg7CisgICAgYm9vbCBt
X2FsbG93TXVsdGlwbGVTZWxlY3Rpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBv
cHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBvcHVwTWVudS5jcHAKaW5kZXggOTQwY2I5NS4uNGMzMDlkYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNw
cApAQCAtNTksOSArNTksMTQgQEAgdm9pZCBXZWJQb3B1cE1lbnU6OmRpZENoYW5nZVNlbGVjdGVk
SW5kZXgoaW50IG5ld0luZGV4KQogICAgIGlmICghbV9wb3B1cENsaWVudCkKICAgICAgICAgcmV0
dXJuOwogCisjaWYgUExBVEZPUk0oUVQpCisgICAgaWYgKG5ld0luZGV4ID49IDApCisgICAgICAg
IG1fcG9wdXBDbGllbnQtPmxpc3RCb3hTZWxlY3RJdGVtKG5ld0luZGV4LCBtX3BvcHVwQ2xpZW50
LT5tdWx0aXBsZSgpLCBmYWxzZSk7CisjZWxzZQogICAgIG1fcG9wdXBDbGllbnQtPnBvcHVwRGlk
SGlkZSgpOwogICAgIGlmIChuZXdJbmRleCA+PSAwKQogICAgICAgICBtX3BvcHVwQ2xpZW50LT52
YWx1ZUNoYW5nZWQobmV3SW5kZXgpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51Ojpz
ZXRUZXh0Rm9ySW5kZXgoaW50IGluZGV4KQpAQCAtODcsNyArOTIsNyBAQCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiBXZWJQb3B1cE1lbnU6OnBvcHVsYXRlSXRlbXMoKQogICAgICAgICAgICAgLy8gRklY
TUU6IEFkZCBzdXBwb3J0IGZvciBzdHlsaW5nIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5k
IGNvbG9ycy4KICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGN1c3RvbWl6ZSB0
ZXh0IGNvbG9yIHdoZW4gYW4gaXRlbSBpcyBoaWdobGlnaHRlZC4KICAgICAgICAgICAgIFBvcHVw
TWVudVN0eWxlIGl0ZW1TdHlsZSA9IG1fcG9wdXBDbGllbnQtPml0ZW1TdHlsZShpKTsKLSAgICAg
ICAgICAgIGl0ZW1zLmFwcGVuZChXZWJQb3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJdGVtLCBtX3Bv
cHVwQ2xpZW50LT5pdGVtVGV4dChpKSwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0
eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLCBtX3BvcHVwQ2xpZW50LT5pdGVtVG9vbFRp
cChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUFjY2Vzc2liaWxpdHlUZXh0KGkpLCBtX3BvcHVwQ2xp
ZW50LT5pdGVtSXNFbmFibGVkKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJlbChpKSkpOwor
ICAgICAgICAgICAgaXRlbXMuYXBwZW5kKFdlYlBvcHVwSXRlbShXZWJQb3B1cEl0ZW06Okl0ZW0s
IG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBp
dGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCksIG1fcG9wdXBDbGllbnQtPml0ZW1U
b29sVGlwKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtQWNjZXNzaWJpbGl0eVRleHQoaSksIG1fcG9w
dXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkp
LCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNTZWxlY3RlZChpKSkpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YlBvcHVwTWVudS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQb3B1cE1lbnUuaAppbmRleCA4ZTY2MjUwLi42MzE5YjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKQEAg
LTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBt
X3BhZ2UgPSAwOyB9CiAgICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGludCBuZXdJbmRl
eCk7CiAgICAgdm9pZCBzZXRUZXh0Rm9ySW5kZXgoaW50IG5ld0luZGV4KTsKLSNpZiBQTEFURk9S
TShHVEspICAgIAorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCiAgICAgV2ViQ29y
ZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50
OyB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcAppbmRleCBiMjFmMDZjLi5m
MGE4Zjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcApAQCAtMjcsMTMgKzI3LDE1IEBA
CiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVBvcHVwTWVu
dURhdGEuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudUNsaWVudC5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUG9wdXBN
ZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0JiwgUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhJikKK3ZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0
JiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogeworICAgIGRhdGEubXVsdGlwbGVTZWxl
Y3Rpb25zID0gbV9wb3B1cENsaWVudC0+bXVsdGlwbGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggMzg1OTBkZi4uN2IwMzRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjMzMiwxNCArMjMzMiwyNCBAQCB2b2lkIFdlYlBhZ2U6
OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9u
cywgdWludDMyXwogICAgIG1fZmluZENvbnRyb2xsZXIuY291bnRTdHJpbmdNYXRjaGVzKHN0cmlu
Zywgc3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKIH0K
IAotdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51
KGludDMyX3QgbmV3SW5kZXgpCit2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhG
b3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCwgYm9vbCBjbG9zZVBvcHVwTWVudSkK
IHsKICAgICBpZiAoIW1fYWN0aXZlUG9wdXBNZW51KQogICAgICAgICByZXR1cm47CiAKICAgICBt
X2FjdGl2ZVBvcHVwTWVudS0+ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChuZXdJbmRleCk7CisgICAg
aWYgKGNsb3NlUG9wdXBNZW51KQorICAgICAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7Cit9CisK
KyNpZiBQTEFURk9STShRVCkKK3ZvaWQgV2ViUGFnZTo6aGlkZVBvcHVwTWVudShpbnQzMl90IG5l
d0luZGV4KQoreworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5jbGllbnQoKS0+cG9wdXBEaWRIaWRl
KCk7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPnNldFRleHRGb3JJbmRleChuZXdJbmRleCk7CiAg
ICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOwogfQorI2VuZGlmCiAKIHZvaWQgV2ViUGFnZTo6ZGlk
Q2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNGIyYjc2
Yy4uNGI3MmMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC02NjIsMTIgKzY2MiwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZmluZFpvb21hYmxl
QXJlYUZvclBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgYXJlYSk7CiAjZW5kaWYKIAotICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZv
ckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKyAgICB2b2lkIGRpZENoYW5nZVNl
bGVjdGVkSW5kZXhGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCwgYm9vbCBjbG9z
ZVBvcHVwTWVudSk7CiAgICAgdm9pZCBzZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3Qg
aW5kZXgpOwogCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBN
ZW51KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUo
aW50MzJfdCBuZXdJbmRleCA9IC0xKTsKKyNlbmRpZgogCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxl
c0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgZGlkQ2FuY2Vs
Rm9yT3BlblBhbmVsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDRiYWI4YWMuLmIxMTIyNWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0xNTUsMTEgKzE1NSwxNCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICNlbmRpZgog
CiAgICAgIyBQb3B1cCBtZW51LgotICAgIERpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JBY3RpdmVQ
b3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCk7CisgICAgRGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZv
ckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4LCBib29sIGNsb3NlUG9wdXBNZW51KTsK
ICAgICBTZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgaW5kZXgpOwogI2lmIFBMQVRG
T1JNKEdUSykgICAgCiAgICAgRmFpbGVkVG9TaG93UG9wdXBNZW51KCk7Ci0jZW5kaWYgICAgCisj
ZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBIaWRlUG9wdXBNZW51KGludDMyX3QgbmV3SW5k
ZXgpOworI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgIyBDb250
ZXh0IG1lbnUuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggYzE0OGNlMC4uMjdjODllOSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTI1ICBEaW51IEphY29i
ICA8ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIEFkZCBzdXBwb3J0
IGZvciBtdWx0aS1zZWxlY3QgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODU1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9JdGVtU2VsZWN0b3IucW1sOgorCisg
ICAgICAgVXBkYXRlIHRvIG1hdGNoIHRoZSBjaGFuZ2UgaW4gdGhlIG5hbWUgb2YgdGhlIHNsb3Qg
dG8KKyAgICAgICBoaWRlIHRoZSBwb3B1cCBtZW51LgorCiAyMDEyLTA1LTIzICBLYW5naWwgSGFu
ICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtEUlRdIEZpeCBXZWJD
b3JlIGxpYnJhcnkgcGF0aCBhbmQgcmViYXNlbGluZSByZXN1bHQKZGlmZiAtLWdpdCBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L3FtbC9JdGVtU2VsZWN0b3IucW1sIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKaW5kZXggNDMwMjJiNi4uNDVkZjFhNCAxMDA2NDQKLS0t
IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKQEAgLTMxLDcgKzMxLDcgQEAgTW91
c2VBcmVhIHsKICAgICAvLyBUbyBhdm9pZCBjb25mbGljdGluZyB3aXRoIExpc3RWaWV3Lm1vZGVs
IHdoZW4gaW5zaWRlIExpc3RWaWV3IGNvbnRleHQuCiAgICAgcHJvcGVydHkgUXRPYmplY3Qgc2Vs
ZWN0b3JNb2RlbDogbW9kZWwKICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAotICAgIG9uQ2xpY2tl
ZDogc2VsZWN0b3JNb2RlbC5yZWplY3QoKQorICAgIG9uQ2xpY2tlZDogc2VsZWN0b3JNb2RlbC5j
bG9zZSgpCiAKICAgICBSZWN0YW5nbGUgewogICAgICAgICBjbGlwOiB0cnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144606</attachid>
            <date>2012-05-29 13:18:43 -0700</date>
            <delta_ts>2012-05-31 11:23:46 -0700</delta_ts>
            <desc>Patch with fixes</desc>
            <filename>85527_1.patch</filename>
            <type>text/plain</type>
            <size>35050</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA2NjJiNDkwLi5lYTBjZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkg
QEAKKzIwMTItMDUtMjkgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9y
IG11bHRpLXNlbGVjdCBsaXN0LiBGb3IgbXVsdGktc2VsZWN0IGxpc3QsIHRoZSBwb3B1cCBtZW51
IGlzIG5vdCBjbG9zZWQgb24gc2VsZWN0aW5nCisgICAgICAgIGFuIGl0ZW0gYW5kIHJlcXVpcmVz
IGV4cGxpY2l0IGNhbGwgdG8gaGlkZSB0aGUgbWVudS4gVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRv
IGJlIGRpc3BsYXllZCB3aGVuIHRoZSBtZW51CisgICAgICAgIGlzIGhpZGRlbiBpcyBwcm92aWRl
ZCB3aXRoIHJlcXVlc3QgdG8gaGlkZSB0aGUgcG9wdXAuCisKKyAgICAgICAgLSBBZGRlZCBtdWx0
aS1zZWxlY3Rpb24gZmxhZyB0byBQbGF0Zm9ybVBvcHVwTWVudURhdGEgdG8gaW5kaWNhdGUgd2hl
dGhlciB0byBhY2NlcHQgbXVsdGlwbGUgc2VsZWN0aW9ucyBvciBub3QuCisgICAgICAgIC0gQWRk
ZWQgc2VsZWN0ZWQgc3RhdGUgdG8gV2ViUG9wdXBJdGVtLgorICAgICAgICAtIE1vZGlmaWVkIFdl
YlBvcHVwTWVudVF0IHRvIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy4KKworICAgICAgICAq
IFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSk6IEFkZGVkIG1lbWJlciBp
bmRpY2F0aW5nIG11bHRpLXNlbGVjdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1
cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURh
dGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oOgor
ICAgICAgICAoUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUG9w
dXBJdGVtLmNwcDogQWRkZWQgbmV3IG1lbWJlciB0aGF0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBp
dGVtIGhhcyBiZWVuIHNlbGVjdGVkIG9yIG5vdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJ
dGVtOjpXZWJQb3B1cEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmVuY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBT
aGFyZWQvV2ViUG9wdXBJdGVtLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9x
bWx0ZXN0cy9XZWJWaWV3L3RzdF9pdGVtU2VsZWN0b3IucW1sOiBVc2UgcmVuYW1lZCBzaWduYWwg
dG8gaGlkZSB0aGUgbWVudS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL1dlYlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vbXVsdGlzZWxlY3QuaHRtbDogQWRkZWQu
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZVNlbGVjdGVkSW5kZXgpOiBO
ZXcgQVBJIHRvIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgaW5kZXguCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Y2xvc2VQb3B1cE1lbnUpOiBOZXcgQVBJIHRvIHJlcXVlc3QgdGhlIHBvcHVw
IG1lbnUgdG8gYmUgaGlkZGVuLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoK
KyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVu
dVByb3h5Lmg6CisgICAgICAgIChDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQ
b3B1cE1lbnVQcm94eVF0LmNwcDoKKyAgICAgICAgKFBvcHVwTWVudUl0ZW1Nb2RlbCk6IFJlbW92
ZWQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4IGFuZCBhZGRlZCBuZXcgYXJndW1lbnQgdGhhdCBpbmRp
Y2F0ZXMgd2hldGhlciBpdCBpcyBhIG11bHRpLXNlbGVjdCBsaXN0IG9yIG5vdC4KKyAgICAgICAg
KFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjptdWx0aXBsZSk6CisgICAgICAgIChXZWJLaXQ6
OlBvcHVwTWVudUl0ZW1Nb2RlbDo6SXRlbTo6SXRlbSk6CisgICAgICAgIChJdGVtU2VsZWN0b3JD
b250ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVj
dDo6YWxsb3dNdWx0aVNlbGVjdCk6IE5ldyBwcm9wZXJ0eSB0aGF0IGluZGljYXRlcyB3aGV0aGVy
IGl0IGlzIGEgbXVsdGktc2VsZWN0IGxpc3Qgb3Igbm90LgorICAgICAgICAoV2ViS2l0OjpJdGVt
U2VsZWN0b3JDb250ZXh0T2JqZWN0OjpjbG9zZSk6IFJlbmFtZWQgcmVqZWN0IHRvIGNsb3NlIHRv
IGJlIGdlbmVyaWMgZm9yIGJvdGggc2luZ2xlLXNlbGVjdCBhcyB3ZWxsIGFzIG11bHRpLXNlbGVj
dCBsaXN0cy4KKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRl
bVNlbGVjdG9yQ29udGV4dE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNv
bnRleHRPYmplY3Q6OmFjY2VwdCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2Rl
bDo6UG9wdXBNZW51SXRlbU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1v
ZGVsOjpzZWxlY3QpOiBBZGRzL3JlcGxhY2VzIHRoZSBpbmRleCBpbiB0aGUgc2VsZWN0ZWQgaW5k
aWNlcyBsaXN0LiBGb3Igc2luZ2xlIHNlbGVjdCBsaXN0LCByZW1vdmVzIHRoZSBvbGQgaW5kZXgg
KGlmIGFueSkgZnJvbSB0aGUgc2VsZWN0ZWQgaW5kaWNlcyBsaXN0LgorICAgICAgICAoV2ViS2l0
OjpQb3B1cE1lbnVJdGVtTW9kZWw6Om9yaWdpbmFsSW5kZXgpOiBNYXBzIHRoZSBpbmRleCB0byB0
aGUgb3JpZ2luYWwgbGlzdCBvZiBpdGVtcy4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0ZWRPcmlnaW5hbEluZGV4KTogVGhpcyBp
cyB0aGUgKG9yaWdpbmFsKSBpbmRleCB0byBiZSBkaXNwbGF5ZWQgLSB0aGlzIGlzIHRoZSBsb3dl
c3QgaW5kZXhlZCBpdGVtIHRoYXQgaXMgaW4gc2VsZWN0ZWQgc3RhdGUgZm9yIG11bHRpLXNlbGVj
dC4KKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJbmRleCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oOgorICAgICAgICAoV2ViUG9wdXBNZW51UHJveHlR
dCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnBvcHVsYXRlSXRlbXMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51Lmg6CisgICAgICAgIChX
ZWJQb3B1cE1lbnUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2Vi
UG9wdXBNZW51UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnU6OnNldFVwUGxh
dGZvcm1EYXRhKTogUG9wdWxhdGUgZGF0YSB3aXRoIG11bHRpcGxlU2VsZWN0aW9ucyBmbGFnLgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDogSGFuZGxlIG5ldyBtZXNz
YWdlcyBhZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJ
bmRleEZvckFjdGl2ZVBvcHVwTWVudSk6IENhbGwgbGlzdEJveFNlbGVjdEl0ZW0gdG8gdXBkYXRl
IHRoZSBzZWxlY3RlZCBpbmRleCB0byBzdXBwb3J0IG11bHRpLXNlbGVjdCBsaXN0cyBhbHNvLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0ZWRJbmRl
eCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpjaGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46ICBOZXcgbWVzc2FnZXMgdG8gdXBk
YXRlIHRoZSBzZWxlY3RlZCBpbmRleCBhbmQgdG8gcmVxdWVzdCB0aGUgcG9wdXAgbWVudSB0byBi
ZSBoaWRkZW4uCisKIDIwMTItMDUtMjkgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5u
YWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW0dUS10gW1dLMl0gUmVwcm9kdWNp
YmxlIGNyYXNoIGluIHBlcmZvcm1EcmFnQ29udHJvbGxlckFjdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAppbmRleCA2YzRkMjBlLi5iNjI3
YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRh
LmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQoMCkKICAgICAsIG1fcG9wdXBX
aWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQTEFURk9STShRVCkKKyAgICA6
IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewogfQpAQCAtNjIsNiArNjQsOCBA
QCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5j
b2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyLT5l
bmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShzaG91bGRQb3BPdmVyKTsKKyNl
bGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShtdWx0aXBsZVNlbGVjdGlvbnMp
OwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQbGF0Zm9ybVBvcHVwTWVudURh
dGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsYXRmb3JtUG8K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEuc2hv
dWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFBMQVRGT1JNKFFUKQor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25zKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXggZjg1MDA4YS4u
MjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBN
ZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURh
dGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHsKICNl
bGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBib29sIHNob3Vs
ZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29sIG11bHRpcGxlU2VsZWN0aW9u
czsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBv
cHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAppbmRl
eCBhOWFjMDMyLi5jMjE1ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UG9wdXBJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNw
cApAQCAtMzksNiArMzksNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAgICAgLCBt
X3RleHREaXJlY3Rpb24oTFRSKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFs
c2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQog
ewogfQogCkBAIC00OCwxMCArNDksMTEgQEAgV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlw
ZSB0eXBlKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAgLCBt
X2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc0xhYmVsKGZhbHNlKQorICAgICwgbV9pc1NlbGVj
dGVkKGZhbHNlKQogewogfQogCi1XZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUs
IGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGhh
c1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJp
bmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsKQorV2Vi
UG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRl
eHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUs
IGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBhY2Nlc3NpYmlsaXR5VGV4dCwg
Ym9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCwgYm9vbCBpc1NlbGVjdGVkKQogICAgIDogbV90
eXBlKHR5cGUpCiAgICAgLCBtX3RleHQodGV4dCkKICAgICAsIG1fdGV4dERpcmVjdGlvbih0ZXh0
RGlyZWN0aW9uKQpAQCAtNjAsMTIgKzYyLDE0IEBAIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVt
KFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJlCiAg
ICAgLCBtX2FjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2liaWxpdHlUZXh0KQogICAgICwgbV9pc0Vu
YWJsZWQoaXNFbmFibGVkKQogICAgICwgbV9pc0xhYmVsKGlzTGFiZWwpCisgICAgLCBtX2lzU2Vs
ZWN0ZWQoaXNTZWxlY3RlZCkKIHsKIH0KIAogdm9pZCBXZWJQb3B1cEl0ZW06OmVuY29kZShDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpLCBtX3RleHQsIHN0
YXRpY19jYXN0PHVpbnQ2NF90PihtX3RleHREaXJlY3Rpb24pLCBtX2hhc1RleHREaXJlY3Rpb25P
dmVycmlkZSwgbV90b29sVGlwLCBtX2FjY2Vzc2liaWxpdHlUZXh0LCBtX2lzRW5hYmxlZCwgbV9p
c0xhYmVsKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKG1faXNTZWxlY3RlZCkp
OwogfQogCiBib29sIFdlYlBvcHVwSXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViUG9wdXBJdGVtJiBpdGVtKQpAQCAtNzgsMTAgKzgyLDE1IEBAIGJvb2wg
V2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJQb3B1cEl0ZW0mIGl0ZW0pCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlUZXh0OwogICAgIGJv
b2wgaXNFbmFibGVkOwogICAgIGJvb2wgaXNMYWJlbDsKKyAgICBib29sIGlzU2VsZWN0ZWQ7CisK
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwgdGV4dCwgdGV4dERp
cmVjdGlvbiwgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5
VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSksIHRleHQsIHN0YXRp
Y19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBoYXNUZXh0RGlyZWN0aW9uT3Zl
cnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwpOwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpc1NlbGVjdGVkKSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8
VHlwZT4odHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rp
b24pLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0
LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQpOwogICAgIHJldHVybiB0cnVlOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgKaW5kZXggM2RjNjFkNy4uZDg1ODRiZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaApAQCAtNDQsNyArNDQsNyBAQCBzdHJ1
Y3QgV2ViUG9wdXBJdGVtIHsKIAogICAgIFdlYlBvcHVwSXRlbSgpOwogICAgIFdlYlBvcHVwSXRl
bShUeXBlKTsKLSAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJD
b3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3Qg
U3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlz
RW5hYmxlZCwgYm9vbCBpc0xhYmVsKTsKKyAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25P
dmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxp
dHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29sIGlzU2VsZWN0ZWQpOwog
CiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAg
c3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYlBvcHVwSXRl
bSYpOwpAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKICAgICBTdHJpbmcg
bV9hY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBib29sIG1faXNFbmFibGVkOwogICAgIGJvb2wgbV9p
c0xhYmVsOworICAgIGJvb2wgbV9pc1NlbGVjdGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL1dlYlZpZXcvdHN0X2l0ZW1TZWxlY3Rvci5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2l0ZW1TZWxlY3Rvci5xbWwK
aW5kZXggNzhlYTZmOS4uZDRlYjk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9pdGVtU2VsZWN0b3IucW1sCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmll
dy90c3RfaXRlbVNlbGVjdG9yLnFtbApAQCAtMjEsNyArMjEsNyBAQCBUZXN0V2ViVmlldyB7CiAg
ICAgICAgICAgICAgICAgbW9kZWwuaXRlbXMuc2VsZWN0KFdlYlZpZXcudmlldy5pbml0aWFsU2Vs
ZWN0aW9uKQogCiAgICAgICAgICAgICBpZiAoV2ViVmlldy52aWV3LmZpbmFsU2VsZWN0aW9uID09
IC0xKQotICAgICAgICAgICAgICAgIG1vZGVsLnJlamVjdCgpCisgICAgICAgICAgICAgICAgbW9k
ZWwuY2xvc2UoKQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKHVzZUFj
Y2VwdERpcmVjdGx5KSB7CiAgICAgICAgICAgICAgICAgICAgIG1vZGVsLmFjY2VwdChXZWJWaWV3
LnZpZXcuZmluYWxTZWxlY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
bXVsdGlTZWxlY3QucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMjhi
Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbApAQCAtMCwwICsxLDY3IEBA
CitpbXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQg
My4wCitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDEuMAoraW1wb3J0IFRlc3QgMS4wCitp
bXBvcnQgIi4uL2NvbW1vbiIKKworVGVzdFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisKKyAg
ICB3aWR0aDogNDAwCisgICAgaGVpZ2h0OiA0MDAKKworICAgIHByb3BlcnR5IGJvb2wgc2VsZWN0
SXRlbXMKKworICAgIGV4cGVyaW1lbnRhbC5pdGVtU2VsZWN0b3I6IEl0ZW0geworICAgICAgICBU
aW1lciB7CisgICAgICAgICAgICBydW5uaW5nOiB0cnVlCisgICAgICAgICAgICBpbnRlcnZhbDog
MQorICAgICAgICAgICAgb25UcmlnZ2VyZWQ6IHsKKyAgICAgICAgICAgICAgICB2YXIgc2VsZWN0
ZWRJbmRpY2VzID0gWzAsMV0KKyAgICAgICAgICAgICAgICBpZiAobW9kZWwuYWxsb3dNdWx0aVNl
bGVjdCAmJiBzZWxlY3RJdGVtcyl7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgIHNlbGVjdGVkSW5kaWNlcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIG1vZGVsLmFjY2VwdChzZWxlY3RlZEluZGljZXNbaV0pCisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIG1vZGVsLmNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogdGl0bGVTcHkKKyAgICAgICAg
dGFyZ2V0OiB3ZWJWaWV3CisgICAgICAgIHNpZ25hbE5hbWU6ICJ0aXRsZUNoYW5nZWQiCisgICAg
fQorCisgICAgVGVzdENhc2UgeworICAgICAgICBpZDogdGVzdENhc2UKKyAgICAgICAgbmFtZTog
IldlYlZpZXdNdWx0aUl0ZW1TZWxlY3RvciIKKyAgICAgICAgd2hlbjogd2luZG93U2hvd24KKwor
ICAgICAgICBmdW5jdGlvbiBpbml0KCkgeworICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5y
ZXNvbHZlZFVybCgiLi4vY29tbW9uL211bHRpc2VsZWN0Lmh0bWwiKQorICAgICAgICAgICAgdmVy
aWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHRpdGxlU3B5
LmNsZWFyKCkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9wZW5JdGVtU2VsZWN0b3Io
KSB7CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC50ZXN0LnRvdWNoVGFwKHdlYlZp
ZXcsIDE1LCAxNSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfcmVqZWN0KCkg
eworICAgICAgICAgICAgdmFyIG9sZFRpdGxlID0gd2ViVmlldy50aXRsZQorICAgICAgICAgICAg
d2ViVmlldy5zZWxlY3RJdGVtcyA9IGZhbHNlOworICAgICAgICAgICAgb3Blbkl0ZW1TZWxlY3Rv
cigpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsIG9sZFRpdGxlKQorICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9hY2NlcHQoKSB7CisgICAgICAgICAgICB3ZWJW
aWV3LnNlbGVjdEl0ZW1zID0gdHJ1ZTsKKyAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQor
ICAgICAgICAgICAgdGl0bGVTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRpdGxlU3B5
LmNvdW50LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19vcGVuX18s
X19jbG9zZWRfXyIpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vbXVsdGlzZWxlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
ODk3MmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vbXVsdGlzZWxlY3QuaHRtbApAQCAtMCwwICsxLDM0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Tm8gbmV3IHNlbGVjdGlv
biB3YXMgbWFkZTwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gdXBkYXRlKCkgeworICAgIHZh
ciBzZWxvcHRpb25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbCcpLm9wdGlvbnM7Cisg
ICAgdmFyIG9wdDsKKyAgICB2YXIgc3RyID0gbmV3IFN0cmluZygiIik7CisgICAgdmFyIHZhbHVl
ID0gbmV3IFN0cmluZygiIik7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlbG9wdGlvbnMu
bGVuZ3RoOyBpIDwgbGVuOyBpKyspCisgICAgeworICAgICAgICBvcHQgPSBzZWxvcHRpb25zW2ld
OworICAgICAgICBpZiAob3B0LnNlbGVjdGVkKSB7CisgICAgICAgICAgICBuYW1lID0gb3B0LnZh
bHVlOworICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgICAgICBz
dHIgPSBuYW1lOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0ciA9IHN0ciAr
ICIsIiArIG5hbWU7CisgICAgICAgIH0KKyAgICB9CisgICAgZG9jdW1lbnQudGl0bGUgPSBzdHI7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgICAgPHNlbGVjdCBpZD0ic2VsIiAg
bXVsdGlwbGU9Im11bHRpcGxlIiAgb25jaGFuZ2U9InVwZGF0ZSgpOyI+CisgICAgICA8b3B0aW9u
IHZhbHVlPSJfX29wZW5fXyIgPk9wZW48L29wdGlvbj4KKyAgICAgIDxvcHRpb24gdmFsdWU9Il9f
Y2xvc2VkX18iID5DbG9zZWQ8L29wdGlvbj4KKyAgICAgIDxvcHRpb24gdmFsdWU9Il9fYWxsX18i
ID5BbGw8L29wdGlvbj4KKyAgICAgIDwvc2VsZWN0PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDJiNTM4ZTUuLjEzZWFh
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNzU2
LDYgKzI3NTYsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgp
CiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5n
ZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0ZWRJbmRleChzZWxlY3RlZEluZGV4KSwgbV9w
YWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQb3B1cE1lbnUoaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQoreworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGlkZVBvcHVwTWVudShzZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworfQorI2VuZGlmCisKIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIHVpbnQ2
NF90IHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7
CiAgICAgaWYgKG1fYWN0aXZlUG9wdXBNZW51KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggOTVlNmMxMy4uM2E4ZjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjcxLDcgKzY3MSwxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW1Gb3JQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHkq
LCBpbnQzMl90IGluZGV4KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIGZh
aWxlZFRvU2hvd1BvcHVwTWVudSgpOwotI2VuZGlmICAgIAorI2VuZGlmCisjaWYgUExBVEZPUk0o
UVQpCisgICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBuZXdTZWxl
Y3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQb3B1cE1lbnUoaW50MzJfdCBpbmRl
eCA9IC0xKTsKKyNlbmRpZgogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBh
Z2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlUHJv
eHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBvcHVwTWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9w
dXBNZW51UHJveHkuaAppbmRleCAzY2VmYzBkLi4wNmJlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaApAQCAtNTUsNyArNTUsMTEgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3Nl
ZE1vdXNlRG93bkV2ZW50KCkgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgdmlydHVh
bCB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpID0gMDsKLSNlbmRpZiAgICAgICAgCisjZW5k
aWYKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbGVjdGVk
SW5kZXgoaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVBvcHVwTWVudShpbnQzMl90IGluZGV4ID0gLTEpID0gMDsKKyNlbmRpZgogICAgIH07
CiAKICAgICB2aXJ0dWFsIH5XZWJQb3B1cE1lbnVQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMmY5MjA5OC4u
MTU3NTA0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1
cE1lbnVQcm94eVF0LmNwcApAQCAtNTIsMjMgKzUyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgSXNT
ZXBhcmF0b3JSb2xlID0gUXQ6OlVzZXJSb2xlICsgMwogICAgIH07CiAKLSAgICBQb3B1cE1lbnVJ
dGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQgc2VsZWN0ZWRPcmlnaW5h
bEluZGV4KTsKKyAgICBQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mLCBib29sIG11bHRpcGxlKTsKICAgICB2aXJ0dWFsIGludCByb3dDb3VudChjb25zdCBRTW9k
ZWxJbmRleCYgcGFyZW50ID0gUU1vZGVsSW5kZXgoKSkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5z
aXplKCk7IH0KICAgICB2aXJ0dWFsIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXgmLCBp
bnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Q7CiAKICAgICBRX0lOVk9LQUJMRSB2b2lk
IHNlbGVjdChpbnQpOwogCisgICAgaW50IG9yaWdpbmFsSW5kZXgoaW50IGluZGV4ID0gLTEpIGNv
bnN0OwogICAgIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgoKSBjb25zdDsKKyAgICBib29sIG11
bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd011bHRpcGxlczsgfQogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBJdGVtIHsKLSAgICAgICAgSXRlbShjb25zdCBXZWJQb3B1cEl0ZW0mIHdlYlBv
cHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGludCBvcmlnaW5hbEluZGV4LCBib29sIHNl
bGVjdGVkKQorICAgICAgICBJdGVtKGNvbnN0IFdlYlBvcHVwSXRlbSYgd2ViUG9wdXBJdGVtLCBj
b25zdCBRU3RyaW5nJiBncm91cCwgaW50IG9yaWdpbmFsSW5kZXgpCiAgICAgICAgICAgICA6IHRl
eHQod2ViUG9wdXBJdGVtLm1fdGV4dCkKICAgICAgICAgICAgICwgdG9vbFRpcCh3ZWJQb3B1cEl0
ZW0ubV90b29sVGlwKQogICAgICAgICAgICAgLCBncm91cChncm91cCkKICAgICAgICAgICAgICwg
b3JpZ2luYWxJbmRleChvcmlnaW5hbEluZGV4KQogICAgICAgICAgICAgLCBlbmFibGVkKHdlYlBv
cHVwSXRlbS5tX2lzRW5hYmxlZCkKLSAgICAgICAgICAgICwgc2VsZWN0ZWQoc2VsZWN0ZWQpCisg
ICAgICAgICAgICAsIHNlbGVjdGVkKHdlYlBvcHVwSXRlbS5tX2lzU2VsZWN0ZWQpCiAgICAgICAg
ICAgICAsIGlzU2VwYXJhdG9yKHdlYlBvcHVwSXRlbS5tX3R5cGUgPT0gV2ViUG9wdXBJdGVtOjpT
ZXBhcmF0b3IpCiAgICAgICAgIHsgfQogCkBAIC04MiwzOCArODQsNDEgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBpc1NlcGFyYXRvcjsKICAgICB9OwogCi0gICAgdm9pZCBidWlsZEl0ZW1zKGNv
bnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRPcmln
aW5hbEluZGV4KTsKKyAgICB2b2lkIGJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIHdlYlBvcHVwSXRlbXMpOwogCiAgICAgVmVjdG9yPEl0ZW0+IG1faXRlbXM7Ci0gICAgaW50
IG1fc2VsZWN0ZWRNb2RlbEluZGV4OworICAgIFFMaXN0PGludD4gbV9zZWxlY3RlZEluZGljZXM7
CisgICAgYm9vbCBtX2FsbG93TXVsdGlwbGVzOwogfTsKIAogY2xhc3MgSXRlbVNlbGVjdG9yQ29u
dGV4dE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVS
VFkoUVJlY3QgZWxlbWVudFJlY3QgUkVBRCBlbGVtZW50UmVjdCBDT05TVEFOVCBGSU5BTCkKICAg
ICBRX1BST1BFUlRZKFFPYmplY3QqIGl0ZW1zIFJFQUQgaXRlbXMgQ09OU1RBTlQgRklOQUwpCisg
ICAgUV9QUk9QRVJUWShib29sIGFsbG93TXVsdGlTZWxlY3QgUkVBRCBhbGxvd011bHRpU2VsZWN0
IENPTlNUQU5UIEZJTkFMKQogCiBwdWJsaWM6Ci0gICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVj
dChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
LCBpbnQgc2VsZWN0ZWRJbmRleCk7CisgICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25z
dCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBib29s
IG11bHRpcGxlKTsKIAogICAgIFFSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9l
bGVtZW50UmVjdDsgfQogICAgIFBvcHVwTWVudUl0ZW1Nb2RlbCogaXRlbXMoKSB7IHJldHVybiAm
bV9pdGVtczsgfQorICAgIGJvb2wgYWxsb3dNdWx0aVNlbGVjdCgpIHsgcmV0dXJuIG1faXRlbXMu
bXVsdGlwbGUoKTsgfQogCiAgICAgUV9JTlZPS0FCTEUgdm9pZCBhY2NlcHQoaW50IGluZGV4ID0g
LTEpOwotICAgIFFfSU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IHJlamVjdGVkKCk7IH0K
KyAgICBRX0lOVk9LQUJMRSB2b2lkIGNsb3NlKCkgeyBlbWl0IGRvbmUoKTsgfQogCiBRX1NJR05B
TFM6CiAgICAgdm9pZCBhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCk7Ci0gICAgdm9pZCBy
ZWplY3RlZCgpOworICAgIHZvaWQgZG9uZSgpOwogCiBwcml2YXRlOgogICAgIFFSZWN0IG1fZWxl
bWVudFJlY3Q7CiAgICAgUG9wdXBNZW51SXRlbU1vZGVsIG1faXRlbXM7CiB9OwogCi1JdGVtU2Vs
ZWN0b3JDb250ZXh0T2JqZWN0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0IEludFJl
Y3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVt
cywgaW50IHNlbGVjdGVkSW5kZXgpCitJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjpJdGVtU2Vs
ZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0
b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgYm9vbCBtdWx0aXBsZSkKICAgICA6IG1f
ZWxlbWVudFJlY3QoZWxlbWVudFJlY3QpCi0gICAgLCBtX2l0ZW1zKHdlYlBvcHVwSXRlbXMsIHNl
bGVjdGVkSW5kZXgpCisgICAgLCBtX2l0ZW1zKHdlYlBvcHVwSXRlbXMsIG11bHRpcGxlKQogewog
fQogCkBAIC0xMjEsNyArMTI2LDEwIEBAIHZvaWQgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6
YWNjZXB0KGludCBpbmRleCkKIHsKICAgICBpZiAoaW5kZXggIT0gLTEpCiAgICAgICAgIG1faXRl
bXMuc2VsZWN0KGluZGV4KTsKLSAgICBpbnQgb3JpZ2luYWxJbmRleCA9IG1faXRlbXMuc2VsZWN0
ZWRPcmlnaW5hbEluZGV4KCk7CisgICAgZWxzZSBpZiAobV9pdGVtcy5tdWx0aXBsZSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpbnQgb3JpZ2luYWxJbmRleCA9IG1faXRlbXMub3JpZ2luYWxJ
bmRleChpbmRleCk7CiAgICAgZW1pdCBhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KG9yaWdpbmFs
SW5kZXgpOwogfQogCkBAIC0xMzcsMTIgKzE0NSwxMiBAQCBzdGF0aWMgUUhhc2g8aW50LCBRQnl0
ZUFycmF5PiBjcmVhdGVSb2xlTmFtZXNIYXNoKCkKICAgICByZXR1cm4gcm9sZXM7CiB9CiAKLVBv
cHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51SXRlbU1vZGVsKGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KQotICAgIDog
bV9zZWxlY3RlZE1vZGVsSW5kZXgoLTEpCitQb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0
ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgYm9vbCBt
dWx0aXBsZSkKKyAgICA6IG1fYWxsb3dNdWx0aXBsZXMobXVsdGlwbGUpCiB7CiAgICAgc3RhdGlj
IFFIYXNoPGludCwgUUJ5dGVBcnJheT4gcm9sZXMgPSBjcmVhdGVSb2xlTmFtZXNIYXNoKCk7CiAg
ICAgc2V0Um9sZU5hbWVzKHJvbGVzKTsKLSAgICBidWlsZEl0ZW1zKHdlYlBvcHVwSXRlbXMsIHNl
bGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgYnVpbGRJdGVtcyh3ZWJQb3B1cEl0ZW1zKTsKIH0K
IAogUVZhcmlhbnQgUG9wdXBNZW51SXRlbU1vZGVsOjpkYXRhKGNvbnN0IFFNb2RlbEluZGV4JiBp
bmRleCwgaW50IHJvbGUpIGNvbnN0CkBAIC0xNzcsMzUgKzE4NSw2OSBAQCBRVmFyaWFudCBQb3B1
cE1lbnVJdGVtTW9kZWw6OmRhdGEoY29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBpbnQgcm9sZSkg
Y29uc3QKIAogdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OnNlbGVjdChpbnQgaW5kZXgpCiB7Ci0g
ICAgaW50IG9sZEluZGV4ID0gbV9zZWxlY3RlZE1vZGVsSW5kZXg7Ci0gICAgaWYgKGluZGV4ID09
IG9sZEluZGV4KQotICAgICAgICByZXR1cm47CiAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+
PSBtX2l0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgSXRlbSYgaXRlbSA9IG1f
aXRlbXNbaW5kZXhdOwogICAgIGlmICghaXRlbS5lbmFibGVkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICBtX3NlbGVjdGVkTW9kZWxJbmRleCA9IGlu
ZGV4OworICAgIGlmIChtX2FsbG93TXVsdGlwbGVzKSB7CisgICAgICAgIGl0ZW0uc2VsZWN0ZWQg
PSAhaXRlbS5zZWxlY3RlZDsKIAotICAgIGlmIChvbGRJbmRleCAhPSAtMSkgewotICAgICAgICBJ
dGVtJiBvbGRJdGVtID0gbV9pdGVtc1tvbGRJbmRleF07Ci0gICAgICAgIG9sZEl0ZW0uc2VsZWN0
ZWQgPSBmYWxzZTsKLSAgICAgICAgZW1pdCBkYXRhQ2hhbmdlZCh0aGlzLT5pbmRleChvbGRJbmRl
eCksIHRoaXMtPmluZGV4KG9sZEluZGV4KSk7CisgICAgICAgIC8vIFVwZGF0ZSB0aGUgc2VsZWN0
ZWQgaW5kaWNlcyBsaXN0LgorICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkKKyAgICAgICAgICAg
IG1fc2VsZWN0ZWRJbmRpY2VzLmFwcGVuZChpbmRleCk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgaW50IGxpc3RJbmRleCA9IG1fc2VsZWN0ZWRJbmRpY2VzLmluZGV4T2YoaW5kZXgpOwor
ICAgICAgICAgICAgaWYgKGxpc3RJbmRleCAhPSAtMSkKKyAgICAgICAgICAgICAgICBtX3NlbGVj
dGVkSW5kaWNlcy5yZW1vdmVBdChsaXN0SW5kZXgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsK
KyAgICAgICAgaW50IG9sZEluZGV4ID0gLTE7CisgICAgICAgIGlmICghbV9zZWxlY3RlZEluZGlj
ZXMuaXNFbXB0eSgpKQorICAgICAgICAgICAgb2xkSW5kZXggPSBtX3NlbGVjdGVkSW5kaWNlc1sw
XTsKKworICAgICAgICBpZiAoaW5kZXggPT0gb2xkSW5kZXgpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7CisKKyAgICAgICAgaWYgKG9sZEluZGV4
ID09IC0xKQorICAgICAgICAgICAgbV9zZWxlY3RlZEluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICBJdGVtJiBvbGRJdGVtID0gbV9pdGVtc1tvbGRJbmRl
eF07CisgICAgICAgICAgICBvbGRJdGVtLnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICBt
X3NlbGVjdGVkSW5kaWNlcy5yZXBsYWNlKDAsIGluZGV4KTsKKyAgICAgICAgICAgIGVtaXQgZGF0
YUNoYW5nZWQodGhpcy0+aW5kZXgob2xkSW5kZXgpLCB0aGlzLT5pbmRleChvbGRJbmRleCkpOwor
ICAgICAgICB9CiAgICAgfQotCiAgICAgZW1pdCBkYXRhQ2hhbmdlZCh0aGlzLT5pbmRleChpbmRl
eCksIHRoaXMtPmluZGV4KGluZGV4KSk7CiB9CiAKK2ludCBQb3B1cE1lbnVJdGVtTW9kZWw6Om9y
aWdpbmFsSW5kZXgoaW50IGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA9PSAtMSAmJiAh
bV9hbGxvd011bHRpcGxlcykKKyAgICAgICAgaW5kZXggPSBtX3NlbGVjdGVkSW5kaWNlcy5hdCgw
KTsKKworICAgIGlmIChpbmRleCA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0
dXJuIG1faXRlbXNbaW5kZXhdLm9yaWdpbmFsSW5kZXg7Cit9CisKIGludCBQb3B1cE1lbnVJdGVt
TW9kZWw6OnNlbGVjdGVkT3JpZ2luYWxJbmRleCgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fc2VsZWN0
ZWRNb2RlbEluZGV4ID09IC0xKQorICAgIGlmIChtX3NlbGVjdGVkSW5kaWNlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiAtMTsKLSAgICByZXR1cm4gbV9pdGVtc1ttX3NlbGVjdGVkTW9kZWxJ
bmRleF0ub3JpZ2luYWxJbmRleDsKKworICAgIFFMaXN0PGludD4gbGlzdCA9IG1fc2VsZWN0ZWRJ
bmRpY2VzOworICAgIHFTb3J0KGxpc3QpOworCisgICAgcmV0dXJuIG9yaWdpbmFsSW5kZXgobGlz
dC5hdCgwKSk7CiB9CiAKLXZvaWQgUG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKGNvbnN0
IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRPcmlnaW5h
bEluZGV4KQordm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3QgVmVjdG9y
PFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMpCiB7CiAgICAgUVN0cmluZyBjdXJyZW50R3Jv
dXA7CiAgICAgbV9pdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYlBvcHVwSXRlbXMuc2l6
ZSgpKTsKQEAgLTIxNSwxMCArMjU3LDkgQEAgdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxk
SXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGkKICAgICAg
ICAgICAgIGN1cnJlbnRHcm91cCA9IHdlYlBvcHVwSXRlbS5tX3RleHQ7CiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjb25zdCBib29sIHNlbGVjdGVkID0gaSA9PSBz
ZWxlY3RlZE9yaWdpbmFsSW5kZXg7Ci0gICAgICAgIGlmIChzZWxlY3RlZCkKLSAgICAgICAgICAg
IG1fc2VsZWN0ZWRNb2RlbEluZGV4ID0gbV9pdGVtcy5zaXplKCk7Ci0gICAgICAgIG1faXRlbXMu
YXBwZW5kKEl0ZW0od2ViUG9wdXBJdGVtLCBjdXJyZW50R3JvdXAsIGksIHNlbGVjdGVkKSk7Cisg
ICAgICAgIGlmICh3ZWJQb3B1cEl0ZW0ubV9pc1NlbGVjdGVkKQorICAgICAgICAgICAgbV9zZWxl
Y3RlZEluZGljZXMuYXBwZW5kKG1faXRlbXMuc2l6ZSgpKTsKKyAgICAgICAgbV9pdGVtcy5hcHBl
bmQoSXRlbSh3ZWJQb3B1cEl0ZW0sIGN1cnJlbnRHcm91cCwgaSkpOwogICAgIH0KIH0KIApAQCAt
MjMyLDE0ICsyNzMsMTcgQEAgV2ViUG9wdXBNZW51UHJveHlRdDo6fldlYlBvcHVwTWVudVByb3h5
UXQoKQogewogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUoY29u
c3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlLCBjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYs
IGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1Bv
cHVwTWVudShjb25zdCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3Vi
bGUsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhJiBkYXRhLCBpbnQzMl90KQogewotICAgIG1fc2VsZWN0ZWRJbmRleCA9IHNlbGVj
dGVkSW5kZXg7CisgICAgbV9zZWxlY3Rpb25UeXBlID0gKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25z
KSA/IFdlYlBvcHVwTWVudVByb3h5UXQ6Ok11bHRpcGxlU2VsZWN0aW9uIDogV2ViUG9wdXBNZW51
UHJveHlRdDo6U2luZ2xlU2VsZWN0aW9uOworCisgICAgbV9jb250ZXh0T2JqZWN0ID0gYWRvcHRQ
dHIobmV3IEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QocmVjdCwgaXRlbXMsIChtX3NlbGVjdGlv
blR5cGUgPT0gV2ViUG9wdXBNZW51UHJveHlRdDo6TXVsdGlwbGVTZWxlY3Rpb24pKSk7CisgICAg
aWYgKCFtX2NvbnRleHRPYmplY3QpCisgICAgICAgIHJldHVybjsKIAotICAgIEl0ZW1TZWxlY3Rv
ckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgSXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdChyZWN0LCBpdGVtcywgbV9zZWxlY3RlZEluZGV4KTsKLSAgICBjcmVhdGVJdGVtKGNvbnRl
eHRPYmplY3QpOworICAgIGNyZWF0ZUl0ZW0obV9jb250ZXh0T2JqZWN0LmdldCgpKTsKICAgICBp
ZiAoIW1faXRlbVNlbGVjdG9yKSB7Ci0gICAgICAgIG5vdGlmeVZhbHVlQ2hhbmdlZCgpOworICAg
ICAgICBoaWRlUG9wdXBNZW51KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5zZXREaWFsb2dBY3RpdmUodHJ1ZSk7CkBA
IC0yNDcsNDQgKzI5MSw1MSBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1l
bnUoY29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdAogCiB2b2lkIFdlYlBv
cHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUoKQogeworICAgIGludCBzZWxlY3RlZEluZGV4
ID0gLTE7CisgICAgaWYgKG1fY29udGV4dE9iamVjdCkgeworICAgICAgICBJdGVtU2VsZWN0b3JD
b250ZXh0T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8SXRlbVNlbGVjdG9yQ29u
dGV4dE9iamVjdCo+KG1fY29udGV4dE9iamVjdC5nZXQoKSk7CisgICAgICAgIGlmIChjb250ZXh0
T2JqZWN0KQorICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCA9IGNvbnRleHRPYmplY3QtPml0ZW1z
KCktPnNlbGVjdGVkT3JpZ2luYWxJbmRleCgpOworICAgIH0KKwogICAgIG1faXRlbVNlbGVjdG9y
LmNsZWFyKCk7CiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5zZXRE
aWFsb2dBY3RpdmUoZmFsc2UpOwogICAgIG1fY29udGV4dC5jbGVhcigpOwotICAgIG5vdGlmeVZh
bHVlQ2hhbmdlZCgpOworICAgIG1fY29udGV4dE9iamVjdC5jbGVhcigpOworCisgICAgaWYgKG1f
Y2xpZW50KSB7CisgICAgICAgIG1fY2xpZW50LT5jbG9zZVBvcHVwTWVudShzZWxlY3RlZEluZGV4
KTsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgIH0KKwogfQogCiB2b2lkIFdlYlBvcHVwTWVu
dVByb3h5UXQ6OnNlbGVjdEluZGV4KGludCBpbmRleCkKIHsKLSAgICBtX3NlbGVjdGVkSW5kZXgg
PSBpbmRleDsKKyAgICBtX2NsaWVudC0+Y2hhbmdlU2VsZWN0ZWRJbmRleChpbmRleCk7CiB9CiAK
IHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlSXRlbShRT2JqZWN0KiBjb250ZXh0T2Jq
ZWN0KQogewogICAgIFFRbWxDb21wb25lbnQqIGNvbXBvbmVudCA9IG1fd2ViVmlldy0+ZXhwZXJp
bWVudGFsKCktPml0ZW1TZWxlY3RvcigpOwotICAgIGlmICghY29tcG9uZW50KSB7Ci0gICAgICAg
IGRlbGV0ZSBjb250ZXh0T2JqZWN0OworICAgIGlmICghY29tcG9uZW50KQogICAgICAgICByZXR1
cm47Ci0gICAgfQogCiAgICAgY3JlYXRlQ29udGV4dChjb21wb25lbnQsIGNvbnRleHRPYmplY3Qp
OwogICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+YmVnaW5DcmVhdGUobV9jb250ZXh0
LmdldCgpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBtX2NvbnRleHQuY2xlYXIoKTsK
KyAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIG1faXRlbVNl
bGVjdG9yID0gYWRvcHRQdHIocW9iamVjdF9jYXN0PFFRdWlja0l0ZW0qPihvYmplY3QpKTsKLSAg
ICBpZiAoIW1faXRlbVNlbGVjdG9yKSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVhcigpOwotICAg
ICAgICBtX2l0ZW1TZWxlY3Rvci5jbGVhcigpOworICAgIGlmICghbV9pdGVtU2VsZWN0b3IpCiAg
ICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05B
TChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBTTE9UKHNlbGVjdEluZGV4KGludCkp
KTsKIAogICAgIC8vIFdlIGVucXVldWUgdGhlc2UgYmVjYXVzZSB0aGV5IGFyZSB0cmlnZ2VyZWQg
YnkgbV9pdGVtU2VsZWN0b3IgYW5kIHdpbGwgbGVhZCB0byBpdHMgZGVzdHJ1Y3Rpb24uCi0gICAg
Y29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChp
bnQpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7Ci0gICAg
Y29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwocmVqZWN0ZWQoKSksIFNMT1QoaGlkZVBvcHVw
TWVudSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIGNvbm5lY3QoY29udGV4dE9iamVj
dCwgU0lHTkFMKGRvbmUoKSksIFNMT1QoaGlkZVBvcHVwTWVudSgpKSwgUXQ6OlF1ZXVlZENvbm5l
Y3Rpb24pOworICAgIGlmIChtX3NlbGVjdGlvblR5cGUgPT0gV2ViUG9wdXBNZW51UHJveHlRdDo6
U2luZ2xlU2VsZWN0aW9uKQorICAgICAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChh
Y2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBTTE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0
OjpRdWV1ZWRDb25uZWN0aW9uKTsKIAogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93
ZWJWaWV3KS0+YWRkQXR0YWNoZWRQcm9wZXJ0eVRvKG1faXRlbVNlbGVjdG9yLmdldCgpKTsKICAg
ICBtX2l0ZW1TZWxlY3Rvci0+c2V0UGFyZW50SXRlbShtX3dlYlZpZXcpOwpAQCAtMzAyLDE5ICsz
NTMsMTAgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVDb250ZXh0KFFRbWxDb21w
b25lbnQqIGNvbXBvbmVudCwgUU9iamVjdCogY29udGUKICAgICAgICAgYmFzZUNvbnRleHQgPSBR
UW1sRW5naW5lOjpjb250ZXh0Rm9yT2JqZWN0KG1fd2ViVmlldyk7CiAgICAgbV9jb250ZXh0ID0g
YWRvcHRQdHIobmV3IFFRbWxDb250ZXh0KGJhc2VDb250ZXh0KSk7CiAKLSAgICBjb250ZXh0T2Jq
ZWN0LT5zZXRQYXJlbnQobV9jb250ZXh0LmdldCgpKTsKICAgICBtX2NvbnRleHQtPnNldENvbnRl
eHRQcm9wZXJ0eShRTGF0aW4xU3RyaW5nKCJtb2RlbCIpLCBjb250ZXh0T2JqZWN0KTsKICAgICBt
X2NvbnRleHQtPnNldENvbnRleHRPYmplY3QoY29udGV4dE9iamVjdCk7CiB9CiAKLXZvaWQgV2Vi
UG9wdXBNZW51UHJveHlRdDo6bm90aWZ5VmFsdWVDaGFuZ2VkKCkKLXsKLSAgICBpZiAobV9jbGll
bnQpIHsKLSAgICAgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBt
X3NlbGVjdGVkSW5kZXgpOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKIAogLy8gU2luY2Ugd2UgZGVmaW5lIFFPYmplY3RzIGluIFdlYlBv
cHVwTWVudVByb3h5UXQuY3BwLCB0aGlzIHdpbGwgdHJpZ2dlciBtb2MgdG8gcnVuIG9uIC5jcHAu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJv
eHlRdC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQu
aAppbmRleCAyMWVlYzVkLi5hZjA2YWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKQEAgLTQyLDYgKzQyLDExIEBAIGNsYXNzIFdl
YlBvcHVwTWVudVByb3h5UXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdlYlBvcHVwTWVudVBy
b3h5IHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6CisgICAgZW51bSBTZWxlY3Rpb25UeXBlIHsK
KyAgICAgICAgU2luZ2xlU2VsZWN0aW9uLAorICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbgorICAg
IH07CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUo
V2ViUG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50LCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eVF0
KGNsaWVudCwgd2ViVmlldykpOwpAQCAtNjEsMTMgKzY2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjcmVhdGVJdGVtKFFPYmplY3QqKTsKICAgICB2b2lkIGNyZWF0ZUNvbnRleHQoUVFtbENvbXBv
bmVudCosIFFPYmplY3QqKTsKIAotICAgIHZvaWQgbm90aWZ5VmFsdWVDaGFuZ2VkKCk7CisgICAg
dm9pZCBjbG9zZVBvcHVwTWVudSgpOwogCiAgICAgT3duUHRyPFFRbWxDb250ZXh0PiBtX2NvbnRl
eHQ7CiAgICAgT3duUHRyPFFRdWlja0l0ZW0+IG1faXRlbVNlbGVjdG9yOworICAgIE93blB0cjxR
T2JqZWN0PiBtX2NvbnRleHRPYmplY3Q7CiAKICAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7
Ci0gICAgaW50MzJfdCBtX3NlbGVjdGVkSW5kZXg7CisgICAgU2VsZWN0aW9uVHlwZSBtX3NlbGVj
dGlvblR5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcApp
bmRleCA5NDBjYjk1Li40YzMwOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBAIC01OSw5ICs1OSwx
NCBAQCB2b2lkIFdlYlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3SW5k
ZXgpCiAgICAgaWYgKCFtX3BvcHVwQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFU
Rk9STShRVCkKKyAgICBpZiAobmV3SW5kZXggPj0gMCkKKyAgICAgICAgbV9wb3B1cENsaWVudC0+
bGlzdEJveFNlbGVjdEl0ZW0obmV3SW5kZXgsIG1fcG9wdXBDbGllbnQtPm11bHRpcGxlKCksIGZh
bHNlKTsKKyNlbHNlCiAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7CiAgICAgaWYg
KG5ld0luZGV4ID49IDApCiAgICAgICAgIG1fcG9wdXBDbGllbnQtPnZhbHVlQ2hhbmdlZChuZXdJ
bmRleCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnU6OnNldFRleHRGb3JJbmRleChp
bnQgaW5kZXgpCkBAIC04Nyw3ICs5Miw3IEBAIFZlY3RvcjxXZWJQb3B1cEl0ZW0+IFdlYlBvcHVw
TWVudTo6cG9wdWxhdGVJdGVtcygpCiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQg
Zm9yIHN0eWxpbmcgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzLgogICAgICAg
ICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY3VzdG9taXplIHRleHQgY29sb3Igd2hlbiBh
biBpdGVtIGlzIGhpZ2hsaWdodGVkLgogICAgICAgICAgICAgUG9wdXBNZW51U3R5bGUgaXRlbVN0
eWxlID0gbV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGkpOwotICAgICAgICAgICAgaXRlbXMuYXBw
ZW5kKFdlYlBvcHVwSXRlbShXZWJQb3B1cEl0ZW06Okl0ZW0sIG1fcG9wdXBDbGllbnQtPml0ZW1U
ZXh0KGkpLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVj
dGlvbk92ZXJyaWRlKCksIG1fcG9wdXBDbGllbnQtPml0ZW1Ub29sVGlwKGkpLCBtX3BvcHVwQ2xp
ZW50LT5pdGVtQWNjZXNzaWJpbGl0eVRleHQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJs
ZWQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkpKSk7CisgICAgICAgICAgICBpdGVt
cy5hcHBlbmQoV2ViUG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6SXRlbSwgbV9wb3B1cENsaWVudC0+
aXRlbVRleHQoaSksIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHlsZS5oYXNUZXh0
RGlyZWN0aW9uT3ZlcnJpZGUoKSwgbV9wb3B1cENsaWVudC0+aXRlbVRvb2xUaXAoaSksIG1fcG9w
dXBDbGllbnQtPml0ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlz
RW5hYmxlZChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaSksIG1fcG9wdXBDbGllbnQt
Pml0ZW1Jc1NlbGVjdGVkKGkpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCmlu
ZGV4IDhlNjYyNTAuLjYzMTliOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaApAQCAtNDgsNyArNDgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KICAg
ICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW50IG5ld0luZGV4KTsKICAgICB2b2lkIHNl
dFRleHRGb3JJbmRleChpbnQgbmV3SW5kZXgpOwotI2lmIFBMQVRGT1JNKEdUSykgICAgCisjaWYg
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGll
bnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7IH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dl
YlBvcHVwTWVudVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCmluZGV4IGIyMWYwNmMuLmYwYThmNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBN
ZW51UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
cXQvV2ViUG9wdXBNZW51UXQuY3BwCkBAIC0yNywxMyArMjcsMTUgQEAKICNpbmNsdWRlICJXZWJQ
b3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZv
cm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQordm9pZCBXZWJQ
b3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVw
TWVudURhdGEmIGRhdGEpCiB7CisgICAgZGF0YS5tdWx0aXBsZVNlbGVjdGlvbnMgPSBtX3BvcHVw
Q2xpZW50LT5tdWx0aXBsZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2ZjE4MjdjLi5m
MGEwNzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0yMzM3LDEyICsyMzM3LDM0IEBAIHZvaWQgV2ViUGFnZTo6Y291bnRTdHJpbmdNYXRj
aGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfCiAKIHZv
aWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQz
Ml90IG5ld0luZGV4KQogeworICAgIGNoYW5nZVNlbGVjdGVkSW5kZXgobmV3SW5kZXgpOworICAg
IG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKK30KKworI2lmIFBMQVRGT1JNKFFUKQordm9pZCBXZWJQ
YWdlOjpzZWxlY3RlZEluZGV4KGludDMyX3QgbmV3SW5kZXgpCit7CisgICAgY2hhbmdlU2VsZWN0
ZWRJbmRleChuZXdJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6aGlkZVBvcHVwTWVudShpbnQz
Ml90IG5ld0luZGV4KQorewogICAgIGlmICghbV9hY3RpdmVQb3B1cE1lbnUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fYWN0aXZlUG9wdXBNZW51LT5kaWRDaGFuZ2VTZWxlY3RlZEluZGV4KG5l
d0luZGV4KTsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+Y2xpZW50KCktPnBvcHVwRGlkSGlkZSgp
OworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5zZXRUZXh0Rm9ySW5kZXgobmV3SW5kZXgpOwogICAg
IG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKIH0KKyNlbmRpZgorCit2b2lkIFdlYlBhZ2U6OmNoYW5n
ZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBpbmRleCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlUG9wdXBN
ZW51KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+ZGlkQ2hhbmdl
U2VsZWN0ZWRJbmRleChpbmRleCk7Cit9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2I3ZTZlNi4uN2JkODIyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02Njks
NiArNjY5LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZmFpbGVk
VG9TaG93UG9wdXBNZW51KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIGhp
ZGVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCA9IC0xKTsKKyAgICB2b2lkIHNlbGVjdGVkSW5k
ZXgoaW50MzJfdCBuZXdJbmRleCk7CisjZW5kaWYKIAogICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNG
b3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2b2lkIGRpZENhbmNlbEZv
ck9wZW5QYW5lbCgpOwpAQCAtNjk0LDYgKzY5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRT
ZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURh
dGEmKTsKICNlbmRpZgogCisgICAgdm9pZCBjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3QgaW5k
ZXgpOwogICAgIHZvaWQgc2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQoKTsKIAogICAgIHN0YXRp
YyBib29sIHBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggODk5YTJhOS4uNzQ1ZDViNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAg
LTE2MCw3ICsxNjAsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgU2V0VGV4dEZvckFj
dGl2ZVBvcHVwTWVudShpbnQzMl90IGluZGV4KTsKICNpZiBQTEFURk9STShHVEspICAgIAogICAg
IEZhaWxlZFRvU2hvd1BvcHVwTWVudSgpOwotI2VuZGlmICAgIAorI2VuZGlmCisjaWYgUExBVEZP
Uk0oUVQpCisgICAgSGlkZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KTsKKyAgICBTZWxlY3Rl
ZEluZGV4KGludDMyX3QgbmV3SW5kZXgpOworI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAgICAgIyBDb250ZXh0IG1lbnUuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODk1NjI5Yy4uZmY5YzgzZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTA1LTI5ICBEaW51IEphY29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAgICAgICAg
W1F0XVtXSzJdIEFkZCBzdXBwb3J0IGZvciBtdWx0aS1zZWxlY3QgbGlzdAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MjcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1pbmlCcm93c2VyL3F0L3FtbC9J
dGVtU2VsZWN0b3IucW1sOgorCisgICAgICAgVXBkYXRlIHRvIG1hdGNoIHRoZSBjaGFuZ2UgaW4g
dGhlIG5hbWUgb2YgdGhlIHNsb3QgdG8KKyAgICAgICBoaWRlIHRoZSBwb3B1cCBtZW51LgorCiAy
MDEyLTA1LTI5ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KIAogICAgICAgICAy
MDEyLTA1LTI5ICBBcnZpZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KZGlmZiAtLWdpdCBh
L1Rvb2xzL01pbmlCcm93c2VyL3F0L3FtbC9JdGVtU2VsZWN0b3IucW1sIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKaW5kZXggNDMwMjJiNi4uNDVkZjFhNCAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKKysrIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvcW1sL0l0ZW1TZWxlY3Rvci5xbWwKQEAgLTMxLDcgKzMxLDcg
QEAgTW91c2VBcmVhIHsKICAgICAvLyBUbyBhdm9pZCBjb25mbGljdGluZyB3aXRoIExpc3RWaWV3
Lm1vZGVsIHdoZW4gaW5zaWRlIExpc3RWaWV3IGNvbnRleHQuCiAgICAgcHJvcGVydHkgUXRPYmpl
Y3Qgc2VsZWN0b3JNb2RlbDogbW9kZWwKICAgICBhbmNob3JzLmZpbGw6IHBhcmVudAotICAgIG9u
Q2xpY2tlZDogc2VsZWN0b3JNb2RlbC5yZWplY3QoKQorICAgIG9uQ2xpY2tlZDogc2VsZWN0b3JN
b2RlbC5jbG9zZSgpCiAKICAgICBSZWN0YW5nbGUgewogICAgICAgICBjbGlwOiB0cnVlCg==
</data>
<flag name="review"
          id="151499"
          type_id="1"
          status="-"
          setter="vestbo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145120</attachid>
            <date>2012-05-31 11:23:46 -0700</date>
            <delta_ts>2012-05-31 19:08:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527_0531.patch</filename>
            <type>text/plain</type>
            <size>32115</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA4MjI5Mjc3Li40ZmVkOTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkg
QEAKKzIwMTItMDUtMzEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9y
IG11bHRpLXNlbGVjdCBsaXN0LiBGb3IgbXVsdGktc2VsZWN0IGxpc3QsIHRoZSBwb3B1cCBtZW51
IGlzIG5vdCBjbG9zZWQgb24gc2VsZWN0aW5nCisgICAgICAgIGFuIGl0ZW0gYW5kIHJlcXVpcmVz
IGV4cGxpY2l0IGNhbGwgdG8gaGlkZSB0aGUgbWVudS4gVGhlIGluZGV4IG9mIHRoZSBpdGVtIHRv
IGJlIGRpc3BsYXllZCB3aGVuIHRoZSBtZW51CisgICAgICAgIGlzIGhpZGRlbiBpcyBwcm92aWRl
ZCB3aXRoIHJlcXVlc3QgdG8gaGlkZSB0aGUgcG9wdXAuCisKKyAgICAgICAgLSBBZGRlZCBtdWx0
aS1zZWxlY3Rpb24gZmxhZyB0byBQbGF0Zm9ybVBvcHVwTWVudURhdGEgdG8gaW5kaWNhdGUgd2hl
dGhlciB0byBhY2NlcHQgbXVsdGlwbGUgc2VsZWN0aW9ucyBvciBub3QuCisgICAgICAgIC0gQWRk
ZWQgc2VsZWN0ZWQgc3RhdGUgdG8gV2ViUG9wdXBJdGVtLgorICAgICAgICAtIE1vZGlmaWVkIFdl
YlBvcHVwTWVudVF0IHRvIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy4KKworICAgICAgICAq
IFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbGF0
Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBv
cHVwTWVudURhdGEuaDoKKyAgICAgICAgKFBsYXRmb3JtUG9wdXBNZW51RGF0YSk6CisgICAgICAg
ICogU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRl
bTo6V2ViUG9wdXBJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjplbmNvZGUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6CisgICAgICAgICogU2hh
cmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1s
dGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlU2VsZWN0ZWRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2VQb3B1cE1lbnUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5Lmg6CisgICAgICAgIChDbGllbnQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcDoKKyAgICAg
ICAgKFBvcHVwTWVudUl0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1N
b2RlbDo6bXVsdGlwbGUpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6Okl0
ZW06Okl0ZW0pOgorICAgICAgICAoSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdCk6CisgICAgICAg
IChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6OmFsbG93TXVsdGlTZWxlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjpyZWplY3QpOgorICAg
ICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjpkaXNtaXNzKToKKyAgICAg
ICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4
dE9iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6OmFj
Y2VwdCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51SXRl
bU1vZGVsKToKKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpzZWxlY3QpOgor
ICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6Om9yaWdpbmFsSW5kZXgpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpzZWxl
Y3RlZE9yaWdpbmFsSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6
OmJ1aWxkSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93
UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBv
cHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OnNlbGVjdElu
ZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlSXRlbSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUNvbnRleHQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6CisgICAgICAgIChX
ZWJQb3B1cE1lbnVQcm94eVF0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYlBvcHVwTWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6ZGlkQ2hh
bmdlU2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6cG9wdWxh
dGVJdGVtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1l
bnUuaDoKKyAgICAgICAgKFdlYlBvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0
ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlOjpzZWxlY3RlZEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYW5nZVNlbGVj
dGVkSW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKwogMjAxMi0wNS0zMSAgWmFsYW4gQnVqdGFzICA8emJ1anRhc0BnbWFpbC5jb20+
CiAKICAgICAgICAgW1F0XVtXSzJdIEFkZCBtaXNzaW5nIFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIg
Z3VhcmRpbmcgdG8gc2V0UGFnZUl0ZW1SZWN0VmlzaWJsZSgpIGNhbGxzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAppbmRleCA2YzRkMjBlLi5i
NjI3YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhLmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3Jt
UG9wdXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQoMCkKICAgICAsIG1fcG9w
dXBXaWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQTEFURk9STShRVCkKKyAg
ICA6IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewogfQpAQCAtNjIsNiArNjQs
OCBAQCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50
RW5jb2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVy
LT5lbmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShzaG91bGRQb3BPdmVyKTsK
KyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShtdWx0aXBsZVNlbGVjdGlv
bnMpOwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsYXRmb3Jt
UG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEu
c2hvdWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlmIFBMQVRGT1JNKFFU
KQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25zKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKaW5kZXggZjg1MDA4
YS4uMjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9w
dXBNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhIHsK
ICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5mbzsKICAgICBib29sIHNo
b3VsZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29sIG11bHRpcGxlU2VsZWN0
aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YlBvcHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcApp
bmRleCBhOWFjMDMyLi5jMjE1ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUG9wdXBJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVt
LmNwcApAQCAtMzksNiArMzksNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbSgpCiAgICAg
LCBtX3RleHREaXJlY3Rpb24oTFRSKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUo
ZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1NlbGVjdGVkKGZhbHNl
KQogewogfQogCkBAIC00OCwxMCArNDksMTEgQEAgV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0o
VHlwZSB0eXBlKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAg
LCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc0xhYmVsKGZhbHNlKQorICAgICwgbV9pc1Nl
bGVjdGVkKGZhbHNlKQogewogfQogCi1XZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5
cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29s
IGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBT
dHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsKQor
V2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQs
IFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBhY2Nlc3NpYmlsaXR5VGV4
dCwgYm9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCwgYm9vbCBpc1NlbGVjdGVkKQogICAgIDog
bV90eXBlKHR5cGUpCiAgICAgLCBtX3RleHQodGV4dCkKICAgICAsIG1fdGV4dERpcmVjdGlvbih0
ZXh0RGlyZWN0aW9uKQpAQCAtNjAsMTIgKzYyLDE0IEBAIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJl
CiAgICAgLCBtX2FjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2liaWxpdHlUZXh0KQogICAgICwgbV9p
c0VuYWJsZWQoaXNFbmFibGVkKQogICAgICwgbV9pc0xhYmVsKGlzTGFiZWwpCisgICAgLCBtX2lz
U2VsZWN0ZWQoaXNTZWxlY3RlZCkKIHsKIH0KIAogdm9pZCBXZWJQb3B1cEl0ZW06OmVuY29kZShD
b3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci0+
ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5cGUpLCBtX3RleHQs
IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3RleHREaXJlY3Rpb24pLCBtX2hhc1RleHREaXJlY3Rp
b25PdmVycmlkZSwgbV90b29sVGlwLCBtX2FjY2Vzc2liaWxpdHlUZXh0LCBtX2lzRW5hYmxlZCwg
bV9pc0xhYmVsKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKG1faXNTZWxlY3Rl
ZCkpOwogfQogCiBib29sIFdlYlBvcHVwSXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwgV2ViUG9wdXBJdGVtJiBpdGVtKQpAQCAtNzgsMTAgKzgyLDE1IEBAIGJv
b2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlUZXh0OwogICAg
IGJvb2wgaXNFbmFibGVkOwogICAgIGJvb2wgaXNMYWJlbDsKKyAgICBib29sIGlzU2VsZWN0ZWQ7
CisKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlwZSwgdGV4dCwgdGV4
dERpcmVjdGlvbiwgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCB0b29sVGlwLCBhY2Nlc3NpYmls
aXR5VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSksIHRleHQsIHN0
YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBoYXNUZXh0RGlyZWN0aW9u
T3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwp
OworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpc1NlbGVjdGVkKSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nh
c3Q8VHlwZT4odHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJl
Y3Rpb24pLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlU
ZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgKaW5kZXggM2RjNjFkNy4uZDg1ODRi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaApAQCAtNDQsNyArNDQsNyBAQCBz
dHJ1Y3QgV2ViUG9wdXBJdGVtIHsKIAogICAgIFdlYlBvcHVwSXRlbSgpOwogICAgIFdlYlBvcHVw
SXRlbShUeXBlKTsKLSAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBX
ZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29u
c3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29s
IGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsKTsKKyAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3Qg
U3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rp
b25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2li
aWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29sIGlzU2VsZWN0ZWQp
OwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFdlYlBvcHVw
SXRlbSYpOwpAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKICAgICBTdHJp
bmcgbV9hY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBib29sIG1faXNFbmFibGVkOwogICAgIGJvb2wg
bV9pc0xhYmVsOworICAgIGJvb2wgbV9pc1NlbGVjdGVkOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL1dlYlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhY2M1NjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dl
YlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbApAQCAtMCwwICsxLDYzIEBACitpbXBvcnQgUXRRdWlj
ayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4wCitpbXBvcnQgUXRX
ZWJLaXQuZXhwZXJpbWVudGFsIDEuMAoraW1wb3J0IFRlc3QgMS4wCitpbXBvcnQgIi4uL2NvbW1v
biIKKworVGVzdFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisKKyAgICB3aWR0aDogNDAwCisg
ICAgaGVpZ2h0OiA0MDAKKworICAgIHByb3BlcnR5IGJvb2wgc2VsZWN0SXRlbXMKKworICAgIGV4
cGVyaW1lbnRhbC5pdGVtU2VsZWN0b3I6IEl0ZW0geworICAgICAgICAgQ29tcG9uZW50Lm9uQ29t
cGxldGVkOiB7CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRJbmRpY2VzID0gWzAsMV0KKyAgICAg
ICAgICAgIGlmIChtb2RlbC5hbGxvd011bHRpU2VsZWN0ICYmIHNlbGVjdEl0ZW1zKXsKKyAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICBzZWxlY3RlZEluZGljZXMubGVuZ3RoOyBp
KyspCisgICAgICAgICAgICAgICAgICAgIG1vZGVsLmFjY2VwdChzZWxlY3RlZEluZGljZXNbaV0p
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtb2RlbC5kaXNtaXNzKCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBTaWduYWxTcHkgeworICAgICAgICBpZDogdGl0bGVTcHkKKyAgICAgICAg
dGFyZ2V0OiB3ZWJWaWV3CisgICAgICAgIHNpZ25hbE5hbWU6ICJ0aXRsZUNoYW5nZWQiCisgICAg
fQorCisgICAgVGVzdENhc2UgeworICAgICAgICBpZDogdGVzdENhc2UKKyAgICAgICAgbmFtZTog
IldlYlZpZXdNdWx0aUl0ZW1TZWxlY3RvciIKKyAgICAgICAgd2hlbjogd2luZG93U2hvd24KKwor
ICAgICAgICBmdW5jdGlvbiBpbml0KCkgeworICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5y
ZXNvbHZlZFVybCgiLi4vY29tbW9uL211bHRpc2VsZWN0Lmh0bWwiKQorICAgICAgICAgICAgdmVy
aWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHRpdGxlU3B5
LmNsZWFyKCkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9wZW5JdGVtU2VsZWN0b3Io
KSB7CisgICAgICAgICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC50ZXN0LnRvdWNoVGFwKHdlYlZp
ZXcsIDE1LCAxNSkKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfcmVqZWN0KCkg
eworICAgICAgICAgICAgdmFyIG9sZFRpdGxlID0gd2ViVmlldy50aXRsZQorICAgICAgICAgICAg
d2ViVmlldy5zZWxlY3RJdGVtcyA9IGZhbHNlOworICAgICAgICAgICAgb3Blbkl0ZW1TZWxlY3Rv
cigpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUsIG9sZFRpdGxlKQorICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9hY2NlcHQoKSB7CisgICAgICAgICAgICB3ZWJW
aWV3LnNlbGVjdEl0ZW1zID0gdHJ1ZTsKKyAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3IoKQor
ICAgICAgICAgICAgdGl0bGVTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRpdGxlU3B5
LmNvdW50LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19vcGVuX18s
X19jbG9zZWRfXyIpCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5o
dG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21t
b24vbXVsdGlzZWxlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43
ODk3MmU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vbXVsdGlzZWxlY3QuaHRtbApAQCAtMCwwICsxLDM0IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Tm8gbmV3IHNlbGVjdGlv
biB3YXMgbWFkZTwvdGl0bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gdXBkYXRlKCkgeworICAgIHZh
ciBzZWxvcHRpb25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlbCcpLm9wdGlvbnM7Cisg
ICAgdmFyIG9wdDsKKyAgICB2YXIgc3RyID0gbmV3IFN0cmluZygiIik7CisgICAgdmFyIHZhbHVl
ID0gbmV3IFN0cmluZygiIik7CisgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlbG9wdGlvbnMu
bGVuZ3RoOyBpIDwgbGVuOyBpKyspCisgICAgeworICAgICAgICBvcHQgPSBzZWxvcHRpb25zW2ld
OworICAgICAgICBpZiAob3B0LnNlbGVjdGVkKSB7CisgICAgICAgICAgICBuYW1lID0gb3B0LnZh
bHVlOworICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGggPT0gMCkKKyAgICAgICAgICAgICAgICBz
dHIgPSBuYW1lOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0ciA9IHN0ciAr
ICIsIiArIG5hbWU7CisgICAgICAgIH0KKyAgICB9CisgICAgZG9jdW1lbnQudGl0bGUgPSBzdHI7
Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorICAgICAgPHNlbGVjdCBpZD0ic2VsIiAg
bXVsdGlwbGU9Im11bHRpcGxlIiAgb25jaGFuZ2U9InVwZGF0ZSgpOyI+CisgICAgICA8b3B0aW9u
IHZhbHVlPSJfX29wZW5fXyIgPk9wZW48L29wdGlvbj4KKyAgICAgIDxvcHRpb24gdmFsdWU9Il9f
Y2xvc2VkX18iID5DbG9zZWQ8L29wdGlvbj4KKyAgICAgIDxvcHRpb24gdmFsdWU9Il9fYWxsX18i
ID5BbGw8L29wdGlvbj4KKyAgICAgIDwvc2VsZWN0PgorPC9ib2R5PgorCis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDJiNTM4ZTUuLjEzZWFh
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yNzU2
LDYgKzI3NTYsMTggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZhaWxlZFRvU2hvd1BvcHVwTWVudSgp
CiB9CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFFUKQordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5n
ZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIHByb2Nlc3MoKS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2VsZWN0ZWRJbmRleChzZWxlY3RlZEluZGV4KSwgbV9w
YWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQb3B1cE1lbnUoaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQoreworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
SGlkZVBvcHVwTWVudShzZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOworfQorI2VuZGlmCisKIHZv
aWQgV2ViUGFnZVByb3h5OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3QmIHJlY3QsIHVpbnQ2
NF90IHRleHREaXJlY3Rpb24sIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgaW50
MzJfdCBzZWxlY3RlZEluZGV4LCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7
CiAgICAgaWYgKG1fYWN0aXZlUG9wdXBNZW51KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggOTVlNmMxMy4uM2E4ZjgzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjcxLDcgKzY3MSwxMSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW1Gb3JQb3B1cE1lbnUoV2ViUG9wdXBNZW51UHJveHkq
LCBpbnQzMl90IGluZGV4KTsKICNpZiBQTEFURk9STShHVEspCiAgICAgdmlydHVhbCB2b2lkIGZh
aWxlZFRvU2hvd1BvcHVwTWVudSgpOwotI2VuZGlmICAgIAorI2VuZGlmCisjaWYgUExBVEZPUk0o
UVQpCisgICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBuZXdTZWxl
Y3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQb3B1cE1lbnUoaW50MzJfdCBpbmRl
eCA9IC0xKTsKKyNlbmRpZgogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBh
Z2VQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlUHJv
eHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBvcHVwTWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9w
dXBNZW51UHJveHkuaAppbmRleCAzY2VmYzBkLi4wNmJlMzQxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaApAQCAtNTUsNyArNTUsMTEgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3Nl
ZE1vdXNlRG93bkV2ZW50KCkgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgdmlydHVh
bCB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpID0gMDsKLSNlbmRpZiAgICAgICAgCisjZW5k
aWYKKyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbGVjdGVk
SW5kZXgoaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBjbG9zZVBvcHVwTWVudShpbnQzMl90IGluZGV4ID0gLTEpID0gMDsKKyNlbmRpZgogICAgIH07
CiAKICAgICB2aXJ0dWFsIH5XZWJQb3B1cE1lbnVQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMmY5MjA5OC4u
MWZhOWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1
cE1lbnVQcm94eVF0LmNwcApAQCAtNTIsMjMgKzUyLDI1IEBAIHB1YmxpYzoKICAgICAgICAgSXNT
ZXBhcmF0b3JSb2xlID0gUXQ6OlVzZXJSb2xlICsgMwogICAgIH07CiAKLSAgICBQb3B1cE1lbnVJ
dGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQgc2VsZWN0ZWRPcmlnaW5h
bEluZGV4KTsKKyAgICBQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mLCBib29sIG11bHRpcGxlKTsKICAgICB2aXJ0dWFsIGludCByb3dDb3VudChjb25zdCBRTW9k
ZWxJbmRleCYgcGFyZW50ID0gUU1vZGVsSW5kZXgoKSkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5z
aXplKCk7IH0KICAgICB2aXJ0dWFsIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXgmLCBp
bnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Q7CiAKICAgICBRX0lOVk9LQUJMRSB2b2lk
IHNlbGVjdChpbnQpOwogCisgICAgaW50IG9yaWdpbmFsSW5kZXgoaW50IGluZGV4ID0gLTEpIGNv
bnN0OwogICAgIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgoKSBjb25zdDsKKyAgICBib29sIG11
bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd011bHRpcGxlczsgfQogCiBwcml2YXRlOgog
ICAgIHN0cnVjdCBJdGVtIHsKLSAgICAgICAgSXRlbShjb25zdCBXZWJQb3B1cEl0ZW0mIHdlYlBv
cHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGludCBvcmlnaW5hbEluZGV4LCBib29sIHNl
bGVjdGVkKQorICAgICAgICBJdGVtKGNvbnN0IFdlYlBvcHVwSXRlbSYgd2ViUG9wdXBJdGVtLCBj
b25zdCBRU3RyaW5nJiBncm91cCwgaW50IG9yaWdpbmFsSW5kZXgpCiAgICAgICAgICAgICA6IHRl
eHQod2ViUG9wdXBJdGVtLm1fdGV4dCkKICAgICAgICAgICAgICwgdG9vbFRpcCh3ZWJQb3B1cEl0
ZW0ubV90b29sVGlwKQogICAgICAgICAgICAgLCBncm91cChncm91cCkKICAgICAgICAgICAgICwg
b3JpZ2luYWxJbmRleChvcmlnaW5hbEluZGV4KQogICAgICAgICAgICAgLCBlbmFibGVkKHdlYlBv
cHVwSXRlbS5tX2lzRW5hYmxlZCkKLSAgICAgICAgICAgICwgc2VsZWN0ZWQoc2VsZWN0ZWQpCisg
ICAgICAgICAgICAsIHNlbGVjdGVkKHdlYlBvcHVwSXRlbS5tX2lzU2VsZWN0ZWQpCiAgICAgICAg
ICAgICAsIGlzU2VwYXJhdG9yKHdlYlBvcHVwSXRlbS5tX3R5cGUgPT0gV2ViUG9wdXBJdGVtOjpT
ZXBhcmF0b3IpCiAgICAgICAgIHsgfQogCkBAIC04MiwzOCArODQsNDIgQEAgcHJpdmF0ZToKICAg
ICAgICAgYm9vbCBpc1NlcGFyYXRvcjsKICAgICB9OwogCi0gICAgdm9pZCBidWlsZEl0ZW1zKGNv
bnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRPcmln
aW5hbEluZGV4KTsKKyAgICB2b2lkIGJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIHdlYlBvcHVwSXRlbXMpOwogCiAgICAgVmVjdG9yPEl0ZW0+IG1faXRlbXM7Ci0gICAgaW50
IG1fc2VsZWN0ZWRNb2RlbEluZGV4OworICAgIFFMaXN0PGludD4gbV9zZWxlY3RlZEluZGljZXM7
CisgICAgYm9vbCBtX2FsbG93TXVsdGlwbGVzOwogfTsKIAogY2xhc3MgSXRlbVNlbGVjdG9yQ29u
dGV4dE9iamVjdCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVS
VFkoUVJlY3QgZWxlbWVudFJlY3QgUkVBRCBlbGVtZW50UmVjdCBDT05TVEFOVCBGSU5BTCkKICAg
ICBRX1BST1BFUlRZKFFPYmplY3QqIGl0ZW1zIFJFQUQgaXRlbXMgQ09OU1RBTlQgRklOQUwpCisg
ICAgUV9QUk9QRVJUWShib29sIGFsbG93TXVsdGlTZWxlY3QgUkVBRCBhbGxvd011bHRpU2VsZWN0
IENPTlNUQU5UIEZJTkFMKQogCiBwdWJsaWM6Ci0gICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVj
dChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
LCBpbnQgc2VsZWN0ZWRJbmRleCk7CisgICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25z
dCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBib29s
IG11bHRpcGxlKTsKIAogICAgIFFSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9l
bGVtZW50UmVjdDsgfQogICAgIFBvcHVwTWVudUl0ZW1Nb2RlbCogaXRlbXMoKSB7IHJldHVybiAm
bV9pdGVtczsgfQorICAgIGJvb2wgYWxsb3dNdWx0aVNlbGVjdCgpIHsgcmV0dXJuIG1faXRlbXMu
bXVsdGlwbGUoKTsgfQogCiAgICAgUV9JTlZPS0FCTEUgdm9pZCBhY2NlcHQoaW50IGluZGV4ID0g
LTEpOwotICAgIFFfSU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IHJlamVjdGVkKCk7IH0K
KyAgICBRX0lOVk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCBkb25lKCk7IH0KKyAgICBRX0lO
Vk9LQUJMRSB2b2lkIGRpc21pc3MoKSB7IGVtaXQgZG9uZSgpOyB9CiAKIFFfU0lHTkFMUzoKICAg
ICB2b2lkIGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KTsKLSAgICB2b2lkIHJlamVjdGVk
KCk7CisgICAgdm9pZCBkb25lKCk7CiAKIHByaXZhdGU6CiAgICAgUVJlY3QgbV9lbGVtZW50UmVj
dDsKICAgICBQb3B1cE1lbnVJdGVtTW9kZWwgbV9pdGVtczsKIH07CiAKLUl0ZW1TZWxlY3RvckNv
bnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QoY29uc3QgSW50UmVjdCYgZWxl
bWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQg
c2VsZWN0ZWRJbmRleCkKK0l0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNv
bnRleHRPYmplY3QoY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBib29sIG11bHRpcGxlKQogICAgIDogbV9lbGVtZW50
UmVjdChlbGVtZW50UmVjdCkKLSAgICAsIG1faXRlbXMod2ViUG9wdXBJdGVtcywgc2VsZWN0ZWRJ
bmRleCkKKyAgICAsIG1faXRlbXMod2ViUG9wdXBJdGVtcywgbXVsdGlwbGUpCiB7CiB9CiAKQEAg
LTEyMSw3ICsxMjcsMTAgQEAgdm9pZCBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjphY2NlcHQo
aW50IGluZGV4KQogewogICAgIGlmIChpbmRleCAhPSAtMSkKICAgICAgICAgbV9pdGVtcy5zZWxl
Y3QoaW5kZXgpOwotICAgIGludCBvcmlnaW5hbEluZGV4ID0gbV9pdGVtcy5zZWxlY3RlZE9yaWdp
bmFsSW5kZXgoKTsKKyAgICBlbHNlIGlmIChtX2l0ZW1zLm11bHRpcGxlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGludCBvcmlnaW5hbEluZGV4ID0gbV9pdGVtcy5vcmlnaW5hbEluZGV4KGlu
ZGV4KTsKICAgICBlbWl0IGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgob3JpZ2luYWxJbmRleCk7
CiB9CiAKQEAgLTEzNywxMiArMTQ2LDEyIEBAIHN0YXRpYyBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+
IGNyZWF0ZVJvbGVOYW1lc0hhc2goKQogICAgIHJldHVybiByb2xlczsKIH0KIAotUG9wdXBNZW51
SXRlbU1vZGVsOjpQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4m
IHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpCi0gICAgOiBtX3NlbGVj
dGVkTW9kZWxJbmRleCgtMSkKK1BvcHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51SXRlbU1vZGVs
KGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBib29sIG11bHRpcGxl
KQorICAgIDogbV9hbGxvd011bHRpcGxlcyhtdWx0aXBsZSkKIHsKICAgICBzdGF0aWMgUUhhc2g8
aW50LCBRQnl0ZUFycmF5PiByb2xlcyA9IGNyZWF0ZVJvbGVOYW1lc0hhc2goKTsKICAgICBzZXRS
b2xlTmFtZXMocm9sZXMpOwotICAgIGJ1aWxkSXRlbXMod2ViUG9wdXBJdGVtcywgc2VsZWN0ZWRP
cmlnaW5hbEluZGV4KTsKKyAgICBidWlsZEl0ZW1zKHdlYlBvcHVwSXRlbXMpOwogfQogCiBRVmFy
aWFudCBQb3B1cE1lbnVJdGVtTW9kZWw6OmRhdGEoY29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBp
bnQgcm9sZSkgY29uc3QKQEAgLTE3NywzNSArMTg2LDY5IEBAIFFWYXJpYW50IFBvcHVwTWVudUl0
ZW1Nb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdAog
CiB2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0KGludCBpbmRleCkKIHsKLSAgICBpbnQg
b2xkSW5kZXggPSBtX3NlbGVjdGVkTW9kZWxJbmRleDsKLSAgICBpZiAoaW5kZXggPT0gb2xkSW5k
ZXgpCi0gICAgICAgIHJldHVybjsKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1faXRl
bXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CisKICAgICBJdGVtJiBpdGVtID0gbV9pdGVtc1tp
bmRleF07CiAgICAgaWYgKCFpdGVtLmVuYWJsZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGl0
ZW0uc2VsZWN0ZWQgPSB0cnVlOwotICAgIG1fc2VsZWN0ZWRNb2RlbEluZGV4ID0gaW5kZXg7Cisg
ICAgaWYgKG1fYWxsb3dNdWx0aXBsZXMpIHsKKyAgICAgICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVt
LnNlbGVjdGVkOwogCi0gICAgaWYgKG9sZEluZGV4ICE9IC0xKSB7Ci0gICAgICAgIEl0ZW0mIG9s
ZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKLSAgICAgICAgb2xkSXRlbS5zZWxlY3RlZCA9IGZh
bHNlOwotICAgICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KG9sZEluZGV4KSwgdGhp
cy0+aW5kZXgob2xkSW5kZXgpKTsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBzZWxlY3RlZCBpbmRp
Y2VzIGxpc3QuCisgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKQorICAgICAgICAgICAgbV9zZWxl
Y3RlZEluZGljZXMuYXBwZW5kKGluZGV4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBp
bnQgbGlzdEluZGV4ID0gbV9zZWxlY3RlZEluZGljZXMuaW5kZXhPZihpbmRleCk7CisgICAgICAg
ICAgICBpZiAobGlzdEluZGV4ICE9IC0xKQorICAgICAgICAgICAgICAgIG1fc2VsZWN0ZWRJbmRp
Y2VzLnJlbW92ZUF0KGxpc3RJbmRleCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICBpbnQgb2xkSW5kZXggPSAtMTsKKyAgICAgICAgaWYgKCFtX3NlbGVjdGVkSW5kaWNlcy5pc0Vt
cHR5KCkpCisgICAgICAgICAgICBvbGRJbmRleCA9IG1fc2VsZWN0ZWRJbmRpY2VzWzBdOworCisg
ICAgICAgIGlmIChpbmRleCA9PSBvbGRJbmRleCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsKKworICAgICAgICBpZiAob2xkSW5kZXggPT0gLTEp
CisgICAgICAgICAgICBtX3NlbGVjdGVkSW5kaWNlcy5hcHBlbmQoaW5kZXgpOworICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgIEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKKyAg
ICAgICAgICAgIG9sZEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIG1fc2VsZWN0
ZWRJbmRpY2VzLnJlcGxhY2UoMCwgaW5kZXgpOworICAgICAgICAgICAgZW1pdCBkYXRhQ2hhbmdl
ZCh0aGlzLT5pbmRleChvbGRJbmRleCksIHRoaXMtPmluZGV4KG9sZEluZGV4KSk7CisgICAgICAg
IH0KICAgICB9Ci0KICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KGluZGV4KSwgdGhp
cy0+aW5kZXgoaW5kZXgpKTsKIH0KIAoraW50IFBvcHVwTWVudUl0ZW1Nb2RlbDo6b3JpZ2luYWxJ
bmRleChpbnQgaW5kZXgpIGNvbnN0Cit7CisgICAgaWYgKGluZGV4ID09IC0xICYmICFtX2FsbG93
TXVsdGlwbGVzKQorICAgICAgICBpbmRleCA9IG1fc2VsZWN0ZWRJbmRpY2VzLmF0KDApOworCisg
ICAgaWYgKGluZGV4ID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gbV9p
dGVtc1tpbmRleF0ub3JpZ2luYWxJbmRleDsKK30KKwogaW50IFBvcHVwTWVudUl0ZW1Nb2RlbDo6
c2VsZWN0ZWRPcmlnaW5hbEluZGV4KCkgY29uc3QKIHsKLSAgICBpZiAobV9zZWxlY3RlZE1vZGVs
SW5kZXggPT0gLTEpCisgICAgaWYgKG1fc2VsZWN0ZWRJbmRpY2VzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIC0xOwotICAgIHJldHVybiBtX2l0ZW1zW21fc2VsZWN0ZWRNb2RlbEluZGV4XS5v
cmlnaW5hbEluZGV4OworCisgICAgUUxpc3Q8aW50PiBsaXN0ID0gbV9zZWxlY3RlZEluZGljZXM7
CisgICAgcVNvcnQobGlzdCk7CisKKyAgICByZXR1cm4gb3JpZ2luYWxJbmRleChsaXN0LmF0KDAp
KTsKIH0KIAotdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3QgVmVjdG9y
PFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgp
Cit2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYgd2ViUG9wdXBJdGVtcykKIHsKICAgICBRU3RyaW5nIGN1cnJlbnRHcm91cDsKICAg
ICBtX2l0ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2ViUG9wdXBJdGVtcy5zaXplKCkpOwpA
QCAtMjE1LDEwICsyNTgsOSBAQCB2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJdGVtcyhj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgaQogICAgICAgICAgICAg
Y3VycmVudEdyb3VwID0gd2ViUG9wdXBJdGVtLm1fdGV4dDsKICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGJvb2wgc2VsZWN0ZWQgPSBpID09IHNlbGVjdGVk
T3JpZ2luYWxJbmRleDsKLSAgICAgICAgaWYgKHNlbGVjdGVkKQotICAgICAgICAgICAgbV9zZWxl
Y3RlZE1vZGVsSW5kZXggPSBtX2l0ZW1zLnNpemUoKTsKLSAgICAgICAgbV9pdGVtcy5hcHBlbmQo
SXRlbSh3ZWJQb3B1cEl0ZW0sIGN1cnJlbnRHcm91cCwgaSwgc2VsZWN0ZWQpKTsKKyAgICAgICAg
aWYgKHdlYlBvcHVwSXRlbS5tX2lzU2VsZWN0ZWQpCisgICAgICAgICAgICBtX3NlbGVjdGVkSW5k
aWNlcy5hcHBlbmQobV9pdGVtcy5zaXplKCkpOworICAgICAgICBtX2l0ZW1zLmFwcGVuZChJdGVt
KHdlYlBvcHVwSXRlbSwgY3VycmVudEdyb3VwLCBpKSk7CiAgICAgfQogfQogCkBAIC0yMzIsMTQg
KzI3NCwxNyBAQCBXZWJQb3B1cE1lbnVQcm94eVF0Ojp+V2ViUG9wdXBNZW51UHJveHlRdCgpCiB7
CiB9CiAKLXZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRS
ZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJf
dCBzZWxlY3RlZEluZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51
KGNvbnN0IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURh
dGEmIGRhdGEsIGludDMyX3QpCiB7Ci0gICAgbV9zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRl
eDsKKyAgICBtX3NlbGVjdGlvblR5cGUgPSAoZGF0YS5tdWx0aXBsZVNlbGVjdGlvbnMpID8gV2Vi
UG9wdXBNZW51UHJveHlRdDo6TXVsdGlwbGVTZWxlY3Rpb24gOiBXZWJQb3B1cE1lbnVQcm94eVF0
OjpTaW5nbGVTZWxlY3Rpb247CisKKyAgICBtX2NvbnRleHRPYmplY3QgPSBhZG9wdFB0cihuZXcg
SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChyZWN0LCBpdGVtcywgKG1fc2VsZWN0aW9uVHlwZSA9
PSBXZWJQb3B1cE1lbnVQcm94eVF0OjpNdWx0aXBsZVNlbGVjdGlvbikpKTsKKyAgICBpZiAoIW1f
Y29udGV4dE9iamVjdCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgSXRlbVNlbGVjdG9yQ29udGV4
dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KHJl
Y3QsIGl0ZW1zLCBtX3NlbGVjdGVkSW5kZXgpOwotICAgIGNyZWF0ZUl0ZW0oY29udGV4dE9iamVj
dCk7CisgICAgY3JlYXRlSXRlbShtX2NvbnRleHRPYmplY3QuZ2V0KCkpOwogICAgIGlmICghbV9p
dGVtU2VsZWN0b3IpIHsKLSAgICAgICAgbm90aWZ5VmFsdWVDaGFuZ2VkKCk7CisgICAgICAgIGhp
ZGVQb3B1cE1lbnUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnNldERpYWxvZ0FjdGl2ZSh0cnVlKTsKQEAgLTI0Nyw0
NCArMjkyLDUxIEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShjb25z
dCBJbnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0CiAKIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlRdDo6aGlkZVBvcHVwTWVudSgpCiB7CisgICAgaW50IHNlbGVjdGVkSW5kZXggPSAtMTsK
KyAgICBpZiAobV9jb250ZXh0T2JqZWN0KSB7CisgICAgICAgIEl0ZW1TZWxlY3RvckNvbnRleHRP
YmplY3QqIGNvbnRleHRPYmplY3QgPSBzdGF0aWNfY2FzdDxJdGVtU2VsZWN0b3JDb250ZXh0T2Jq
ZWN0Kj4obV9jb250ZXh0T2JqZWN0LmdldCgpKTsKKyAgICAgICAgaWYgKGNvbnRleHRPYmplY3Qp
CisgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gY29udGV4dE9iamVjdC0+aXRlbXMoKS0+c2Vs
ZWN0ZWRPcmlnaW5hbEluZGV4KCk7CisgICAgfQorCiAgICAgbV9pdGVtU2VsZWN0b3IuY2xlYXIo
KTsKICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnNldERpYWxvZ0Fj
dGl2ZShmYWxzZSk7CiAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgbm90aWZ5VmFsdWVDaGFu
Z2VkKCk7CisgICAgbV9jb250ZXh0T2JqZWN0LmNsZWFyKCk7CisKKyAgICBpZiAobV9jbGllbnQp
IHsKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlUG9wdXBNZW51KHNlbGVjdGVkSW5kZXgpOworICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgfQorCiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJveHlR
dDo6c2VsZWN0SW5kZXgoaW50IGluZGV4KQogewotICAgIG1fc2VsZWN0ZWRJbmRleCA9IGluZGV4
OworICAgIG1fY2xpZW50LT5jaGFuZ2VTZWxlY3RlZEluZGV4KGluZGV4KTsKIH0KIAogdm9pZCBX
ZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVJdGVtKFFPYmplY3QqIGNvbnRleHRPYmplY3QpCiB7
CiAgICAgUVFtbENvbXBvbmVudCogY29tcG9uZW50ID0gbV93ZWJWaWV3LT5leHBlcmltZW50YWwo
KS0+aXRlbVNlbGVjdG9yKCk7Ci0gICAgaWYgKCFjb21wb25lbnQpIHsKLSAgICAgICAgZGVsZXRl
IGNvbnRleHRPYmplY3Q7CisgICAgaWYgKCFjb21wb25lbnQpCiAgICAgICAgIHJldHVybjsKLSAg
ICB9CiAKICAgICBjcmVhdGVDb250ZXh0KGNvbXBvbmVudCwgY29udGV4dE9iamVjdCk7CiAgICAg
UU9iamVjdCogb2JqZWN0ID0gY29tcG9uZW50LT5iZWdpbkNyZWF0ZShtX2NvbnRleHQuZ2V0KCkp
OwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVhcigpOworICAgIGlm
ICghb2JqZWN0KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9pdGVtU2VsZWN0b3Ig
PSBhZG9wdFB0cihxb2JqZWN0X2Nhc3Q8UVF1aWNrSXRlbSo+KG9iamVjdCkpOwotICAgIGlmICgh
bV9pdGVtU2VsZWN0b3IpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgICAgIG1f
aXRlbVNlbGVjdG9yLmNsZWFyKCk7CisgICAgaWYgKCFtX2l0ZW1TZWxlY3RvcikKICAgICAgICAg
cmV0dXJuOwotICAgIH0KIAogICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2Vw
dGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1Qoc2VsZWN0SW5kZXgoaW50KSkpOwogCiAg
ICAgLy8gV2UgZW5xdWV1ZSB0aGVzZSBiZWNhdXNlIHRoZXkgYXJlIHRyaWdnZXJlZCBieSBtX2l0
ZW1TZWxlY3RvciBhbmQgd2lsbCBsZWFkIHRvIGl0cyBkZXN0cnVjdGlvbi4KLSAgICBjb25uZWN0
KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBT
TE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKLSAgICBjb25uZWN0
KGNvbnRleHRPYmplY3QsIFNJR05BTChyZWplY3RlZCgpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkp
LCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdO
QUwoZG9uZSgpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7
CisgICAgaWYgKG1fc2VsZWN0aW9uVHlwZSA9PSBXZWJQb3B1cE1lbnVQcm94eVF0OjpTaW5nbGVT
ZWxlY3Rpb24pCisgICAgICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVk
V2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVudSgpKSwgUXQ6OlF1ZXVl
ZENvbm5lY3Rpb24pOwogCiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcp
LT5hZGRBdHRhY2hlZFByb3BlcnR5VG8obV9pdGVtU2VsZWN0b3IuZ2V0KCkpOwogICAgIG1faXRl
bVNlbGVjdG9yLT5zZXRQYXJlbnRJdGVtKG1fd2ViVmlldyk7CkBAIC0zMDIsMTkgKzM1NCwxMCBA
QCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCog
Y29tcG9uZW50LCBRT2JqZWN0KiBjb250ZQogICAgICAgICBiYXNlQ29udGV4dCA9IFFRbWxFbmdp
bmU6OmNvbnRleHRGb3JPYmplY3QobV93ZWJWaWV3KTsKICAgICBtX2NvbnRleHQgPSBhZG9wdFB0
cihuZXcgUVFtbENvbnRleHQoYmFzZUNvbnRleHQpKTsKIAotICAgIGNvbnRleHRPYmplY3QtPnNl
dFBhcmVudChtX2NvbnRleHQuZ2V0KCkpOwogICAgIG1fY29udGV4dC0+c2V0Q29udGV4dFByb3Bl
cnR5KFFMYXRpbjFTdHJpbmcoIm1vZGVsIiksIGNvbnRleHRPYmplY3QpOwogICAgIG1fY29udGV4
dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2JqZWN0KTsKIH0KIAotdm9pZCBXZWJQb3B1cE1l
bnVQcm94eVF0Ojpub3RpZnlWYWx1ZUNoYW5nZWQoKQotewotICAgIGlmIChtX2NsaWVudCkgewot
ICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMsIG1fc2VsZWN0
ZWRJbmRleCk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAvLyBTaW5jZSB3ZSBkZWZpbmUgUU9iamVjdHMgaW4gV2ViUG9wdXBNZW51
UHJveHlRdC5jcHAsIHRoaXMgd2lsbCB0cmlnZ2VyIG1vYyB0byBydW4gb24gLmNwcC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCmluZGV4
IDIxZWVjNWQuLmFmMDZhZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtNDIsNiArNDIsMTEgQEAgY2xhc3MgV2ViUG9wdXBN
ZW51UHJveHlRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViUG9wdXBNZW51UHJveHkgewog
ICAgIFFfT0JKRUNUCiAKIHB1YmxpYzoKKyAgICBlbnVtIFNlbGVjdGlvblR5cGUgeworICAgICAg
ICBTaW5nbGVTZWxlY3Rpb24sCisgICAgICAgIE11bHRpcGxlU2VsZWN0aW9uCisgICAgfTsKKwog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0ZShXZWJQb3B1
cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dlYlZpZXcqIHdlYlZpZXcpCiAgICAg
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5UXQoY2xpZW50
LCB3ZWJWaWV3KSk7CkBAIC02MSwxMyArNjYsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0
ZUl0ZW0oUU9iamVjdCopOwogICAgIHZvaWQgY3JlYXRlQ29udGV4dChRUW1sQ29tcG9uZW50Kiwg
UU9iamVjdCopOwogCi0gICAgdm9pZCBub3RpZnlWYWx1ZUNoYW5nZWQoKTsKKyAgICB2b2lkIGNs
b3NlUG9wdXBNZW51KCk7CiAKICAgICBPd25QdHI8UVFtbENvbnRleHQ+IG1fY29udGV4dDsKICAg
ICBPd25QdHI8UVF1aWNrSXRlbT4gbV9pdGVtU2VsZWN0b3I7CisgICAgT3duUHRyPFFPYmplY3Q+
IG1fY29udGV4dE9iamVjdDsKIAogICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKLSAgICBp
bnQzMl90IG1fc2VsZWN0ZWRJbmRleDsKKyAgICBTZWxlY3Rpb25UeXBlIG1fc2VsZWN0aW9uVHlw
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCmluZGV4IDk0
MGNiOTUuLjRjMzA5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKQEAgLTU5LDkgKzU5LDE0IEBAIHZv
aWQgV2ViUG9wdXBNZW51OjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGludCBuZXdJbmRleCkKICAg
ICBpZiAoIW1fcG9wdXBDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFU
KQorICAgIGlmIChuZXdJbmRleCA+PSAwKQorICAgICAgICBtX3BvcHVwQ2xpZW50LT5saXN0Qm94
U2VsZWN0SXRlbShuZXdJbmRleCwgbV9wb3B1cENsaWVudC0+bXVsdGlwbGUoKSwgZmFsc2UpOwor
I2Vsc2UKICAgICBtX3BvcHVwQ2xpZW50LT5wb3B1cERpZEhpZGUoKTsKICAgICBpZiAobmV3SW5k
ZXggPj0gMCkKICAgICAgICAgbV9wb3B1cENsaWVudC0+dmFsdWVDaGFuZ2VkKG5ld0luZGV4KTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VGV4dEZvckluZGV4KGludCBpbmRl
eCkKQEAgLTg3LDcgKzkyLDcgQEAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBNZW51Ojpw
b3B1bGF0ZUl0ZW1zKCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3R5
bGluZyB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAgICAgICAgICAgICAv
LyBGSVhNRTogRmluZCBhIHdheSB0byBjdXN0b21pemUgdGV4dCBjb2xvciB3aGVuIGFuIGl0ZW0g
aXMgaGlnaGxpZ2h0ZWQuCiAgICAgICAgICAgICBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUgPSBt
X3BvcHVwQ2xpZW50LT5pdGVtU3R5bGUoaSk7Ci0gICAgICAgICAgICBpdGVtcy5hcHBlbmQoV2Vi
UG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6SXRlbSwgbV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSks
IGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3Zl
cnJpZGUoKSwgbV9wb3B1cENsaWVudC0+aXRlbVRvb2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0
ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSwg
bV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaSkpKTsKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVu
ZChXZWJQb3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJdGVtLCBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4
dChpKSwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0eWxlLmhhc1RleHREaXJlY3Rp
b25PdmVycmlkZSgpLCBtX3BvcHVwQ2xpZW50LT5pdGVtVG9vbFRpcChpKSwgbV9wb3B1cENsaWVu
dC0+aXRlbUFjY2Vzc2liaWxpdHlUZXh0KGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNFbmFibGVk
KGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJlbChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlz
U2VsZWN0ZWQoaSkpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKaW5kZXggOGU2
NjI1MC4uNjMxOWI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQogICAgIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3SW5kZXgpOwogICAgIHZvaWQgc2V0VGV4dEZv
ckluZGV4KGludCBuZXdJbmRleCk7Ci0jaWYgUExBVEZPUk0oR1RLKSAgICAKKyNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVudDsgfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBN
ZW51UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9X
ZWJQb3B1cE1lbnVRdC5jcHAKaW5kZXggYjIxZjA2Yy4uZjBhOGY3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQ
b3B1cE1lbnVRdC5jcHAKQEAgLTI3LDEzICsyNywxNSBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVu
dS5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEo
Y29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit2b2lkIFdlYlBvcHVwTWVu
dTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0
YSYgZGF0YSkKIHsKKyAgICBkYXRhLm11bHRpcGxlU2VsZWN0aW9ucyA9IG1fcG9wdXBDbGllbnQt
Pm11bHRpcGxlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZmMTgyN2MuLmYwYTA3ODQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTIzMzcsMTIgKzIzMzcsMzQgQEAgdm9pZCBXZWJQYWdlOjpjb3VudFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl8KIAogdm9pZCBXZWJQ
YWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3
SW5kZXgpCiB7CisgICAgY2hhbmdlU2VsZWN0ZWRJbmRleChuZXdJbmRleCk7CisgICAgbV9hY3Rp
dmVQb3B1cE1lbnUgPSAwOworfQorCisjaWYgUExBVEZPUk0oUVQpCit2b2lkIFdlYlBhZ2U6OnNl
bGVjdGVkSW5kZXgoaW50MzJfdCBuZXdJbmRleCkKK3sKKyAgICBjaGFuZ2VTZWxlY3RlZEluZGV4
KG5ld0luZGV4KTsKK30KKwordm9pZCBXZWJQYWdlOjpoaWRlUG9wdXBNZW51KGludDMyX3QgbmV3
SW5kZXgpCit7CiAgICAgaWYgKCFtX2FjdGl2ZVBvcHVwTWVudSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpZENoYW5nZVNlbGVjdGVkSW5kZXgobmV3SW5kZXgp
OworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5jbGllbnQoKS0+cG9wdXBEaWRIaWRlKCk7CisgICAg
bV9hY3RpdmVQb3B1cE1lbnUtPnNldFRleHRGb3JJbmRleChuZXdJbmRleCk7CiAgICAgbV9hY3Rp
dmVQb3B1cE1lbnUgPSAwOwogfQorI2VuZGlmCisKK3ZvaWQgV2ViUGFnZTo6Y2hhbmdlU2VsZWN0
ZWRJbmRleChpbnQzMl90IGluZGV4KQoreworICAgIGlmICghbV9hY3RpdmVQb3B1cE1lbnUpCisg
ICAgICAgIHJldHVybjsKKworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5kaWRDaGFuZ2VTZWxlY3Rl
ZEluZGV4KGluZGV4KTsKK30KIAogdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzYjdlNmU2Li43YmQ4MjIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY2OSw2ICs2Njks
MTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBmYWlsZWRUb1Nob3dQ
b3B1cE1lbnUoKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlkZVBvcHVw
TWVudShpbnQzMl90IG5ld0luZGV4ID0gLTEpOworICAgIHZvaWQgc2VsZWN0ZWRJbmRleChpbnQz
Ml90IG5ld0luZGV4KTsKKyNlbmRpZgogCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5Q
YW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBh
bmVsKCk7CkBAIC02OTQsNiArNjk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbGVjdEl0
ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwog
I2VuZGlmCiAKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBpbmRleCk7CiAg
ICAgdm9pZCBzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCgpOwogCiAgICAgc3RhdGljIGJvb2wg
cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCA4OTlhMmE5Li43NDVkNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTYwLDcg
KzE2MCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRUZXh0Rm9yQWN0aXZlUG9w
dXBNZW51KGludDMyX3QgaW5kZXgpOwogI2lmIFBMQVRGT1JNKEdUSykgICAgCiAgICAgRmFpbGVk
VG9TaG93UG9wdXBNZW51KCk7Ci0jZW5kaWYgICAgCisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkK
KyAgICBIaWRlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpOworICAgIFNlbGVjdGVkSW5kZXgo
aW50MzJfdCBuZXdJbmRleCk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICAjIENvbnRleHQgbWVudS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145192</attachid>
            <date>2012-05-31 19:08:00 -0700</date>
            <delta_ts>2012-05-31 19:28:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527_053112.patch</filename>
            <type>text/plain</type>
            <size>31680</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NWRmN2EzLi5kZDk1ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDUtMzEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUgYnV0dG9uIHRl
eHQgYXMgdGhlIHNlbGVjdGVkIGl0ZW0gYXQgdGhlIHNtYWxsZXN0IGluZGV4LgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0OjpsaXN0Qm94U2VsZWN0SXRlbSk6CisKIDIwMTItMDUtMzEgIFNoYXduIFNpbmdo
ICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNaWdyYXRl
IHRvIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAppbmRleCA0ODE0NmUyLi5mMjQ3NmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTM0MCw3ICszNDAsMTQgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBm
aXJlT25DaGFuZ2UpCiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6Omxpc3RCb3hTZWxlY3RJdGVtKGlu
dCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIGJvb2wgc2hpZnQsIGJv
b2wgZmlyZU9uQ2hhbmdlTm93KQogewotICAgIHRvSFRNTFNlbGVjdEVsZW1lbnQobm9kZSgpKS0+
bGlzdEJveFNlbGVjdEl0ZW0obGlzdEluZGV4LCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywgc2hp
ZnQsIGZpcmVPbkNoYW5nZU5vdyk7CisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRv
SFRNTFNlbGVjdEVsZW1lbnQobm9kZSgpKTsKKyAgICBzZWxlY3QtPmxpc3RCb3hTZWxlY3RJdGVt
KGxpc3RJbmRleCwgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIHNoaWZ0LCBmaXJlT25DaGFuZ2VO
b3cpOworCisjaWYgUExBVEZPUk0oUVQpCisgICAgY29uc3QgaW50IGZpcnN0U2VsZWN0ZWRJbmRl
eCA9IHNlbGVjdC0+c2VsZWN0ZWRJbmRleCgpOworICAgIGlmIChsaXN0SW5kZXggPD0gZmlyc3RT
ZWxlY3RlZEluZGV4KQorICAgIHNldFRleHRGcm9tSXRlbShmaXJzdFNlbGVjdGVkSW5kZXgpOwor
I2VuZGlmCiB9CiAKIGJvb2wgUmVuZGVyTWVudUxpc3Q6Om11bHRpcGxlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBiYzMwYTA4Li40MjY0NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIw
MTItMDUtMzEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRp
LXNlbGVjdCBsaXN0LiBGb3IgbXVsdGktc2VsZWN0IGxpc3QsIHRoZSBwb3B1cCBtZW51IGlzIG5v
dCBjbG9zZWQgb24gc2VsZWN0aW5nCisgICAgICAgIGFuIGl0ZW0gYW5kIHJlcXVpcmVzIGV4cGxp
Y2l0IGNhbGwgdG8gaGlkZSB0aGUgbWVudS4KKworICAgICAgICAtIEFkZGVkIG11bHRpLXNlbGVj
dGlvbiBmbGFnIHRvIFBsYXRmb3JtUG9wdXBNZW51RGF0YSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRv
IGFjY2VwdCBtdWx0aXBsZSBzZWxlY3Rpb25zIG9yIG5vdC4KKyAgICAgICAgLSBBZGRlZCBzZWxl
Y3RlZCBzdGF0ZSB0byBXZWJQb3B1cEl0ZW0uCisgICAgICAgIC0gTW9kaWZpZWQgV2ViUG9wdXBN
ZW51UXQgdG8gc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb25zLgorCisgICAgICAgICogU2hhcmVk
L1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51
RGF0YS5oOgorICAgICAgICAoUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUG9wdXBJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjpXZWJQ
b3B1cEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UG9wdXBJdGVtLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9X
ZWJWaWV3L3RzdF9tdWx0aVNlbGVjdC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211bHRpc2VsZWN0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5Lmg6CisgICAgICAgIChDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlU2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlUG9wdXBNZW51KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6bXVsdGlwbGUpOgorICAgICAgICAoV2ViS2l0
OjpQb3B1cE1lbnVJdGVtTW9kZWw6Okl0ZW06Okl0ZW0pOgorICAgICAgICAoUG9wdXBNZW51SXRl
bU1vZGVsKToKKyAgICAgICAgKEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QpOgorICAgICAgICAo
V2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjphbGxvd011bHRpU2VsZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6ZGlzbWlzcyk6CisgICAgICAg
IChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNvbnRleHRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0
ZW1Nb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0KToK
KyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6CisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eVF0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6cG9wdWxhdGVJdGVtcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKFdl
YlBvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQ
b3B1cE1lbnVRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBv
cHVwTWVudSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
aGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBh
Z2VRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdGVkSW5kZXgpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlkZVBvcHVwTWVudSk6
CisKIDIwMTItMDUtMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2VudGFuZ2xlIGNvZGUgdGhhdCByZWxpZXMgb24gVVNFKEFVVE9NQVRJQ19URVhUX1JFUExB
Q0VNRU5UKSBmcm9tIHRoYXQgd2hpY2ggbWVyZWx5IHJlbGllcyBvbiBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCmluZGV4
IDZjNGQyMGUuLmI2MjdhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0
Zm9ybVBvcHVwTWVudURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCkBAIC0zOCw2ICszOCw4IEBAIFBsYXRmb3JtUG9wdXBNZW51RGF0
YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKCkKICAgICAsIG1fY2xpZW50SW5zZXRSaWdodCgwKQog
ICAgICwgbV9wb3B1cFdpZHRoKDApCiAgICAgLCBtX2l0ZW1IZWlnaHQoMCkKKyNlbGlmIFBMQVRG
T1JNKFFUKQorICAgIDogbXVsdGlwbGVTZWxlY3Rpb25zKGZhbHNlKQogI2VuZGlmCiB7CiB9CkBA
IC02Miw2ICs2NCw4IEBAIHZvaWQgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogI2VsaWYgUExBVEZPUk0oTUFDKQog
ICAgIGVuY29kZXItPmVuY29kZShmb250SW5mbyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHNob3Vs
ZFBvcE92ZXIpOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgZW5jb2Rlci0+ZW5jb2RlKG11bHRp
cGxlU2VsZWN0aW9ucyk7CiAjZW5kaWYKIH0KIApAQCAtOTUsNiArOTksOSBAQCBib29sIFBsYXRm
b3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgUGxhdGZvcm1QbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZGF0YS5zaG91bGRQb3BPdmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VsaWYg
UExBVEZPUk0oUVQpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tdWx0aXBsZVNlbGVj
dGlvbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaApp
bmRleCBmODUwMDhhLi4yMWFiZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRm
b3JtUG9wdXBNZW51RGF0YS5oCkBAIC01NSw2ICs1NSw4IEBAIHN0cnVjdCBQbGF0Zm9ybVBvcHVw
TWVudURhdGEgewogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEZvbnRJbmZvIGZvbnRJbmZvOwog
ICAgIGJvb2wgc2hvdWxkUG9wT3ZlcjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgbXVs
dGlwbGVTZWxlY3Rpb25zOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1
cEl0ZW0uY3BwCmluZGV4IGE5YWMwMzIuLmMyMTVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQb3B1cEl0ZW0uY3BwCkBAIC0zOSw2ICszOSw3IEBAIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKCkKICAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rp
b25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzU2Vs
ZWN0ZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTQ4LDEwICs0OSwxMSBAQCBXZWJQb3B1cEl0ZW06Oldl
YlBvcHVwSXRlbShUeXBlIHR5cGUpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShm
YWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwoZmFsc2UpCisg
ICAgLCBtX2lzU2VsZWN0ZWQoZmFsc2UpCiB7CiB9CiAKLVdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xU
aXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29s
IGlzTGFiZWwpCitXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJl
Y3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vz
c2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29sIGlzU2VsZWN0
ZWQpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwgbV90ZXh0
RGlyZWN0aW9uKHRleHREaXJlY3Rpb24pCkBAIC02MCwxMiArNjIsMTQgQEAgV2ViUG9wdXBJdGVt
OjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHREaXJlY3Rp
b24gdGV4dERpcmUKICAgICAsIG1fYWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJpbGl0eVRleHQp
CiAgICAgLCBtX2lzRW5hYmxlZChpc0VuYWJsZWQpCiAgICAgLCBtX2lzTGFiZWwoaXNMYWJlbCkK
KyAgICAsIG1faXNTZWxlY3RlZChpc1NlbGVjdGVkKQogewogfQogCiB2b2lkIFdlYlBvcHVwSXRl
bTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdHlw
ZSksIG1fdGV4dCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdGV4dERpcmVjdGlvbiksIG1faGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlLCBtX3Rvb2xUaXAsIG1fYWNjZXNzaWJpbGl0eVRleHQsIG1f
aXNFbmFibGVkLCBtX2lzTGFiZWwpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4o
bV9pc1NlbGVjdGVkKSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCkBAIC03OCwxMCAr
ODIsMTUgQEAgYm9vbCBXZWJQb3B1cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFdlYlBvcHVwSXRlbSYgaXRlbSkKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0
eVRleHQ7CiAgICAgYm9vbCBpc0VuYWJsZWQ7CiAgICAgYm9vbCBpc0xhYmVsOworICAgIGJvb2wg
aXNTZWxlY3RlZDsKKwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBl
LCB0ZXh0LCB0ZXh0RGlyZWN0aW9uLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAs
IGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaXRlbSA9IFdlYlBvcHVwSXRlbShzdGF0aWNfY2FzdDxUeXBlPih0eXBl
KSwgdGV4dCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4odGV4dERpcmVjdGlvbiksIGhhc1Rl
eHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxl
ZCwgaXNMYWJlbCk7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGlzU2Vs
ZWN0ZWQpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaXRlbSA9IFdlYlBvcHVwSXRl
bShzdGF0aWNfY2FzdDxUeXBlPih0eXBlKSwgdGV4dCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlv
bj4odGV4dERpcmVjdGlvbiksIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNj
ZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxlZCwgaXNMYWJlbCwgaXNTZWxlY3RlZCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1
cEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAppbmRleCAzZGM2
MWQ3Li5kODU4NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJ
dGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCkBAIC00NCw3
ICs0NCw3IEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW0gewogCiAgICAgV2ViUG9wdXBJdGVtKCk7CiAg
ICAgV2ViUG9wdXBJdGVtKFR5cGUpOwotICAgIFdlYlBvcHVwSXRlbShUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHQsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92
ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0
eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29sIGlzTGFiZWwpOworICAgIFdlYlBvcHVwSXRlbShU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGJvb2wgaGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmlu
ZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29sIGlzTGFiZWwsIGJvb2wg
aXNTZWxlY3RlZCk7CiAKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIq
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgV2ViUG9wdXBJdGVtJik7CkBAIC01Nyw2ICs1Nyw3IEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW0g
ewogICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlUZXh0OwogICAgIGJvb2wgbV9pc0VuYWJsZWQ7
CiAgICAgYm9vbCBtX2lzTGFiZWw7CisgICAgYm9vbCBtX2lzU2VsZWN0ZWQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9tdWx0
aVNlbGVjdC5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjYzU2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sCkBAIC0wLDAgKzEsNjMgQEAKK2lt
cG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAK
K2ltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMS4wCitpbXBvcnQgVGVzdCAxLjAKK2ltcG9y
dCAiLi4vY29tbW9uIgorCitUZXN0V2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKworICAgIHdp
ZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDQwMAorCisgICAgcHJvcGVydHkgYm9vbCBzZWxlY3RJdGVt
cworCisgICAgZXhwZXJpbWVudGFsLml0ZW1TZWxlY3RvcjogSXRlbSB7CisgICAgICAgICBDb21w
b25lbnQub25Db21wbGV0ZWQ6IHsKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZEluZGljZXMgPSBb
MCwxXQorICAgICAgICAgICAgaWYgKG1vZGVsLmFsbG93TXVsdGlTZWxlY3QgJiYgc2VsZWN0SXRl
bXMpeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgIHNlbGVjdGVkSW5kaWNl
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KHNlbGVjdGVk
SW5kaWNlc1tpXSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1vZGVsLmRpc21pc3MoKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiB0aXRsZVNw
eQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogInRpdGxlQ2hh
bmdlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIGlkOiB0ZXN0Q2FzZQorICAg
ICAgICBuYW1lOiAiV2ViVmlld011bHRpSXRlbVNlbGVjdG9yIgorICAgICAgICB3aGVuOiB3aW5k
b3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3
LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vbXVsdGlzZWxlY3QuaHRtbCIpCisgICAg
ICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAg
ICAgdGl0bGVTcHkuY2xlYXIoKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb3Blbkl0
ZW1TZWxlY3RvcigpIHsKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLnRlc3QudG91
Y2hUYXAod2ViVmlldywgMTUsIDE1KQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dF9yZWplY3QoKSB7CisgICAgICAgICAgICB2YXIgb2xkVGl0bGUgPSB3ZWJWaWV3LnRpdGxlCisg
ICAgICAgICAgICB3ZWJWaWV3LnNlbGVjdEl0ZW1zID0gZmFsc2U7CisgICAgICAgICAgICBvcGVu
SXRlbVNlbGVjdG9yKCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgb2xkVGl0
bGUpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FjY2VwdCgpIHsKKyAgICAg
ICAgICAgIHdlYlZpZXcuc2VsZWN0SXRlbXMgPSB0cnVlOworICAgICAgICAgICAgb3Blbkl0ZW1T
ZWxlY3RvcigpCisgICAgICAgICAgICB0aXRsZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBh
cmUodGl0bGVTcHkuY291bnQsIDIpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUs
ICJfX29wZW5fXyxfX2Nsb3NlZF9fIikKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211
bHRpc2VsZWN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjc4OTcyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCkBAIC0w
LDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5ObyBu
ZXcgc2VsZWN0aW9uIHdhcyBtYWRlPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB1cGRhdGUo
KSB7CisgICAgdmFyIHNlbG9wdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsJyku
b3B0aW9uczsKKyAgICB2YXIgb3B0OworICAgIHZhciBzdHIgPSBuZXcgU3RyaW5nKCIiKTsKKyAg
ICB2YXIgdmFsdWUgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0g
c2Vsb3B0aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykKKyAgICB7CisgICAgICAgIG9wdCA9IHNl
bG9wdGlvbnNbaV07CisgICAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHsKKyAgICAgICAgICAgIG5h
bWUgPSBvcHQudmFsdWU7CisgICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PSAwKQorICAgICAg
ICAgICAgICAgIHN0ciA9IG5hbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c3RyID0gc3RyICsgIiwiICsgbmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC50
aXRsZSA9IHN0cjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgICA8c2VsZWN0
IGlkPSJzZWwiICBtdWx0aXBsZT0ibXVsdGlwbGUiICBvbmNoYW5nZT0idXBkYXRlKCk7Ij4KKyAg
ICAgIDxvcHRpb24gdmFsdWU9Il9fb3Blbl9fIiA+T3Blbjwvb3B0aW9uPgorICAgICAgPG9wdGlv
biB2YWx1ZT0iX19jbG9zZWRfXyIgPkNsb3NlZDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1
ZT0iX19hbGxfXyIgPkFsbDwvb3B0aW9uPgorICAgICAgPC9zZWxlY3Q+Cis8L2JvZHk+CisKKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NWU2YzEz
Li41OGZmOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02
NzEsNyArNjcxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRGcm9tSXRl
bUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpOwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7Ci0j
ZW5kaWYgICAgCisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2aXJ0dWFsIHZvaWQgY2hh
bmdlU2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwg
dm9pZCBjbG9zZVBvcHVwTWVudSgpOworI2VuZGlmCiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBn
ZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYlBhZ2VQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCmluZGV4IDNjZWZjMGQuLmQ1YmZhNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCkBAIC01NSw3ICs1
NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3Vy
cmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKSA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCkgPSAwOwotI2VuZGlm
ICAgICAgICAKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2hhbmdlU2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlUG9wdXBNZW51KCkgPSAwOworI2VuZGlmCiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgfldlYlBvcHVwTWVudVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCmluZGV4IDVjYWZhZDUuLmZhMmM3NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcApAQCAtMTE5
LDQgKzExOSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZQogfQogI2VuZGlmCiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3Qgc2VsZWN0ZWRJbmRleCkK
K3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdGVkSW5kZXgo
c2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsb3Nl
UG9wdXBNZW51KCkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okhp
ZGVQb3B1cE1lbnUoKSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNw
cAppbmRleCAyZjkyMDk4Li5mYzJkZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCkBAIC01MiwyMyArNTIsMjQgQEAgcHVi
bGljOgogICAgICAgICBJc1NlcGFyYXRvclJvbGUgPSBRdDo6VXNlclJvbGUgKyAzCiAgICAgfTsK
IAotICAgIFBvcHVwTWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGlu
dCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOworICAgIFBvcHVwTWVudUl0ZW1Nb2RlbChjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGJvb2wgbXVsdGlwbGUpOwogICAgIHZpcnR1YWwgaW50IHJv
d0NvdW50KGNvbnN0IFFNb2RlbEluZGV4JiBwYXJlbnQgPSBRTW9kZWxJbmRleCgpKSBjb25zdCB7
IHJldHVybiBtX2l0ZW1zLnNpemUoKTsgfQogICAgIHZpcnR1YWwgUVZhcmlhbnQgZGF0YShjb25z
dCBRTW9kZWxJbmRleCYsIGludCByb2xlID0gUXQ6OkRpc3BsYXlSb2xlKSBjb25zdDsKIAogICAg
IFFfSU5WT0tBQkxFIHZvaWQgc2VsZWN0KGludCk7CiAKICAgICBpbnQgc2VsZWN0ZWRPcmlnaW5h
bEluZGV4KCkgY29uc3Q7CisgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dNdWx0aXBsZXM7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAgICAgIEl0
ZW0oY29uc3QgV2ViUG9wdXBJdGVtJiB3ZWJQb3B1cEl0ZW0sIGNvbnN0IFFTdHJpbmcmIGdyb3Vw
LCBpbnQgb3JpZ2luYWxJbmRleCwgYm9vbCBzZWxlY3RlZCkKKyAgICAgICAgSXRlbShjb25zdCBX
ZWJQb3B1cEl0ZW0mIHdlYlBvcHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGludCBvcmln
aW5hbEluZGV4KQogICAgICAgICAgICAgOiB0ZXh0KHdlYlBvcHVwSXRlbS5tX3RleHQpCiAgICAg
ICAgICAgICAsIHRvb2xUaXAod2ViUG9wdXBJdGVtLm1fdG9vbFRpcCkKICAgICAgICAgICAgICwg
Z3JvdXAoZ3JvdXApCiAgICAgICAgICAgICAsIG9yaWdpbmFsSW5kZXgob3JpZ2luYWxJbmRleCkK
ICAgICAgICAgICAgICwgZW5hYmxlZCh3ZWJQb3B1cEl0ZW0ubV9pc0VuYWJsZWQpCi0gICAgICAg
ICAgICAsIHNlbGVjdGVkKHNlbGVjdGVkKQorICAgICAgICAgICAgLCBzZWxlY3RlZCh3ZWJQb3B1
cEl0ZW0ubV9pc1NlbGVjdGVkKQogICAgICAgICAgICAgLCBpc1NlcGFyYXRvcih3ZWJQb3B1cEl0
ZW0ubV90eXBlID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQogICAgICAgICB7IH0KIApAQCAt
ODIsMzggKzgzLDQyIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNTZXBhcmF0b3I7CiAgICAg
fTsKIAotICAgIHZvaWQgYnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2Vi
UG9wdXBJdGVtcywgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgdm9pZCBidWlsZEl0
ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zKTsKIAogICAgIFZl
Y3RvcjxJdGVtPiBtX2l0ZW1zOwogICAgIGludCBtX3NlbGVjdGVkTW9kZWxJbmRleDsKKyAgICBi
b29sIG1fYWxsb3dNdWx0aXBsZXM7CiB9OwogCiBjbGFzcyBJdGVtU2VsZWN0b3JDb250ZXh0T2Jq
ZWN0IDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCiAgICAgUV9QUk9QRVJUWShRUmVj
dCBlbGVtZW50UmVjdCBSRUFEIGVsZW1lbnRSZWN0IENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJP
UEVSVFkoUU9iamVjdCogaXRlbXMgUkVBRCBpdGVtcyBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKGJvb2wgYWxsb3dNdWx0aVNlbGVjdCBSRUFEIGFsbG93TXVsdGlTZWxlY3QgQ09OU1RB
TlQgRklOQUwpCiAKIHB1YmxpYzoKLSAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0
IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGludCBz
ZWxlY3RlZEluZGV4KTsKKyAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0IEludFJl
Y3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGJvb2wgbXVsdGlw
bGUpOwogCiAgICAgUVJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRS
ZWN0OyB9CiAgICAgUG9wdXBNZW51SXRlbU1vZGVsKiBpdGVtcygpIHsgcmV0dXJuICZtX2l0ZW1z
OyB9CisgICAgYm9vbCBhbGxvd011bHRpU2VsZWN0KCkgeyByZXR1cm4gbV9pdGVtcy5tdWx0aXBs
ZSgpOyB9CiAKICAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2VwdChpbnQgaW5kZXggPSAtMSk7Ci0g
ICAgUV9JTlZPS0FCTEUgdm9pZCByZWplY3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsgfQorICAgIFFf
SU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IGRvbmUoKTsgfQorICAgIFFfSU5WT0tBQkxF
IHZvaWQgZGlzbWlzcygpIHsgZW1pdCBkb25lKCk7IH0KIAogUV9TSUdOQUxTOgogICAgIHZvaWQg
YWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpOwotICAgIHZvaWQgcmVqZWN0ZWQoKTsKKyAg
ICB2b2lkIGRvbmUoKTsKIAogcHJpdmF0ZToKICAgICBRUmVjdCBtX2VsZW1lbnRSZWN0OwogICAg
IFBvcHVwTWVudUl0ZW1Nb2RlbCBtX2l0ZW1zOwogfTsKIAotSXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVj
dCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3Rl
ZEluZGV4KQorSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIHdlYlBvcHVwSXRlbXMsIGJvb2wgbXVsdGlwbGUpCiAgICAgOiBtX2VsZW1lbnRSZWN0KGVs
ZW1lbnRSZWN0KQotICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KQor
ICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0ZW1zLCBtdWx0aXBsZSkKIHsKIH0KIApAQCAtMTM3LDEy
ICsxNDIsMTIgQEAgc3RhdGljIFFIYXNoPGludCwgUUJ5dGVBcnJheT4gY3JlYXRlUm9sZU5hbWVz
SGFzaCgpCiAgICAgcmV0dXJuIHJvbGVzOwogfQogCi1Qb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVw
TWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywg
aW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCkKLSAgICA6IG1fc2VsZWN0ZWRNb2RlbEluZGV4KC0x
KQorUG9wdXBNZW51SXRlbU1vZGVsOjpQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdl
YlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGJvb2wgbXVsdGlwbGUpCisgICAgOiBtX2FsbG93
TXVsdGlwbGVzKG11bHRpcGxlKQogewogICAgIHN0YXRpYyBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+
IHJvbGVzID0gY3JlYXRlUm9sZU5hbWVzSGFzaCgpOwogICAgIHNldFJvbGVOYW1lcyhyb2xlcyk7
Ci0gICAgYnVpbGRJdGVtcyh3ZWJQb3B1cEl0ZW1zLCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOwor
ICAgIGJ1aWxkSXRlbXMod2ViUG9wdXBJdGVtcyk7CiB9CiAKIFFWYXJpYW50IFBvcHVwTWVudUl0
ZW1Nb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdApA
QCAtMTc4LDIxICsxODMsMjggQEAgUVZhcmlhbnQgUG9wdXBNZW51SXRlbU1vZGVsOjpkYXRhKGNv
bnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50IHJvbGUpIGNvbnN0CiB2b2lkIFBvcHVwTWVudUl0
ZW1Nb2RlbDo6c2VsZWN0KGludCBpbmRleCkKIHsKICAgICBpbnQgb2xkSW5kZXggPSBtX3NlbGVj
dGVkTW9kZWxJbmRleDsKLSAgICBpZiAoaW5kZXggPT0gb2xkSW5kZXgpCi0gICAgICAgIHJldHVy
bjsKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgSXRlbSYgaXRlbSA9IG1faXRlbXNbaW5kZXhdOwogICAgIGlmICghaXRl
bS5lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsK
ICAgICBtX3NlbGVjdGVkTW9kZWxJbmRleCA9IGluZGV4OwogCi0gICAgaWYgKG9sZEluZGV4ICE9
IC0xKSB7Ci0gICAgICAgIEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKLSAgICAg
ICAgb2xkSXRlbS5zZWxlY3RlZCA9IGZhbHNlOwotICAgICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRo
aXMtPmluZGV4KG9sZEluZGV4KSwgdGhpcy0+aW5kZXgob2xkSW5kZXgpKTsKKyAgICBpZiAobV9h
bGxvd011bHRpcGxlcyApCisgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDsK
KyAgICBlbHNlIHsKKworICAgICAgICBpZiAoaW5kZXggPT0gb2xkSW5kZXgpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7CisKKyAgICAgICAgaWYg
KG9sZEluZGV4ICE9IC0xKSB7CisgICAgICAgICAgICBJdGVtJiBvbGRJdGVtID0gbV9pdGVtc1tv
bGRJbmRleF07CisgICAgICAgICAgICBvbGRJdGVtLnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAg
ICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KG9sZEluZGV4KSwgdGhpcy0+aW5kZXgo
b2xkSW5kZXgpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGVtaXQgZGF0YUNoYW5nZWQodGhp
cy0+aW5kZXgoaW5kZXgpLCB0aGlzLT5pbmRleChpbmRleCkpOwpAQCAtMjA1LDcgKzIxNyw3IEBA
IGludCBQb3B1cE1lbnVJdGVtTW9kZWw6OnNlbGVjdGVkT3JpZ2luYWxJbmRleCgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1faXRlbXNbbV9zZWxlY3RlZE1vZGVsSW5kZXhdLm9yaWdpbmFsSW5kZXg7CiB9
CiAKLXZvaWQgUG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KQordm9p
ZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIHdlYlBvcHVwSXRlbXMpCiB7CiAgICAgUVN0cmluZyBjdXJyZW50R3JvdXA7CiAgICAgbV9p
dGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHdlYlBvcHVwSXRlbXMuc2l6ZSgpKTsKQEAgLTIx
NSwxMCArMjI3LDkgQEAgdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3Qg
VmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGkKICAgICAgICAgICAgIGN1cnJl
bnRHcm91cCA9IHdlYlBvcHVwSXRlbS5tX3RleHQ7CiAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgfQotICAgICAgICBjb25zdCBib29sIHNlbGVjdGVkID0gaSA9PSBzZWxlY3RlZE9yaWdp
bmFsSW5kZXg7Ci0gICAgICAgIGlmIChzZWxlY3RlZCkKKyAgICAgICAgaWYgKHdlYlBvcHVwSXRl
bS5tX2lzU2VsZWN0ZWQpCiAgICAgICAgICAgICBtX3NlbGVjdGVkTW9kZWxJbmRleCA9IG1faXRl
bXMuc2l6ZSgpOwotICAgICAgICBtX2l0ZW1zLmFwcGVuZChJdGVtKHdlYlBvcHVwSXRlbSwgY3Vy
cmVudEdyb3VwLCBpLCBzZWxlY3RlZCkpOworICAgICAgICBtX2l0ZW1zLmFwcGVuZChJdGVtKHdl
YlBvcHVwSXRlbSwgY3VycmVudEdyb3VwLCBpKSk7CiAgICAgfQogfQogCkBAIC0yMzIsMTQgKzI0
MywxNyBAQCBXZWJQb3B1cE1lbnVQcm94eVF0Ojp+V2ViUG9wdXBNZW51UHJveHlRdCgpCiB7CiB9
CiAKLXZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0
JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxXZWJQ
b3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBz
ZWxlY3RlZEluZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNv
bnN0IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3Qg
VmVjdG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEm
IGRhdGEsIGludDMyX3QpCiB7Ci0gICAgbV9zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleDsK
KyAgICBtX3NlbGVjdGlvblR5cGUgPSAoZGF0YS5tdWx0aXBsZVNlbGVjdGlvbnMpID8gV2ViUG9w
dXBNZW51UHJveHlRdDo6TXVsdGlwbGVTZWxlY3Rpb24gOiBXZWJQb3B1cE1lbnVQcm94eVF0OjpT
aW5nbGVTZWxlY3Rpb247CisKKyAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KiBjb250ZXh0
T2JqZWN0ID0gbmV3IEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QocmVjdCwgaXRlbXMsIChtX3Nl
bGVjdGlvblR5cGUgPT0gV2ViUG9wdXBNZW51UHJveHlRdDo6TXVsdGlwbGVTZWxlY3Rpb24pKTsK
KyAgICBpZiAoIWNvbnRleHRPYmplY3QpCisgICAgICAgIHJldHVybjsKIAotICAgIEl0ZW1TZWxl
Y3RvckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgSXRlbVNlbGVjdG9yQ29udGV4
dE9iamVjdChyZWN0LCBpdGVtcywgbV9zZWxlY3RlZEluZGV4KTsKICAgICBjcmVhdGVJdGVtKGNv
bnRleHRPYmplY3QpOwogICAgIGlmICghbV9pdGVtU2VsZWN0b3IpIHsKLSAgICAgICAgbm90aWZ5
VmFsdWVDaGFuZ2VkKCk7CisgICAgICAgIGhpZGVQb3B1cE1lbnUoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnNldERp
YWxvZ0FjdGl2ZSh0cnVlKTsKQEAgLTI1MCwxMiArMjY0LDE3IEBAIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlRdDo6aGlkZVBvcHVwTWVudSgpCiAgICAgbV9pdGVtU2VsZWN0b3IuY2xlYXIoKTsKICAg
ICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnNldERpYWxvZ0FjdGl2ZShm
YWxzZSk7CiAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgbm90aWZ5VmFsdWVDaGFuZ2VkKCk7
CisKKyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlUG9wdXBNZW51
KCk7CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICB9CisKIH0KIAogdm9pZCBXZWJQb3B1cE1l
bnVQcm94eVF0OjpzZWxlY3RJbmRleChpbnQgaW5kZXgpCiB7Ci0gICAgbV9zZWxlY3RlZEluZGV4
ID0gaW5kZXg7CisgICAgbV9jbGllbnQtPmNoYW5nZVNlbGVjdGVkSW5kZXgoaW5kZXgpOwogfQog
CiB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9i
amVjdCkKQEAgLTI2OCwyMyArMjg3LDE5IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6Y3Jl
YXRlSXRlbShRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQogCiAgICAgY3JlYXRlQ29udGV4dChjb21w
b25lbnQsIGNvbnRleHRPYmplY3QpOwogICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+
YmVnaW5DcmVhdGUobV9jb250ZXh0LmdldCgpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAg
ICBtX2NvbnRleHQuY2xlYXIoKTsKKyAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIG1faXRlbVNlbGVjdG9yID0gYWRvcHRQdHIocW9iamVjdF9jYXN0PFFRdWlj
a0l0ZW0qPihvYmplY3QpKTsKLSAgICBpZiAoIW1faXRlbVNlbGVjdG9yKSB7Ci0gICAgICAgIG1f
Y29udGV4dC5jbGVhcigpOwotICAgICAgICBtX2l0ZW1TZWxlY3Rvci5jbGVhcigpOworICAgIGlm
ICghbV9pdGVtU2VsZWN0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBjb25uZWN0
KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBT
TE9UKHNlbGVjdEluZGV4KGludCkpKTsKIAogICAgIC8vIFdlIGVucXVldWUgdGhlc2UgYmVjYXVz
ZSB0aGV5IGFyZSB0cmlnZ2VyZWQgYnkgbV9pdGVtU2VsZWN0b3IgYW5kIHdpbGwgbGVhZCB0byBp
dHMgZGVzdHJ1Y3Rpb24uCi0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0
ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkpLCBRdDo6UXVl
dWVkQ29ubmVjdGlvbik7Ci0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwocmVqZWN0
ZWQoKSksIFNMT1QoaGlkZVBvcHVwTWVudSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAg
IGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGRvbmUoKSksIFNMT1QoaGlkZVBvcHVwTWVu
dSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIGlmIChtX3NlbGVjdGlvblR5cGUgPT0g
V2ViUG9wdXBNZW51UHJveHlRdDo6U2luZ2xlU2VsZWN0aW9uKQorICAgICAgICBjb25uZWN0KGNv
bnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBTTE9U
KGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKIAogICAgIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+YWRkQXR0YWNoZWRQcm9wZXJ0eVRvKG1faXRl
bVNlbGVjdG9yLmdldCgpKTsKICAgICBtX2l0ZW1TZWxlY3Rvci0+c2V0UGFyZW50SXRlbShtX3dl
YlZpZXcpOwpAQCAtMzA3LDE0ICszMjIsNiBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNy
ZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCogY29tcG9uZW50LCBRT2JqZWN0KiBjb250ZQogICAg
IG1fY29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2JqZWN0KTsKIH0KIAotdm9pZCBX
ZWJQb3B1cE1lbnVQcm94eVF0Ojpub3RpZnlWYWx1ZUNoYW5nZWQoKQotewotICAgIGlmIChtX2Ns
aWVudCkgewotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMs
IG1fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICB9Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAvLyBTaW5jZSB3ZSBkZWZpbmUgUU9iamVjdHMgaW4gV2Vi
UG9wdXBNZW51UHJveHlRdC5jcHAsIHRoaXMgd2lsbCB0cmlnZ2VyIG1vYyB0byBydW4gb24gLmNw
cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQ
cm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5oCmluZGV4IDIxZWVjNWQuLmE4N2NlMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtNDIsNiArNDIsMTEgQEAgY2xhc3Mg
V2ViUG9wdXBNZW51UHJveHlRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViUG9wdXBNZW51
UHJveHkgewogICAgIFFfT0JKRUNUCiAKIHB1YmxpYzoKKyAgICBlbnVtIFNlbGVjdGlvblR5cGUg
eworICAgICAgICBTaW5nbGVTZWxlY3Rpb24sCisgICAgICAgIE11bHRpcGxlU2VsZWN0aW9uCisg
ICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0
ZShXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5
UXQoY2xpZW50LCB3ZWJWaWV3KSk7CkBAIC02MSwxMyArNjYsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZUl0ZW0oUU9iamVjdCopOwogICAgIHZvaWQgY3JlYXRlQ29udGV4dChRUW1sQ29t
cG9uZW50KiwgUU9iamVjdCopOwogCi0gICAgdm9pZCBub3RpZnlWYWx1ZUNoYW5nZWQoKTsKKyAg
ICB2b2lkIGNsb3NlUG9wdXBNZW51KCk7CiAKICAgICBPd25QdHI8UVFtbENvbnRleHQ+IG1fY29u
dGV4dDsKICAgICBPd25QdHI8UVF1aWNrSXRlbT4gbV9pdGVtU2VsZWN0b3I7CiAKICAgICBRUXVp
Y2tXZWJWaWV3KiBtX3dlYlZpZXc7Ci0gICAgaW50MzJfdCBtX3NlbGVjdGVkSW5kZXg7CisgICAg
U2VsZWN0aW9uVHlwZSBtX3NlbGVjdGlvblR5cGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUG9wdXBNZW51LmNwcAppbmRleCA5NDBjYjk1Li40YzMwOWRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1l
bnUuY3BwCkBAIC01OSw5ICs1OSwxNCBAQCB2b2lkIFdlYlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2Vs
ZWN0ZWRJbmRleChpbnQgbmV3SW5kZXgpCiAgICAgaWYgKCFtX3BvcHVwQ2xpZW50KQogICAgICAg
ICByZXR1cm47CiAKKyNpZiBQTEFURk9STShRVCkKKyAgICBpZiAobmV3SW5kZXggPj0gMCkKKyAg
ICAgICAgbV9wb3B1cENsaWVudC0+bGlzdEJveFNlbGVjdEl0ZW0obmV3SW5kZXgsIG1fcG9wdXBD
bGllbnQtPm11bHRpcGxlKCksIGZhbHNlKTsKKyNlbHNlCiAgICAgbV9wb3B1cENsaWVudC0+cG9w
dXBEaWRIaWRlKCk7CiAgICAgaWYgKG5ld0luZGV4ID49IDApCiAgICAgICAgIG1fcG9wdXBDbGll
bnQtPnZhbHVlQ2hhbmdlZChuZXdJbmRleCk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJQb3B1cE1l
bnU6OnNldFRleHRGb3JJbmRleChpbnQgaW5kZXgpCkBAIC04Nyw3ICs5Miw3IEBAIFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+IFdlYlBvcHVwTWVudTo6cG9wdWxhdGVJdGVtcygpCiAgICAgICAgICAgICAv
LyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHN0eWxpbmcgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tn
cm91bmQgY29sb3JzLgogICAgICAgICAgICAgLy8gRklYTUU6IEZpbmQgYSB3YXkgdG8gY3VzdG9t
aXplIHRleHQgY29sb3Igd2hlbiBhbiBpdGVtIGlzIGhpZ2hsaWdodGVkLgogICAgICAgICAgICAg
UG9wdXBNZW51U3R5bGUgaXRlbVN0eWxlID0gbV9wb3B1cENsaWVudC0+aXRlbVN0eWxlKGkpOwot
ICAgICAgICAgICAgaXRlbXMuYXBwZW5kKFdlYlBvcHVwSXRlbShXZWJQb3B1cEl0ZW06Okl0ZW0s
IG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBp
dGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKCksIG1fcG9wdXBDbGllbnQtPml0ZW1U
b29sVGlwKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtQWNjZXNzaWJpbGl0eVRleHQoaSksIG1fcG9w
dXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkp
KSk7CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoV2ViUG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6
SXRlbSwgbV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSksIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9u
KCksIGl0ZW1TdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSwgbV9wb3B1cENsaWVudC0+
aXRlbVRvb2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwg
bV9wb3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzTGFi
ZWwoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlbGVjdGVkKGkpKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYlBvcHVwTWVudS5oCmluZGV4IDhlNjYyNTAuLjYzMTliOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUu
aApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0RnJvbVBhZ2Uo
KSB7IG1fcGFnZSA9IDA7IH0KICAgICB2b2lkIGRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW50IG5l
d0luZGV4KTsKICAgICB2b2lkIHNldFRleHRGb3JJbmRleChpbnQgbmV3SW5kZXgpOwotI2lmIFBM
QVRGT1JNKEdUSykgICAgCisjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShRVCkKICAgICBX
ZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBD
bGllbnQ7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCmluZGV4IGIyMWYw
NmMuLmYwYThmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCkBAIC0yNywxMyArMjcs
MTUgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtUG9w
dXBNZW51RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvUG9wdXBNZW51Q2xpZW50Lmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQ
b3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVw
TWVudURhdGEmKQordm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0IElu
dFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRhdGEpCiB7CisgICAgZGF0YS5tdWx0aXBs
ZVNlbGVjdGlvbnMgPSBtX3BvcHVwQ2xpZW50LT5tdWx0aXBsZSgpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCA2ZjE4MjdjLi44NjY5ZTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzM3LDExICsyMzM3LDE2IEBAIHZvaWQgV2Vi
UGFnZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBv
cHRpb25zLCB1aW50MzJfCiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZv
ckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4KQogeworICAgIGNoYW5nZVNlbGVjdGVk
SW5kZXgobmV3SW5kZXgpOworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKK30KKwordm9pZCBX
ZWJQYWdlOjpjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3QgaW5kZXgpCit7CiAgICAgaWYgKCFt
X2FjdGl2ZVBvcHVwTWVudSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9hY3RpdmVQb3B1cE1l
bnUtPmRpZENoYW5nZVNlbGVjdGVkSW5kZXgobmV3SW5kZXgpOwotICAgIG1fYWN0aXZlUG9wdXBN
ZW51ID0gMDsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChp
bmRleCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29u
c3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmgKaW5kZXggM2I3ZTZlNi4uY2M3MjNhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NjksNiArNjY5LDEwIEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7
CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2b2lkIGhpZGVQb3B1cE1lbnUoKTsKKyAg
ICB2b2lkIHNlbGVjdGVkSW5kZXgoaW50MzJfdCBuZXdJbmRleCk7CisjZW5kaWYKIAogICAgIHZv
aWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mKTsKICAg
ICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwpAQCAtNjk0LDYgKzY5OCw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRTZWxlY3RJdGVtRnJvbUFjdGl2ZUNvbnRleHRNZW51KGNvbnN0IFdl
YkNvbnRleHRNZW51SXRlbURhdGEmKTsKICNlbmRpZgogCisgICAgdm9pZCBjaGFuZ2VTZWxlY3Rl
ZEluZGV4KGludDMyX3QgaW5kZXgpOwogICAgIHZvaWQgc2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmly
ZWQoKTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggODk5YTJhOS4uMzkwNTJi
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTE2MCw3ICsxNjAsMTEgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7
CiAgICAgU2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IGluZGV4KTsKICNpZiBQTEFU
Rk9STShHVEspICAgIAogICAgIEZhaWxlZFRvU2hvd1BvcHVwTWVudSgpOwotI2VuZGlmICAgIAor
I2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgSGlkZVBvcHVwTWVudSgpOworICAgIFNlbGVj
dGVkSW5kZXgoaW50MzJfdCBuZXdJbmRleCk7CisjZW5kaWYKICAgICAKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKICAgICAjIENvbnRleHQgbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKaW5kZXggMmU5MGE3My4uMThlNGY5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBh
Z2VRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBh
Z2VRdC5jcHAKQEAgLTI4LDkgKzI4LDExIEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQb3B1cE1lbnVDbGllbnQuaCIKICNp
bmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1
ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51LmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRE9NV3JhcHBlcldvcmxk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRyb2xsZXIuaD4KQEAgLTQyMiw0ICs0MjQs
MTggQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VyU2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYg
c2NyaXB0cykKICAgICAgICAgcGFnZUdyb3VwLT5hZGRVc2VyU2NyaXB0VG9Xb3JsZChtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0cy5hdChpKSwgS1VSTCgpLCBudWxscHRyLCBudWxscHRy
LCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJblRvcEZyYW1lT25seSk7CiB9CiAKK3ZvaWQg
V2ViUGFnZTo6c2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld0luZGV4KQoreworICAgIGNoYW5nZVNl
bGVjdGVkSW5kZXgobmV3SW5kZXgpOworfQorCit2b2lkIFdlYlBhZ2U6OmhpZGVQb3B1cE1lbnUo
KQoreworICAgIGlmICghbV9hY3RpdmVQb3B1cE1lbnUpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fYWN0aXZlUG9wdXBNZW51LT5jbGllbnQoKS0+cG9wdXBEaWRIaWRlKCk7CisgICAgbV9hY3Rp
dmVQb3B1cE1lbnUgPSAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145197</attachid>
            <date>2012-05-31 19:27:54 -0700</date>
            <delta_ts>2012-06-01 15:51:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527_053112.patch</filename>
            <type>text/plain</type>
            <size>31679</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NWRmN2EzLi5kZDk1ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDUtMzEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUgYnV0dG9uIHRl
eHQgYXMgdGhlIHNlbGVjdGVkIGl0ZW0gYXQgdGhlIHNtYWxsZXN0IGluZGV4LgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0OjpsaXN0Qm94U2VsZWN0SXRlbSk6CisKIDIwMTItMDUtMzEgIFNoYXduIFNpbmdo
ICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBNaWdyYXRl
IHRvIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAppbmRleCA0ODE0NmUyLi5mMjQ3NmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTM0MCw3ICszNDAsMTQgQEAgdm9p
ZCBSZW5kZXJNZW51TGlzdDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBm
aXJlT25DaGFuZ2UpCiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6Omxpc3RCb3hTZWxlY3RJdGVtKGlu
dCBsaXN0SW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIGJvb2wgc2hpZnQsIGJv
b2wgZmlyZU9uQ2hhbmdlTm93KQogewotICAgIHRvSFRNTFNlbGVjdEVsZW1lbnQobm9kZSgpKS0+
bGlzdEJveFNlbGVjdEl0ZW0obGlzdEluZGV4LCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywgc2hp
ZnQsIGZpcmVPbkNoYW5nZU5vdyk7CisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRv
SFRNTFNlbGVjdEVsZW1lbnQobm9kZSgpKTsKKyAgICBzZWxlY3QtPmxpc3RCb3hTZWxlY3RJdGVt
KGxpc3RJbmRleCwgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIHNoaWZ0LCBmaXJlT25DaGFuZ2VO
b3cpOworCisjaWYgUExBVEZPUk0oUVQpCisgICAgY29uc3QgaW50IGZpcnN0U2VsZWN0ZWRJbmRl
eCA9IHNlbGVjdC0+c2VsZWN0ZWRJbmRleCgpOworICAgIGlmIChsaXN0SW5kZXggPD0gZmlyc3RT
ZWxlY3RlZEluZGV4KQorICAgIHNldFRleHRGcm9tSXRlbShmaXJzdFNlbGVjdGVkSW5kZXgpOwor
I2VuZGlmCiB9CiAKIGJvb2wgUmVuZGVyTWVudUxpc3Q6Om11bHRpcGxlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwppbmRleCBiYzMwYTA4Li40MjY0NzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzUgQEAKKzIw
MTItMDUtMzEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAgICAgICBb
UXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRp
LXNlbGVjdCBsaXN0LiBGb3IgbXVsdGktc2VsZWN0IGxpc3QsIHRoZSBwb3B1cCBtZW51IGlzIG5v
dCBjbG9zZWQgb24gc2VsZWN0aW5nCisgICAgICAgIGFuIGl0ZW0gYW5kIHJlcXVpcmVzIGV4cGxp
Y2l0IGNhbGwgdG8gaGlkZSB0aGUgbWVudS4KKworICAgICAgICAtIEFkZGVkIG11bHRpLXNlbGVj
dGlvbiBmbGFnIHRvIFBsYXRmb3JtUG9wdXBNZW51RGF0YSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRv
IGFjY2VwdCBtdWx0aXBsZSBzZWxlY3Rpb25zIG9yIG5vdC4KKyAgICAgICAgLSBBZGRlZCBzZWxl
Y3RlZCBzdGF0ZSB0byBXZWJQb3B1cEl0ZW0uCisgICAgICAgIC0gTW9kaWZpZWQgV2ViUG9wdXBN
ZW51UXQgdG8gc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb25zLgorCisgICAgICAgICogU2hhcmVk
L1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9w
dXBNZW51RGF0YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBv
cHVwTWVudURhdGE6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51
RGF0YS5oOgorICAgICAgICAoUGxhdGZvcm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKiBTaGFy
ZWQvV2ViUG9wdXBJdGVtLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjpXZWJQ
b3B1cEl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmVuY29kZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UG9wdXBJdGVtLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9X
ZWJWaWV3L3RzdF9tdWx0aVNlbGVjdC5xbWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211bHRpc2VsZWN0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5Lmg6CisgICAgICAgIChDbGll
bnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2hhbmdlU2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlUG9wdXBNZW51KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6bXVsdGlwbGUpOgorICAgICAgICAoV2ViS2l0
OjpQb3B1cE1lbnVJdGVtTW9kZWw6Okl0ZW06Okl0ZW0pOgorICAgICAgICAoUG9wdXBNZW51SXRl
bU1vZGVsKToKKyAgICAgICAgKEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QpOgorICAgICAgICAo
V2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjphbGxvd011bHRpU2VsZWN0KToKKyAg
ICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAg
ICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6ZGlzbWlzcyk6CisgICAgICAg
IChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNvbnRleHRP
YmplY3QpOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0
ZW1Nb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0KToK
KyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzZWxlY3RJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0Lmg6CisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eVF0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6cG9wdWxhdGVJdGVtcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKFdl
YlBvcHVwTWVudSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQ
b3B1cE1lbnVRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0
Zm9ybURhdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBv
cHVwTWVudSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpj
aGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAoV2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBh
Z2VRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdGVkSW5kZXgpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlkZVBvcHVwTWVudSk6
CisKIDIwMTItMDUtMzEgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAg
IERpc2VudGFuZ2xlIGNvZGUgdGhhdCByZWxpZXMgb24gVVNFKEFVVE9NQVRJQ19URVhUX1JFUExB
Q0VNRU5UKSBmcm9tIHRoYXQgd2hpY2ggbWVyZWx5IHJlbGllcyBvbiBQTEFURk9STShNQUMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCmluZGV4
IDZjNGQyMGUuLmI2MjdhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0
Zm9ybVBvcHVwTWVudURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9y
bVBvcHVwTWVudURhdGEuY3BwCkBAIC0zOCw2ICszOCw4IEBAIFBsYXRmb3JtUG9wdXBNZW51RGF0
YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKCkKICAgICAsIG1fY2xpZW50SW5zZXRSaWdodCgwKQog
ICAgICwgbV9wb3B1cFdpZHRoKDApCiAgICAgLCBtX2l0ZW1IZWlnaHQoMCkKKyNlbGlmIFBMQVRG
T1JNKFFUKQorICAgIDogbXVsdGlwbGVTZWxlY3Rpb25zKGZhbHNlKQogI2VuZGlmCiB7CiB9CkBA
IC02Miw2ICs2NCw4IEBAIHZvaWQgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogI2VsaWYgUExBVEZPUk0oTUFDKQog
ICAgIGVuY29kZXItPmVuY29kZShmb250SW5mbyk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHNob3Vs
ZFBvcE92ZXIpOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgZW5jb2Rlci0+ZW5jb2RlKG11bHRp
cGxlU2VsZWN0aW9ucyk7CiAjZW5kaWYKIH0KIApAQCAtOTUsNiArOTksOSBAQCBib29sIFBsYXRm
b3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgUGxhdGZvcm1QbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZGF0YS5zaG91bGRQb3BPdmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworI2VsaWYg
UExBVEZPUk0oUVQpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tdWx0aXBsZVNlbGVj
dGlvbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVu
dURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaApp
bmRleCBmODUwMDhhLi4yMWFiZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRm
b3JtUG9wdXBNZW51RGF0YS5oCkBAIC01NSw2ICs1NSw4IEBAIHN0cnVjdCBQbGF0Zm9ybVBvcHVw
TWVudURhdGEgewogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEZvbnRJbmZvIGZvbnRJbmZvOwog
ICAgIGJvb2wgc2hvdWxkUG9wT3ZlcjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGJvb2wgbXVs
dGlwbGVTZWxlY3Rpb25zOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1
cEl0ZW0uY3BwCmluZGV4IGE5YWMwMzIuLmMyMTVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQb3B1cEl0ZW0uY3BwCkBAIC0zOSw2ICszOSw3IEBAIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKCkKICAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rp
b25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCisgICAgLCBtX2lzU2Vs
ZWN0ZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTQ4LDEwICs0OSwxMSBAQCBXZWJQb3B1cEl0ZW06Oldl
YlBvcHVwSXRlbShUeXBlIHR5cGUpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVycmlkZShm
YWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwoZmFsc2UpCisg
ICAgLCBtX2lzU2VsZWN0ZWQoZmFsc2UpCiB7CiB9CiAKLVdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJ
dGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRleHREaXJl
Y3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xU
aXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29s
IGlzTGFiZWwpCitXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUsIGNvbnN0IFN0
cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJl
Y3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vz
c2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29sIGlzU2VsZWN0
ZWQpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwgbV90ZXh0
RGlyZWN0aW9uKHRleHREaXJlY3Rpb24pCkBAIC02MCwxMiArNjIsMTQgQEAgV2ViUG9wdXBJdGVt
OjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHREaXJlY3Rp
b24gdGV4dERpcmUKICAgICAsIG1fYWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJpbGl0eVRleHQp
CiAgICAgLCBtX2lzRW5hYmxlZChpc0VuYWJsZWQpCiAgICAgLCBtX2lzTGFiZWwoaXNMYWJlbCkK
KyAgICAsIG1faXNTZWxlY3RlZChpc1NlbGVjdGVkKQogewogfQogCiB2b2lkIFdlYlBvcHVwSXRl
bTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+KG1fdHlw
ZSksIG1fdGV4dCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdGV4dERpcmVjdGlvbiksIG1faGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlLCBtX3Rvb2xUaXAsIG1fYWNjZXNzaWJpbGl0eVRleHQsIG1f
aXNFbmFibGVkLCBtX2lzTGFiZWwpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4o
bV9pc1NlbGVjdGVkKSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCkBAIC03OCwxMCAr
ODIsMTUgQEAgYm9vbCBXZWJQb3B1cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIFdlYlBvcHVwSXRlbSYgaXRlbSkKICAgICBTdHJpbmcgYWNjZXNzaWJpbGl0
eVRleHQ7CiAgICAgYm9vbCBpc0VuYWJsZWQ7CiAgICAgYm9vbCBpc0xhYmVsOworICAgIGJvb2wg
aXNTZWxlY3RlZDsKKwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dCh0eXBl
LCB0ZXh0LCB0ZXh0RGlyZWN0aW9uLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAs
IGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwpKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaXRlbSA9IFdlYlBvcHVwSXRlbShzdGF0aWNfY2FzdDxUeXBlPih0eXBl
KSwgdGV4dCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4odGV4dERpcmVjdGlvbiksIGhhc1Rl
eHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxl
ZCwgaXNMYWJlbCk7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGlzU2Vs
ZWN0ZWQpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaXRlbSA9IFdlYlBvcHVwSXRl
bShzdGF0aWNfY2FzdDxUeXBlPih0eXBlKSwgdGV4dCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlv
bj4odGV4dERpcmVjdGlvbiksIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNj
ZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxlZCwgaXNMYWJlbCwgaXNTZWxlY3RlZCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1
cEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAppbmRleCAzZGM2
MWQ3Li5kODU4NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJ
dGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCkBAIC00NCw3
ICs0NCw3IEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW0gewogCiAgICAgV2ViUG9wdXBJdGVtKCk7CiAg
ICAgV2ViUG9wdXBJdGVtKFR5cGUpOwotICAgIFdlYlBvcHVwSXRlbShUeXBlLCBjb25zdCBTdHJp
bmcmIHRleHQsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92
ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0
eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29sIGlzTGFiZWwpOworICAgIFdlYlBvcHVwSXRlbShU
eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGJvb2wgaGFz
VGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmlu
ZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29sIGlzTGFiZWwsIGJvb2wg
aXNTZWxlY3RlZCk7CiAKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIq
KSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVy
KiwgV2ViUG9wdXBJdGVtJik7CkBAIC01Nyw2ICs1Nyw3IEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW0g
ewogICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlUZXh0OwogICAgIGJvb2wgbV9pc0VuYWJsZWQ7
CiAgICAgYm9vbCBtX2lzTGFiZWw7CisgICAgYm9vbCBtX2lzU2VsZWN0ZWQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9tdWx0
aVNlbGVjdC5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFjYzU2Ngot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMv
cW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sCkBAIC0wLDAgKzEsNjMgQEAKK2lt
cG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktpdCAzLjAK
K2ltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMS4wCitpbXBvcnQgVGVzdCAxLjAKK2ltcG9y
dCAiLi4vY29tbW9uIgorCitUZXN0V2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKworICAgIHdp
ZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDQwMAorCisgICAgcHJvcGVydHkgYm9vbCBzZWxlY3RJdGVt
cworCisgICAgZXhwZXJpbWVudGFsLml0ZW1TZWxlY3RvcjogSXRlbSB7CisgICAgICAgICBDb21w
b25lbnQub25Db21wbGV0ZWQ6IHsKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZEluZGljZXMgPSBb
MCwxXQorICAgICAgICAgICAgaWYgKG1vZGVsLmFsbG93TXVsdGlTZWxlY3QgJiYgc2VsZWN0SXRl
bXMpeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgIHNlbGVjdGVkSW5kaWNl
cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KHNlbGVjdGVk
SW5kaWNlc1tpXSkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1vZGVsLmRpc21pc3MoKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiB0aXRsZVNw
eQorICAgICAgICB0YXJnZXQ6IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogInRpdGxlQ2hh
bmdlZCIKKyAgICB9CisKKyAgICBUZXN0Q2FzZSB7CisgICAgICAgIGlkOiB0ZXN0Q2FzZQorICAg
ICAgICBuYW1lOiAiV2ViVmlld011bHRpSXRlbVNlbGVjdG9yIgorICAgICAgICB3aGVuOiB3aW5k
b3dTaG93bgorCisgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3
LnVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vbXVsdGlzZWxlY3QuaHRtbCIpCisgICAg
ICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAg
ICAgdGl0bGVTcHkuY2xlYXIoKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gb3Blbkl0
ZW1TZWxlY3RvcigpIHsKKyAgICAgICAgICAgIHdlYlZpZXcuZXhwZXJpbWVudGFsLnRlc3QudG91
Y2hUYXAod2ViVmlldywgMTUsIDE1KQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVz
dF9yZWplY3QoKSB7CisgICAgICAgICAgICB2YXIgb2xkVGl0bGUgPSB3ZWJWaWV3LnRpdGxlCisg
ICAgICAgICAgICB3ZWJWaWV3LnNlbGVjdEl0ZW1zID0gZmFsc2U7CisgICAgICAgICAgICBvcGVu
SXRlbVNlbGVjdG9yKCkKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgb2xkVGl0
bGUpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FjY2VwdCgpIHsKKyAgICAg
ICAgICAgIHdlYlZpZXcuc2VsZWN0SXRlbXMgPSB0cnVlOworICAgICAgICAgICAgb3Blbkl0ZW1T
ZWxlY3RvcigpCisgICAgICAgICAgICB0aXRsZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBh
cmUodGl0bGVTcHkuY291bnQsIDIpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUs
ICJfX29wZW5fXyxfX2Nsb3NlZF9fIikKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211
bHRpc2VsZWN0Lmh0bWwgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Ft
bHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjc4OTcyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCkBAIC0w
LDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5ObyBu
ZXcgc2VsZWN0aW9uIHdhcyBtYWRlPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB1cGRhdGUo
KSB7CisgICAgdmFyIHNlbG9wdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsJyku
b3B0aW9uczsKKyAgICB2YXIgb3B0OworICAgIHZhciBzdHIgPSBuZXcgU3RyaW5nKCIiKTsKKyAg
ICB2YXIgdmFsdWUgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0g
c2Vsb3B0aW9ucy5sZW5ndGg7IGkgPCBsZW47IGkrKykKKyAgICB7CisgICAgICAgIG9wdCA9IHNl
bG9wdGlvbnNbaV07CisgICAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHsKKyAgICAgICAgICAgIG5h
bWUgPSBvcHQudmFsdWU7CisgICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PSAwKQorICAgICAg
ICAgICAgICAgIHN0ciA9IG5hbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
c3RyID0gc3RyICsgIiwiICsgbmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC50
aXRsZSA9IHN0cjsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgICA8c2VsZWN0
IGlkPSJzZWwiICBtdWx0aXBsZT0ibXVsdGlwbGUiICBvbmNoYW5nZT0idXBkYXRlKCk7Ij4KKyAg
ICAgIDxvcHRpb24gdmFsdWU9Il9fb3Blbl9fIiA+T3Blbjwvb3B0aW9uPgorICAgICAgPG9wdGlv
biB2YWx1ZT0iX19jbG9zZWRfXyIgPkNsb3NlZDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1
ZT0iX19hbGxfXyIgPkFsbDwvb3B0aW9uPgorICAgICAgPC9zZWxlY3Q+Cis8L2JvZHk+CisKKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NWU2YzEz
Li41OGZmOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02
NzEsNyArNjcxLDExIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRGcm9tSXRl
bUZvclBvcHVwTWVudShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpOwogI2lmIFBM
QVRGT1JNKEdUSykKICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7Ci0j
ZW5kaWYgICAgCisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2aXJ0dWFsIHZvaWQgY2hh
bmdlU2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwg
dm9pZCBjbG9zZVBvcHVwTWVudSgpOworI2VuZGlmCiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBn
ZW5lcmF0ZWQgV2ViUGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVj
ZWl2ZVdlYlBhZ2VQcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCmluZGV4IDNjZWZjMGQuLmQ1YmZhNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCkBAIC01NSw3ICs1
NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3Vy
cmVudGx5UHJvY2Vzc2VkTW91c2VEb3duRXZlbnQoKSA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCkgPSAwOwotI2VuZGlm
ICAgICAgICAKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICB2aXJ0dWFsIHZvaWQg
Y2hhbmdlU2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpID0gMDsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGNsb3NlUG9wdXBNZW51KCkgPSAwOworI2VuZGlmCiAgICAgfTsKIAog
ICAgIHZpcnR1YWwgfldlYlBvcHVwTWVudVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCmluZGV4IDVjYWZhZDUuLmZhMmM3NGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcApAQCAtMTE5
LDQgKzExOSwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZQogfQogI2VuZGlmCiAKK3ZvaWQg
V2ViUGFnZVByb3h5OjpjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3Qgc2VsZWN0ZWRJbmRleCkK
K3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdGVkSW5kZXgo
c2VsZWN0ZWRJbmRleCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsb3Nl
UG9wdXBNZW51KCkKK3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6Okhp
ZGVQb3B1cE1lbnUoKSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNw
cAppbmRleCAyZjkyMDk4Li5kMDU2NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCkBAIC01MiwyMyArNTIsMjQgQEAgcHVi
bGljOgogICAgICAgICBJc1NlcGFyYXRvclJvbGUgPSBRdDo6VXNlclJvbGUgKyAzCiAgICAgfTsK
IAotICAgIFBvcHVwTWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGlu
dCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOworICAgIFBvcHVwTWVudUl0ZW1Nb2RlbChjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGJvb2wgbXVsdGlwbGUpOwogICAgIHZpcnR1YWwgaW50IHJv
d0NvdW50KGNvbnN0IFFNb2RlbEluZGV4JiBwYXJlbnQgPSBRTW9kZWxJbmRleCgpKSBjb25zdCB7
IHJldHVybiBtX2l0ZW1zLnNpemUoKTsgfQogICAgIHZpcnR1YWwgUVZhcmlhbnQgZGF0YShjb25z
dCBRTW9kZWxJbmRleCYsIGludCByb2xlID0gUXQ6OkRpc3BsYXlSb2xlKSBjb25zdDsKIAogICAg
IFFfSU5WT0tBQkxFIHZvaWQgc2VsZWN0KGludCk7CiAKICAgICBpbnQgc2VsZWN0ZWRPcmlnaW5h
bEluZGV4KCkgY29uc3Q7CisgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxs
b3dNdWx0aXBsZXM7IH0KIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAgICAgIEl0
ZW0oY29uc3QgV2ViUG9wdXBJdGVtJiB3ZWJQb3B1cEl0ZW0sIGNvbnN0IFFTdHJpbmcmIGdyb3Vw
LCBpbnQgb3JpZ2luYWxJbmRleCwgYm9vbCBzZWxlY3RlZCkKKyAgICAgICAgSXRlbShjb25zdCBX
ZWJQb3B1cEl0ZW0mIHdlYlBvcHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGludCBvcmln
aW5hbEluZGV4KQogICAgICAgICAgICAgOiB0ZXh0KHdlYlBvcHVwSXRlbS5tX3RleHQpCiAgICAg
ICAgICAgICAsIHRvb2xUaXAod2ViUG9wdXBJdGVtLm1fdG9vbFRpcCkKICAgICAgICAgICAgICwg
Z3JvdXAoZ3JvdXApCiAgICAgICAgICAgICAsIG9yaWdpbmFsSW5kZXgob3JpZ2luYWxJbmRleCkK
ICAgICAgICAgICAgICwgZW5hYmxlZCh3ZWJQb3B1cEl0ZW0ubV9pc0VuYWJsZWQpCi0gICAgICAg
ICAgICAsIHNlbGVjdGVkKHNlbGVjdGVkKQorICAgICAgICAgICAgLCBzZWxlY3RlZCh3ZWJQb3B1
cEl0ZW0ubV9pc1NlbGVjdGVkKQogICAgICAgICAgICAgLCBpc1NlcGFyYXRvcih3ZWJQb3B1cEl0
ZW0ubV90eXBlID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQogICAgICAgICB7IH0KIApAQCAt
ODIsMzggKzgzLDQyIEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNTZXBhcmF0b3I7CiAgICAg
fTsKIAotICAgIHZvaWQgYnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2Vi
UG9wdXBJdGVtcywgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgdm9pZCBidWlsZEl0
ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zKTsKIAogICAgIFZl
Y3RvcjxJdGVtPiBtX2l0ZW1zOwogICAgIGludCBtX3NlbGVjdGVkTW9kZWxJbmRleDsKKyAgICBi
b29sIG1fYWxsb3dNdWx0aXBsZXM7CiB9OwogCiBjbGFzcyBJdGVtU2VsZWN0b3JDb250ZXh0T2Jq
ZWN0IDogcHVibGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCiAgICAgUV9QUk9QRVJUWShRUmVj
dCBlbGVtZW50UmVjdCBSRUFEIGVsZW1lbnRSZWN0IENPTlNUQU5UIEZJTkFMKQogICAgIFFfUFJP
UEVSVFkoUU9iamVjdCogaXRlbXMgUkVBRCBpdGVtcyBDT05TVEFOVCBGSU5BTCkKKyAgICBRX1BS
T1BFUlRZKGJvb2wgYWxsb3dNdWx0aVNlbGVjdCBSRUFEIGFsbG93TXVsdGlTZWxlY3QgQ09OU1RB
TlQgRklOQUwpCiAKIHB1YmxpYzoKLSAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0
IEludFJlY3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGludCBz
ZWxlY3RlZEluZGV4KTsKKyAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0IEludFJl
Y3QmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGJvb2wgbXVsdGlw
bGUpOwogCiAgICAgUVJlY3QgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRS
ZWN0OyB9CiAgICAgUG9wdXBNZW51SXRlbU1vZGVsKiBpdGVtcygpIHsgcmV0dXJuICZtX2l0ZW1z
OyB9CisgICAgYm9vbCBhbGxvd011bHRpU2VsZWN0KCkgeyByZXR1cm4gbV9pdGVtcy5tdWx0aXBs
ZSgpOyB9CiAKICAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2VwdChpbnQgaW5kZXggPSAtMSk7Ci0g
ICAgUV9JTlZPS0FCTEUgdm9pZCByZWplY3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsgfQorICAgIFFf
SU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IGRvbmUoKTsgfQorICAgIFFfSU5WT0tBQkxF
IHZvaWQgZGlzbWlzcygpIHsgZW1pdCBkb25lKCk7IH0KIAogUV9TSUdOQUxTOgogICAgIHZvaWQg
YWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpOwotICAgIHZvaWQgcmVqZWN0ZWQoKTsKKyAg
ICB2b2lkIGRvbmUoKTsKIAogcHJpdmF0ZToKICAgICBRUmVjdCBtX2VsZW1lbnRSZWN0OwogICAg
IFBvcHVwTWVudUl0ZW1Nb2RlbCBtX2l0ZW1zOwogfTsKIAotSXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVj
dCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3Rl
ZEluZGV4KQorSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mIHdlYlBvcHVwSXRlbXMsIGJvb2wgbXVsdGlwbGUpCiAgICAgOiBtX2VsZW1lbnRSZWN0KGVs
ZW1lbnRSZWN0KQotICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KQor
ICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0ZW1zLCBtdWx0aXBsZSkKIHsKIH0KIApAQCAtMTM3LDEy
ICsxNDIsMTIgQEAgc3RhdGljIFFIYXNoPGludCwgUUJ5dGVBcnJheT4gY3JlYXRlUm9sZU5hbWVz
SGFzaCgpCiAgICAgcmV0dXJuIHJvbGVzOwogfQogCi1Qb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVw
TWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywg
aW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCkKLSAgICA6IG1fc2VsZWN0ZWRNb2RlbEluZGV4KC0x
KQorUG9wdXBNZW51SXRlbU1vZGVsOjpQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdl
YlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGJvb2wgbXVsdGlwbGUpCisgICAgOiBtX2FsbG93
TXVsdGlwbGVzKG11bHRpcGxlKQogewogICAgIHN0YXRpYyBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+
IHJvbGVzID0gY3JlYXRlUm9sZU5hbWVzSGFzaCgpOwogICAgIHNldFJvbGVOYW1lcyhyb2xlcyk7
Ci0gICAgYnVpbGRJdGVtcyh3ZWJQb3B1cEl0ZW1zLCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOwor
ICAgIGJ1aWxkSXRlbXMod2ViUG9wdXBJdGVtcyk7CiB9CiAKIFFWYXJpYW50IFBvcHVwTWVudUl0
ZW1Nb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdApA
QCAtMTc4LDIxICsxODMsMjggQEAgUVZhcmlhbnQgUG9wdXBNZW51SXRlbU1vZGVsOjpkYXRhKGNv
bnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50IHJvbGUpIGNvbnN0CiB2b2lkIFBvcHVwTWVudUl0
ZW1Nb2RlbDo6c2VsZWN0KGludCBpbmRleCkKIHsKICAgICBpbnQgb2xkSW5kZXggPSBtX3NlbGVj
dGVkTW9kZWxJbmRleDsKLSAgICBpZiAoaW5kZXggPT0gb2xkSW5kZXgpCi0gICAgICAgIHJldHVy
bjsKICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQogICAgICAg
ICByZXR1cm47CiAgICAgSXRlbSYgaXRlbSA9IG1faXRlbXNbaW5kZXhdOwogICAgIGlmICghaXRl
bS5lbmFibGVkKQogICAgICAgICByZXR1cm47CiAKLSAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsK
ICAgICBtX3NlbGVjdGVkTW9kZWxJbmRleCA9IGluZGV4OwogCi0gICAgaWYgKG9sZEluZGV4ICE9
IC0xKSB7Ci0gICAgICAgIEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKLSAgICAg
ICAgb2xkSXRlbS5zZWxlY3RlZCA9IGZhbHNlOwotICAgICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRo
aXMtPmluZGV4KG9sZEluZGV4KSwgdGhpcy0+aW5kZXgob2xkSW5kZXgpKTsKKyAgICBpZiAobV9h
bGxvd011bHRpcGxlcykKKyAgICAgICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkOwor
ICAgIGVsc2UgeworCisgICAgICAgIGlmIChpbmRleCA9PSBvbGRJbmRleCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsKKworICAgICAgICBpZiAo
b2xkSW5kZXggIT0gLTEpIHsKKyAgICAgICAgICAgIEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29s
ZEluZGV4XTsKKyAgICAgICAgICAgIG9sZEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAg
ICAgIGVtaXQgZGF0YUNoYW5nZWQodGhpcy0+aW5kZXgob2xkSW5kZXgpLCB0aGlzLT5pbmRleChv
bGRJbmRleCkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgZW1pdCBkYXRhQ2hhbmdlZCh0aGlz
LT5pbmRleChpbmRleCksIHRoaXMtPmluZGV4KGluZGV4KSk7CkBAIC0yMDUsNyArMjE3LDcgQEAg
aW50IFBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0ZWRPcmlnaW5hbEluZGV4KCkgY29uc3QKICAg
ICByZXR1cm4gbV9pdGVtc1ttX3NlbGVjdGVkTW9kZWxJbmRleF0ub3JpZ2luYWxJbmRleDsKIH0K
IAotdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBv
cHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpCit2b2lk
IFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgd2ViUG9wdXBJdGVtcykKIHsKICAgICBRU3RyaW5nIGN1cnJlbnRHcm91cDsKICAgICBtX2l0
ZW1zLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkod2ViUG9wdXBJdGVtcy5zaXplKCkpOwpAQCAtMjE1
LDEwICsyMjcsOSBAQCB2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJdGVtcyhjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgaQogICAgICAgICAgICAgY3VycmVu
dEdyb3VwID0gd2ViUG9wdXBJdGVtLm1fdGV4dDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICB9Ci0gICAgICAgIGNvbnN0IGJvb2wgc2VsZWN0ZWQgPSBpID09IHNlbGVjdGVkT3JpZ2lu
YWxJbmRleDsKLSAgICAgICAgaWYgKHNlbGVjdGVkKQorICAgICAgICBpZiAod2ViUG9wdXBJdGVt
Lm1faXNTZWxlY3RlZCkKICAgICAgICAgICAgIG1fc2VsZWN0ZWRNb2RlbEluZGV4ID0gbV9pdGVt
cy5zaXplKCk7Ci0gICAgICAgIG1faXRlbXMuYXBwZW5kKEl0ZW0od2ViUG9wdXBJdGVtLCBjdXJy
ZW50R3JvdXAsIGksIHNlbGVjdGVkKSk7CisgICAgICAgIG1faXRlbXMuYXBwZW5kKEl0ZW0od2Vi
UG9wdXBJdGVtLCBjdXJyZW50R3JvdXAsIGkpKTsKICAgICB9CiB9CiAKQEAgLTIzMiwxNCArMjQz
LDE3IEBAIFdlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQcm94eVF0KCkKIHsKIH0K
IAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJlY3Qm
IHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3QgVmVjdG9yPFdlYlBv
cHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90IHNl
bGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUoY29u
c3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlLCBjb25zdCBW
ZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYg
ZGF0YSwgaW50MzJfdCkKIHsKLSAgICBtX3NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4Owor
ICAgIG1fc2VsZWN0aW9uVHlwZSA9IChkYXRhLm11bHRpcGxlU2VsZWN0aW9ucykgPyBXZWJQb3B1
cE1lbnVQcm94eVF0OjpNdWx0aXBsZVNlbGVjdGlvbiA6IFdlYlBvcHVwTWVudVByb3h5UXQ6OlNp
bmdsZVNlbGVjdGlvbjsKKworICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QqIGNvbnRleHRP
YmplY3QgPSBuZXcgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChyZWN0LCBpdGVtcywgKG1fc2Vs
ZWN0aW9uVHlwZSA9PSBXZWJQb3B1cE1lbnVQcm94eVF0OjpNdWx0aXBsZVNlbGVjdGlvbikpOwor
ICAgIGlmICghY29udGV4dE9iamVjdCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgSXRlbVNlbGVj
dG9yQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0KHJlY3QsIGl0ZW1zLCBtX3NlbGVjdGVkSW5kZXgpOwogICAgIGNyZWF0ZUl0ZW0oY29u
dGV4dE9iamVjdCk7CiAgICAgaWYgKCFtX2l0ZW1TZWxlY3RvcikgewotICAgICAgICBub3RpZnlW
YWx1ZUNoYW5nZWQoKTsKKyAgICAgICAgaGlkZVBvcHVwTWVudSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+c2V0RGlh
bG9nQWN0aXZlKHRydWUpOwpAQCAtMjUwLDEyICsyNjQsMTcgQEAgdm9pZCBXZWJQb3B1cE1lbnVQ
cm94eVF0OjpoaWRlUG9wdXBNZW51KCkKICAgICBtX2l0ZW1TZWxlY3Rvci5jbGVhcigpOwogICAg
IFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+c2V0RGlhbG9nQWN0aXZlKGZh
bHNlKTsKICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICBub3RpZnlWYWx1ZUNoYW5nZWQoKTsK
KworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBtX2NsaWVudC0+Y2xvc2VQb3B1cE1lbnUo
KTsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgIH0KKwogfQogCiB2b2lkIFdlYlBvcHVwTWVu
dVByb3h5UXQ6OnNlbGVjdEluZGV4KGludCBpbmRleCkKIHsKLSAgICBtX3NlbGVjdGVkSW5kZXgg
PSBpbmRleDsKKyAgICBtX2NsaWVudC0+Y2hhbmdlU2VsZWN0ZWRJbmRleChpbmRleCk7CiB9CiAK
IHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlSXRlbShRT2JqZWN0KiBjb250ZXh0T2Jq
ZWN0KQpAQCAtMjY4LDIzICsyODcsMTkgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVh
dGVJdGVtKFFPYmplY3QqIGNvbnRleHRPYmplY3QpCiAKICAgICBjcmVhdGVDb250ZXh0KGNvbXBv
bmVudCwgY29udGV4dE9iamVjdCk7CiAgICAgUU9iamVjdCogb2JqZWN0ID0gY29tcG9uZW50LT5i
ZWdpbkNyZWF0ZShtX2NvbnRleHQuZ2V0KCkpOwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAg
IG1fY29udGV4dC5jbGVhcigpOworICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47Ci0g
ICAgfQogCiAgICAgbV9pdGVtU2VsZWN0b3IgPSBhZG9wdFB0cihxb2JqZWN0X2Nhc3Q8UVF1aWNr
SXRlbSo+KG9iamVjdCkpOwotICAgIGlmICghbV9pdGVtU2VsZWN0b3IpIHsKLSAgICAgICAgbV9j
b250ZXh0LmNsZWFyKCk7Ci0gICAgICAgIG1faXRlbVNlbGVjdG9yLmNsZWFyKCk7CisgICAgaWYg
KCFtX2l0ZW1TZWxlY3RvcikKICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNvbm5lY3Qo
Y29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNM
T1Qoc2VsZWN0SW5kZXgoaW50KSkpOwogCiAgICAgLy8gV2UgZW5xdWV1ZSB0aGVzZSBiZWNhdXNl
IHRoZXkgYXJlIHRyaWdnZXJlZCBieSBtX2l0ZW1TZWxlY3RvciBhbmQgd2lsbCBsZWFkIHRvIGl0
cyBkZXN0cnVjdGlvbi4KLSAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRl
ZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBTTE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1
ZWRDb25uZWN0aW9uKTsKLSAgICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChyZWplY3Rl
ZCgpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAg
Y29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoZG9uZSgpKSwgU0xPVChoaWRlUG9wdXBNZW51
KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgaWYgKG1fc2VsZWN0aW9uVHlwZSA9PSBX
ZWJQb3B1cE1lbnVQcm94eVF0OjpTaW5nbGVTZWxlY3Rpb24pCisgICAgICAgIGNvbm5lY3QoY29u
dGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1Qo
aGlkZVBvcHVwTWVudSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogCiAgICAgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5hZGRBdHRhY2hlZFByb3BlcnR5VG8obV9pdGVt
U2VsZWN0b3IuZ2V0KCkpOwogICAgIG1faXRlbVNlbGVjdG9yLT5zZXRQYXJlbnRJdGVtKG1fd2Vi
Vmlldyk7CkBAIC0zMDcsMTQgKzMyMiw2IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6Y3Jl
YXRlQ29udGV4dChRUW1sQ29tcG9uZW50KiBjb21wb25lbnQsIFFPYmplY3QqIGNvbnRlCiAgICAg
bV9jb250ZXh0LT5zZXRDb250ZXh0T2JqZWN0KGNvbnRleHRPYmplY3QpOwogfQogCi12b2lkIFdl
YlBvcHVwTWVudVByb3h5UXQ6Om5vdGlmeVZhbHVlQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1fY2xp
ZW50KSB7Ci0gICAgICAgIG1fY2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywg
bV9zZWxlY3RlZEluZGV4KTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgIH0KLX0KLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKIC8vIFNpbmNlIHdlIGRlZmluZSBRT2JqZWN0cyBpbiBXZWJQ
b3B1cE1lbnVQcm94eVF0LmNwcCwgdGhpcyB3aWxsIHRyaWdnZXIgbW9jIHRvIHJ1biBvbiAuY3Bw
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVBy
b3h5UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
LmgKaW5kZXggMjFlZWM1ZC4uYTg3Y2UxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCkBAIC00Miw2ICs0MiwxMSBAQCBjbGFzcyBX
ZWJQb3B1cE1lbnVQcm94eVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJQb3B1cE1lbnVQ
cm94eSB7CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgorICAgIGVudW0gU2VsZWN0aW9uVHlwZSB7
CisgICAgICAgIFNpbmdsZVNlbGVjdGlvbiwKKyAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb24KKyAg
ICB9OworCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlRdD4gY3JlYXRl
KFdlYlBvcHVwTWVudVByb3h5OjpDbGllbnQqIGNsaWVudCwgUVF1aWNrV2ViVmlldyogd2ViVmll
dykKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlR
dChjbGllbnQsIHdlYlZpZXcpKTsKQEAgLTYxLDEzICs2NiwxMyBAQCBwcml2YXRlOgogICAgIHZv
aWQgY3JlYXRlSXRlbShRT2JqZWN0Kik7CiAgICAgdm9pZCBjcmVhdGVDb250ZXh0KFFRbWxDb21w
b25lbnQqLCBRT2JqZWN0Kik7CiAKLSAgICB2b2lkIG5vdGlmeVZhbHVlQ2hhbmdlZCgpOworICAg
IHZvaWQgY2xvc2VQb3B1cE1lbnUoKTsKIAogICAgIE93blB0cjxRUW1sQ29udGV4dD4gbV9jb250
ZXh0OwogICAgIE93blB0cjxRUXVpY2tJdGVtPiBtX2l0ZW1TZWxlY3RvcjsKIAogICAgIFFRdWlj
a1dlYlZpZXcqIG1fd2ViVmlldzsKLSAgICBpbnQzMl90IG1fc2VsZWN0ZWRJbmRleDsKKyAgICBT
ZWxlY3Rpb25UeXBlIG1fc2VsZWN0aW9uVHlwZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQb3B1cE1lbnUuY3BwCmluZGV4IDk0MGNiOTUuLjRjMzA5ZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVu
dS5jcHAKQEAgLTU5LDkgKzU5LDE0IEBAIHZvaWQgV2ViUG9wdXBNZW51OjpkaWRDaGFuZ2VTZWxl
Y3RlZEluZGV4KGludCBuZXdJbmRleCkKICAgICBpZiAoIW1fcG9wdXBDbGllbnQpCiAgICAgICAg
IHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFUKQorICAgIGlmIChuZXdJbmRleCA+PSAwKQorICAg
ICAgICBtX3BvcHVwQ2xpZW50LT5saXN0Qm94U2VsZWN0SXRlbShuZXdJbmRleCwgbV9wb3B1cENs
aWVudC0+bXVsdGlwbGUoKSwgZmFsc2UpOworI2Vsc2UKICAgICBtX3BvcHVwQ2xpZW50LT5wb3B1
cERpZEhpZGUoKTsKICAgICBpZiAobmV3SW5kZXggPj0gMCkKICAgICAgICAgbV9wb3B1cENsaWVu
dC0+dmFsdWVDaGFuZ2VkKG5ld0luZGV4KTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYlBvcHVwTWVu
dTo6c2V0VGV4dEZvckluZGV4KGludCBpbmRleCkKQEAgLTg3LDcgKzkyLDcgQEAgVmVjdG9yPFdl
YlBvcHVwSXRlbT4gV2ViUG9wdXBNZW51Ojpwb3B1bGF0ZUl0ZW1zKCkKICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3R5bGluZyB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dy
b3VuZCBjb2xvcnMuCiAgICAgICAgICAgICAvLyBGSVhNRTogRmluZCBhIHdheSB0byBjdXN0b21p
emUgdGV4dCBjb2xvciB3aGVuIGFuIGl0ZW0gaXMgaGlnaGxpZ2h0ZWQuCiAgICAgICAgICAgICBQ
b3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUgPSBtX3BvcHVwQ2xpZW50LT5pdGVtU3R5bGUoaSk7Ci0g
ICAgICAgICAgICBpdGVtcy5hcHBlbmQoV2ViUG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6SXRlbSwg
bV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSksIGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0
ZW1TdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUoKSwgbV9wb3B1cENsaWVudC0+aXRlbVRv
b2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwgbV9wb3B1
cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaSkp
KTsKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChXZWJQb3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJ
dGVtLCBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpKSwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24o
KSwgaXRlbVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVycmlkZSgpLCBtX3BvcHVwQ2xpZW50LT5p
dGVtVG9vbFRpcChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUFjY2Vzc2liaWxpdHlUZXh0KGkpLCBt
X3BvcHVwQ2xpZW50LT5pdGVtSXNFbmFibGVkKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJl
bChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzU2VsZWN0ZWQoaSkpKTsKICAgICAgICAgfQogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQb3B1cE1lbnUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViUG9wdXBNZW51LmgKaW5kZXggOGU2NjI1MC4uNjMxOWI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5o
CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgp
IHsgbV9wYWdlID0gMDsgfQogICAgIHZvaWQgZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3
SW5kZXgpOwogICAgIHZvaWQgc2V0VGV4dEZvckluZGV4KGludCBuZXdJbmRleCk7Ci0jaWYgUExB
VEZPUk0oR1RLKSAgICAKKyNpZiBQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIFdl
YkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xpZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENs
aWVudDsgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAKaW5kZXggYjIxZjA2
Yy4uZjBhOGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHAKQEAgLTI3LDEzICsyNywx
NSBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVudS5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBv
cHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBN
ZW51RGF0YSYpCit2b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50
UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYgZGF0YSkKIHsKKyAgICBkYXRhLm11bHRpcGxl
U2VsZWN0aW9ucyA9IG1fcG9wdXBDbGllbnQtPm11bHRpcGxlKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDZmMTgyN2MuLjg2NjllMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIzMzcsMTEgKzIzMzcsMTYgQEAgdm9pZCBXZWJQ
YWdlOjpjb3VudFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9w
dGlvbnMsIHVpbnQzMl8KIAogdm9pZCBXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9y
QWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3SW5kZXgpCiB7CisgICAgY2hhbmdlU2VsZWN0ZWRJ
bmRleChuZXdJbmRleCk7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworfQorCit2b2lkIFdl
YlBhZ2U6OmNoYW5nZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBpbmRleCkKK3sKICAgICBpZiAoIW1f
YWN0aXZlUG9wdXBNZW51KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2FjdGl2ZVBvcHVwTWVu
dS0+ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChuZXdJbmRleCk7Ci0gICAgbV9hY3RpdmVQb3B1cE1l
bnUgPSAwOworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5kaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGlu
ZGV4KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25z
dCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAppbmRleCAzYjdlNmU2Li5jYzcyM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTY2OSw2ICs2NjksMTAgQEAgcHJpdmF0
ZToKICNpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBmYWlsZWRUb1Nob3dQb3B1cE1lbnUoKTsK
ICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOworICAg
IHZvaWQgc2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld0luZGV4KTsKKyNlbmRpZgogCiAgICAgdm9p
ZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAg
IHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVsKCk7CkBAIC02OTQsNiArNjk4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFNlbGVjdEl0ZW1Gcm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2Vi
Q29udGV4dE1lbnVJdGVtRGF0YSYpOwogI2VuZGlmCiAKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGVk
SW5kZXgoaW50MzJfdCBpbmRleCk7CiAgICAgdm9pZCBzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJl
ZCgpOwogCiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA4OTlhMmE5Li4zOTA1MmI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtMTYwLDcgKzE2MCwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsK
ICAgICBTZXRUZXh0Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgaW5kZXgpOwogI2lmIFBMQVRG
T1JNKEdUSykgICAgCiAgICAgRmFpbGVkVG9TaG93UG9wdXBNZW51KCk7Ci0jZW5kaWYgICAgCisj
ZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICBIaWRlUG9wdXBNZW51KCk7CisgICAgU2VsZWN0
ZWRJbmRleChpbnQzMl90IG5ld0luZGV4KTsKKyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQogICAgICMgQ29udGV4dCBtZW51LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAppbmRleCAyZTkwYTczLi4xOGU0Zjk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFn
ZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFn
ZVF0LmNwcApAQCAtMjgsOSArMjgsMTEgQEAKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3VzQ29udHJvbGxlci5oPgpAQCAtNDIyLDQgKzQyNCwx
OCBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZXJTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
Y3JpcHRzKQogICAgICAgICBwYWdlR3JvdXAtPmFkZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJl
YWROb3JtYWxXb3JsZCgpLCBzY3JpcHRzLmF0KGkpLCBLVVJMKCksIG51bGxwdHIsIG51bGxwdHIs
IEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVjdEluVG9wRnJhbWVPbmx5KTsKIH0KIAordm9pZCBX
ZWJQYWdlOjpzZWxlY3RlZEluZGV4KGludDMyX3QgbmV3SW5kZXgpCit7CisgICAgY2hhbmdlU2Vs
ZWN0ZWRJbmRleChuZXdJbmRleCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6aGlkZVBvcHVwTWVudSgp
Cit7CisgICAgaWYgKCFtX2FjdGl2ZVBvcHVwTWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9hY3RpdmVQb3B1cE1lbnUtPmNsaWVudCgpLT5wb3B1cERpZEhpZGUoKTsKKyAgICBtX2FjdGl2
ZVBvcHVwTWVudSA9IDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145393</attachid>
            <date>2012-06-01 15:51:13 -0700</date>
            <delta_ts>2012-06-01 16:31:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527_0601.patch</filename>
            <type>text/plain</type>
            <size>33533</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmOWRhMjlhLi5mZmI4NmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDYtMDEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUgYnV0dG9uIHRl
eHQgYXMgdGhlIHNlbGVjdGVkIGl0ZW0gYXQgdGhlIHNtYWxsZXN0IGluZGV4LgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0OjpsaXN0Qm94U2VsZWN0SXRlbSk6CisKIDIwMTItMDYtMDEgIFNoZXJpZmYgQm90
ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMTkyMTkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVM
aXN0LmNwcAppbmRleCA0ODE0NmUyLi5mMjQ3NmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTM0MCw3ICszNDAsMTQgQEAgdm9pZCBSZW5kZXJN
ZW51TGlzdDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRleCwgYm9vbCBmaXJlT25DaGFu
Z2UpCiAKIHZvaWQgUmVuZGVyTWVudUxpc3Q6Omxpc3RCb3hTZWxlY3RJdGVtKGludCBsaXN0SW5k
ZXgsIGJvb2wgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIGJvb2wgc2hpZnQsIGJvb2wgZmlyZU9u
Q2hhbmdlTm93KQogewotICAgIHRvSFRNTFNlbGVjdEVsZW1lbnQobm9kZSgpKS0+bGlzdEJveFNl
bGVjdEl0ZW0obGlzdEluZGV4LCBhbGxvd011bHRpcGx5U2VsZWN0aW9ucywgc2hpZnQsIGZpcmVP
bkNoYW5nZU5vdyk7CisgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNlbGVjdCA9IHRvSFRNTFNlbGVj
dEVsZW1lbnQobm9kZSgpKTsKKyAgICBzZWxlY3QtPmxpc3RCb3hTZWxlY3RJdGVtKGxpc3RJbmRl
eCwgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIHNoaWZ0LCBmaXJlT25DaGFuZ2VOb3cpOworCisj
aWYgUExBVEZPUk0oUVQpCisgICAgY29uc3QgaW50IGZpcnN0U2VsZWN0ZWRJbmRleCA9IHNlbGVj
dC0+c2VsZWN0ZWRJbmRleCgpOworICAgIGlmIChsaXN0SW5kZXggPD0gZmlyc3RTZWxlY3RlZElu
ZGV4KQorICAgIHNldFRleHRGcm9tSXRlbShmaXJzdFNlbGVjdGVkSW5kZXgpOworI2VuZGlmCiB9
CiAKIGJvb2wgUmVuZGVyTWVudUxpc3Q6Om11bHRpcGxlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAx
NjY2NzVjLi40Yzk3NzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzggQEAKKzIwMTItMDYtMDEg
IERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAgICAgICBbUXRdW1dLMl0g
QWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBs
aXN0OgorICAgICAgICAtIEFkZGVkIG11bHRpLXNlbGVjdGlvbiBmbGFnIHRvIFBsYXRmb3JtUG9w
dXBNZW51RGF0YSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGFjY2VwdCBtdWx0aXBsZSBzZWxlY3Rp
b25zIG9yIG5vdC4KKyAgICAgICAgLSBBZGRlZCBzZWxlY3RlZCBzdGF0ZSB0byBXZWJQb3B1cEl0
ZW0uCisgICAgICAgIC0gTW9kaWZpZWQgV2ViUG9wdXBNZW51UXQgdG8gc3VwcG9ydCBtdWx0aXBs
ZSBzZWxlY3Rpb25zLgorCisgICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6UGxhdGZvcm1Qb3B1
cE1lbnVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNv
ZGUpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oOgorICAgICAgICAoUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUG9wdXBJdGVtLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQb3B1cEl0ZW06OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwSXRl
bTo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUG9wdXBJdGVtLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9tdWx0aVNlbGVjdC5x
bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29t
bW9uL211bHRpc2VsZWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBvcHVwTWVudVByb3h5Lmg6CisgICAgICAgIChDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
Y2hhbmdlU2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlUHJveHk6OmNsb3NlUG9wdXBNZW51KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
V2ViUG9wdXBNZW51UHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1N
b2RlbDo6bXVsdGlwbGUpOgorICAgICAgICAoUG9wdXBNZW51SXRlbU1vZGVsKToKKyAgICAgICAg
KFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpJdGVtOjpJdGVtKToKKyAgICAgICAgKEl0ZW1T
ZWxlY3RvckNvbnRleHRPYmplY3QpOgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250
ZXh0T2JqZWN0OjphbGxvd011bHRpU2VsZWN0KToKKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVj
dG9yQ29udGV4dE9iamVjdDo6cmVqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9y
Q29udGV4dE9iamVjdDo6ZGlzbWlzcyk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNv
bnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6b25JbmRleFVw
ZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6OmFjY2Vw
dCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51SXRlbU1v
ZGVsKToKKyAgICAgICAgKFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpzZWxlY3QpOgorICAg
ICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OnNlbGVjdEl0ZW0pOgorICAgICAgICAo
V2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBNZW51UHJveHlRdDo6aGlkZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBvcHVwTWVudVByb3h5UXQ6OnNlbGVjdEluZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9w
dXBNZW51UHJveHlRdDo6Y3JlYXRlSXRlbSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBv
cHVwTWVudVByb3h5UXQuaDoKKyAgICAgICAgKFdlYlBvcHVwTWVudVByb3h5UXQpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9wdXBNZW51OjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUG9wdXBNZW51Ojpwb3B1bGF0ZUl0ZW1zKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oOgorICAgICAgICAoV2ViUG9wdXBNZW51
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KToK
KyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNoYW5nZVNlbGVj
dGVkSW5kZXgpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJQYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoaWRlUG9wdXBNZW51KToKKwogMjAxMi0w
Ni0wMSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgW1F0XSBNb3ZlIHN1c3BlbnNpb24gdG8gUXRWaWV3cG9ydEludGVyYWN0aW9uRW5n
aW5lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVE
YXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3Bw
CmluZGV4IDZjNGQyMGUuLmI2MjdhZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwCkBAIC0zOCw2ICszOCw4IEBAIFBsYXRmb3JtUG9wdXBN
ZW51RGF0YTo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhKCkKICAgICAsIG1fY2xpZW50SW5zZXRSaWdo
dCgwKQogICAgICwgbV9wb3B1cFdpZHRoKDApCiAgICAgLCBtX2l0ZW1IZWlnaHQoMCkKKyNlbGlm
IFBMQVRGT1JNKFFUKQorICAgIDogbXVsdGlwbGVTZWxlY3Rpb25zKGZhbHNlKQogI2VuZGlmCiB7
CiB9CkBAIC02Miw2ICs2NCw4IEBAIHZvaWQgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogI2VsaWYgUExBVEZPUk0o
TUFDKQogICAgIGVuY29kZXItPmVuY29kZShmb250SW5mbyk7CiAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHNob3VsZFBvcE92ZXIpOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgZW5jb2Rlci0+ZW5jb2Rl
KG11bHRpcGxlU2VsZWN0aW9ucyk7CiAjZW5kaWYKIH0KIApAQCAtOTUsNiArOTksOSBAQCBib29s
IFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgUGxhdGZvcm1QbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoZGF0YS5zaG91bGRQb3BPdmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VsaWYgUExBVEZPUk0oUVQpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZGF0YS5tdWx0aXBs
ZVNlbGVjdGlvbnMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBv
cHVwTWVudURhdGEuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURh
dGEuaAppbmRleCBmODUwMDhhLi4yMWFiZGU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCkBAIC01NSw2ICs1NSw4IEBAIHN0cnVjdCBQbGF0Zm9y
bVBvcHVwTWVudURhdGEgewogI2VsaWYgUExBVEZPUk0oTUFDKQogICAgIEZvbnRJbmZvIGZvbnRJ
bmZvOwogICAgIGJvb2wgc2hvdWxkUG9wT3ZlcjsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGJv
b2wgbXVsdGlwbGVTZWxlY3Rpb25zOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQb3B1cEl0ZW0uY3BwCmluZGV4IGE5YWMwMzIuLmMyMTVmMzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJQb3B1cEl0ZW0uY3BwCkBAIC0zOSw2ICszOSw3IEBAIFdlYlBvcHVwSXRlbTo6V2Vi
UG9wdXBJdGVtKCkKICAgICAsIG1fdGV4dERpcmVjdGlvbihMVFIpCiAgICAgLCBtX2hhc1RleHRE
aXJlY3Rpb25PdmVycmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCisgICAgLCBt
X2lzU2VsZWN0ZWQoZmFsc2UpCiB7CiB9CiAKQEAgLTQ4LDEwICs0OSwxMSBAQCBXZWJQb3B1cEl0
ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUpCiAgICAgLCBtX2hhc1RleHREaXJlY3Rpb25PdmVy
cmlkZShmYWxzZSkKICAgICAsIG1faXNFbmFibGVkKHRydWUpCiAgICAgLCBtX2lzTGFiZWwoZmFs
c2UpCisgICAgLCBtX2lzU2VsZWN0ZWQoZmFsc2UpCiB7CiB9CiAKLVdlYlBvcHVwSXRlbTo6V2Vi
UG9wdXBJdGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGlyZWN0aW9uIHRl
eHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcm
IHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVk
LCBib29sIGlzTGFiZWwpCitXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBlIHR5cGUsIGNv
bnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZWN0aW9uLCBib29sIGhhc1Rl
eHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcm
IGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29sIGlz
U2VsZWN0ZWQpCiAgICAgOiBtX3R5cGUodHlwZSkKICAgICAsIG1fdGV4dCh0ZXh0KQogICAgICwg
bV90ZXh0RGlyZWN0aW9uKHRleHREaXJlY3Rpb24pCkBAIC02MCwxMiArNjIsMTQgQEAgV2ViUG9w
dXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFRleHRE
aXJlY3Rpb24gdGV4dERpcmUKICAgICAsIG1fYWNjZXNzaWJpbGl0eVRleHQoYWNjZXNzaWJpbGl0
eVRleHQpCiAgICAgLCBtX2lzRW5hYmxlZChpc0VuYWJsZWQpCiAgICAgLCBtX2lzTGFiZWwoaXNM
YWJlbCkKKyAgICAsIG1faXNTZWxlY3RlZChpc1NlbGVjdGVkKQogewogfQogCiB2b2lkIFdlYlBv
cHVwSXRlbTo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QK
IHsKICAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQQzo6SW4oc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KG1fdHlwZSksIG1fdGV4dCwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1fdGV4dERpcmVjdGlvbiks
IG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBtX3Rvb2xUaXAsIG1fYWNjZXNzaWJpbGl0eVRl
eHQsIG1faXNFbmFibGVkLCBtX2lzTGFiZWwpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6SW4obV9pc1NlbGVjdGVkKSk7CiB9CiAKIGJvb2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCkBAIC03
OCwxMCArODIsMTUgQEAgYm9vbCBXZWJQb3B1cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqIGRlY29kZXIsIFdlYlBvcHVwSXRlbSYgaXRlbSkKICAgICBTdHJpbmcgYWNjZXNz
aWJpbGl0eVRleHQ7CiAgICAgYm9vbCBpc0VuYWJsZWQ7CiAgICAgYm9vbCBpc0xhYmVsOworICAg
IGJvb2wgaXNTZWxlY3RlZDsKKwogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91
dCh0eXBlLCB0ZXh0LCB0ZXh0RGlyZWN0aW9uLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRv
b2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwpKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgaXRlbSA9IFdlYlBvcHVwSXRlbShzdGF0aWNfY2FzdDxUeXBl
Pih0eXBlKSwgdGV4dCwgc3RhdGljX2Nhc3Q8VGV4dERpcmVjdGlvbj4odGV4dERpcmVjdGlvbiks
IGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQsIGlz
RW5hYmxlZCwgaXNMYWJlbCk7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0
KGlzU2VsZWN0ZWQpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaXRlbSA9IFdlYlBv
cHVwSXRlbShzdGF0aWNfY2FzdDxUeXBlPih0eXBlKSwgdGV4dCwgc3RhdGljX2Nhc3Q8VGV4dERp
cmVjdGlvbj4odGV4dERpcmVjdGlvbiksIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRp
cCwgYWNjZXNzaWJpbGl0eVRleHQsIGlzRW5hYmxlZCwgaXNMYWJlbCwgaXNTZWxlY3RlZCk7CiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQb3B1cEl0ZW0uaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAppbmRl
eCAzZGM2MWQ3Li5kODU4NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vi
UG9wdXBJdGVtLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCkBA
IC00NCw3ICs0NCw3IEBAIHN0cnVjdCBXZWJQb3B1cEl0ZW0gewogCiAgICAgV2ViUG9wdXBJdGVt
KCk7CiAgICAgV2ViUG9wdXBJdGVtKFR5cGUpOwotICAgIFdlYlBvcHVwSXRlbShUeXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVj
dGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNz
aWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29sIGlzTGFiZWwpOworICAgIFdlYlBvcHVw
SXRlbShUeXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGJv
b2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25zdCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0
IFN0cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wgaXNFbmFibGVkLCBib29sIGlzTGFiZWws
IGJvb2wgaXNTZWxlY3RlZCk7CiAKICAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVu
Y29kZXIqKSBjb25zdDsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgV2ViUG9wdXBJdGVtJik7CkBAIC01Nyw2ICs1Nyw3IEBAIHN0cnVjdCBXZWJQb3B1
cEl0ZW0gewogICAgIFN0cmluZyBtX2FjY2Vzc2liaWxpdHlUZXh0OwogICAgIGJvb2wgbV9pc0Vu
YWJsZWQ7CiAgICAgYm9vbCBtX2lzTGFiZWw7CisgICAgYm9vbCBtX2lzU2VsZWN0ZWQ7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3Rz
dF9tdWx0aVNlbGVjdC5xbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFk
ZjZlMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sCkBAIC0wLDAgKzEsODQg
QEAKK2ltcG9ydCBRdFF1aWNrIDIuMAoraW1wb3J0IFF0VGVzdCAxLjAKK2ltcG9ydCBRdFdlYktp
dCAzLjAKK2ltcG9ydCBRdFdlYktpdC5leHBlcmltZW50YWwgMS4wCitpbXBvcnQgVGVzdCAxLjAK
K2ltcG9ydCAiLi4vY29tbW9uIgorCitUZXN0V2ViVmlldyB7CisgICAgaWQ6IHdlYlZpZXcKKwor
ICAgIHdpZHRoOiA0MDAKKyAgICBoZWlnaHQ6IDQwMAorCisgICAgcHJvcGVydHkgaW50IHNlbGVj
dEl0ZW1zCisgICAgcHJvcGVydHkgYm9vbCB1c2VBY2NlcHREaXJlY3RseQorCisgICAgZXhwZXJp
bWVudGFsLml0ZW1TZWxlY3RvcjogSXRlbSB7CisgICAgICAgICBDb21wb25lbnQub25Db21wbGV0
ZWQ6IHsKKyAgICAgICAgICAgIHZhciBzZWxlY3RlZEluZGljZXMgPSBbMCwxLDJdCisKKyAgICAg
ICAgICAgIGlmIChtb2RlbC5hbGxvd011bHRpU2VsZWN0ICYmIHNlbGVjdEl0ZW1zKXsKKyAgICAg
ICAgICAgICAgICBpZiAodXNlQWNjZXB0RGlyZWN0bHkpIHsKKyAgICAgICAgICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCAgc2VsZWN0SXRlbXM7IGkrKykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1vZGVsLmFjY2VwdChzZWxlY3RlZEluZGljZXNbaV0pCisgICAgICAgICAgICAgICAg
ICAgIG1vZGVsLmRpc21pc3MoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgIHNlbGVjdEl0
ZW1zOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbC5pdGVtcy5zZWxlY3Qoc2Vs
ZWN0ZWRJbmRpY2VzW2ldKQorICAgICAgICAgICAgICAgICAgICBtb2RlbC5hY2NlcHQoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICghc2Vs
ZWN0SXRlbXMpCisgICAgICAgICAgICAgICAgbW9kZWwuZGlzbWlzcygpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgU2lnbmFsU3B5IHsKKyAgICAgICAgaWQ6IHRpdGxlU3B5CisgICAgICAgIHRh
cmdldDogd2ViVmlldworICAgICAgICBzaWduYWxOYW1lOiAidGl0bGVDaGFuZ2VkIgorICAgIH0K
KworICAgIFRlc3RDYXNlIHsKKyAgICAgICAgaWQ6IHRlc3RDYXNlCisgICAgICAgIG5hbWU6ICJX
ZWJWaWV3TXVsdGlJdGVtU2VsZWN0b3IiCisgICAgICAgIHdoZW46IHdpbmRvd1Nob3duCisKKyAg
ICAgICAgZnVuY3Rpb24gaW5pdCgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGly
ZWN0bHkgPSBmYWxzZQorICAgICAgICAgICAgd2ViVmlldy51cmwgPSBRdC5yZXNvbHZlZFVybCgi
Li4vY29tbW9uL211bHRpc2VsZWN0Lmh0bWwiKQorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcu
d2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgIHRpdGxlU3B5LmNsZWFyKCkKKyAg
ICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIG9wZW5JdGVtU2VsZWN0b3IoKSB7CisgICAgICAg
ICAgICB3ZWJWaWV3LmV4cGVyaW1lbnRhbC50ZXN0LnRvdWNoVGFwKHdlYlZpZXcsIDE1LCAxNSkK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHRlc3RfYWNjZXB0KCkgeworICAgICAgICAg
ICAgd2ViVmlldy5zZWxlY3RJdGVtcyA9IDIKKyAgICAgICAgICAgIG9wZW5JdGVtU2VsZWN0b3Io
KQorICAgICAgICAgICAgdGl0bGVTcHkud2FpdCgpCisgICAgICAgICAgICBjb21wYXJlKHRpdGxl
U3B5LmNvdW50LCAyKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCAiX19vcGVu
X18sX19jbG9zZWRfXyIpCisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FjY2Vw
dERpcmVjdGx5KCkgeworICAgICAgICAgICAgd2ViVmlldy51c2VBY2NlcHREaXJlY3RseSA9IHRy
dWUKKyAgICAgICAgICAgIHdlYlZpZXcuc2VsZWN0SXRlbXMgPSAzCisgICAgICAgICAgICBvcGVu
SXRlbVNlbGVjdG9yKCkKKyAgICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAg
Y29tcGFyZSh0aXRsZVNweS5jb3VudCwgMykKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50
aXRsZSwgIl9fb3Blbl9fLF9fY2xvc2VkX18sX19hbGxfXyIpCisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiB0ZXN0X3JlamVjdCgpIHsKKyAgICAgICAgICAgIHZhciBvbGRUaXRsZSA9IHdl
YlZpZXcudGl0bGUKKyAgICAgICAgICAgIHdlYlZpZXcuc2VsZWN0SXRlbXMgPSAwOworICAgICAg
ICAgICAgb3Blbkl0ZW1TZWxlY3RvcigpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0
bGUsIG9sZFRpdGxlKQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9jb21tb24vbXVsdGlzZWxlY3Qu
aHRtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29t
bW9uL211bHRpc2VsZWN0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
Zjk5Y2IxOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211bHRpc2VsZWN0Lmh0bWwKQEAgLTAsMCArMSwzMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk5vIG5ldyBzZWxlY3Rp
b24gd2FzIG1hZGU8L3RpdGxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHVwZGF0ZSgpIHsKKyAgICB2
YXIgc2Vsb3B0aW9ucyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzZWwnKS5vcHRpb25zOwor
ICAgIHZhciBvcHQ7CisgICAgdmFyIHN0ciA9IG5ldyBTdHJpbmcoIiIpOworICAgIHZhciB2YWx1
ZSA9IG5ldyBTdHJpbmcoIiIpOworICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzZWxvcHRpb25z
Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKQorICAgIHsKKyAgICAgICAgb3B0ID0gc2Vsb3B0aW9uc1tp
XTsKKyAgICAgICAgaWYgKG9wdC5zZWxlY3RlZCkgeworICAgICAgICAgICAgbmFtZSA9IG9wdC52
YWx1ZTsKKyAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoID09IDApCisgICAgICAgICAgICAgICAg
c3RyID0gbmFtZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdHIgPSBzdHIg
KyAiLCIgKyBuYW1lOworICAgICAgICB9CisgICAgfQorICAgIGRvY3VtZW50LnRpdGxlID0gc3Ry
OworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICAgIDxzZWxlY3QgaWQ9InNlbCIg
IG11bHRpcGxlPSJtdWx0aXBsZSIgIG9uY2hhbmdlPSJ1cGRhdGUoKTsiPgorICAgICAgPG9wdGlv
biB2YWx1ZT0iX19vcGVuX18iID5PcGVuPC9vcHRpb24+CisgICAgICA8b3B0aW9uIHZhbHVlPSJf
X2Nsb3NlZF9fIiA+Q2xvc2VkPC9vcHRpb24+CisgICAgICA8b3B0aW9uIHZhbHVlPSJfX2FsbF9f
IiA+QWxsPC9vcHRpb24+CisgICAgICA8L3NlbGVjdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5NWU2YzEzLi41OGZmOWM3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02NzEsNyArNjcxLDEx
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRGcm9tSXRlbUZvclBvcHVwTWVu
dShXZWJQb3B1cE1lbnVQcm94eSosIGludDMyX3QgaW5kZXgpOwogI2lmIFBMQVRGT1JNKEdUSykK
ICAgICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7Ci0jZW5kaWYgICAgCisj
ZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlU2VsZWN0ZWRJ
bmRleChpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpOworICAgIHZpcnR1YWwgdm9pZCBjbG9zZVBv
cHVwTWVudSgpOworI2VuZGlmCiAKICAgICAvLyBJbXBsZW1lbnRlZCBpbiBnZW5lcmF0ZWQgV2Vi
UGFnZVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcAogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlBhZ2VQ
cm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29y
ZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
b3B1cE1lbnVQcm94eS5oCmluZGV4IDNjZWZjMGQuLmQ1YmZhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oCkBAIC01NSw3ICs1NSwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgTmF0aXZlV2ViTW91c2VFdmVudCogY3VycmVudGx5UHJvY2Vz
c2VkTW91c2VEb3duRXZlbnQoKSA9IDA7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgICAgICB2aXJ0
dWFsIHZvaWQgZmFpbGVkVG9TaG93UG9wdXBNZW51KCkgPSAwOwotI2VuZGlmICAgICAgICAKKyNl
bmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgICAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlU2VsZWN0
ZWRJbmRleChpbnQzMl90IG5ld1NlbGVjdGVkSW5kZXgpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGNsb3NlUG9wdXBNZW51KCkgPSAwOworI2VuZGlmCiAgICAgfTsKIAogICAgIHZpcnR1YWwg
fldlYlBvcHVwTWVudVByb3h5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJQYWdlUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2Vi
UGFnZVByb3h5UXQuY3BwCmluZGV4IDVjYWZhZDUuLmZhMmM3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcApAQCAtMTE5LDQgKzExOSwxNCBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZQogfQogI2VuZGlmCiAKK3ZvaWQgV2ViUGFnZVByb3h5
OjpjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3Qgc2VsZWN0ZWRJbmRleCkKK3sKKyAgICBwcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNlbGVjdGVkSW5kZXgoc2VsZWN0ZWRJbmRl
eCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUG9wdXBNZW51KCkK
K3sKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkhpZGVQb3B1cE1lbnUo
KSwgbV9wYWdlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmNwcAppbmRleCAyZjky
MDk4Li4zMjI1NzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2Vi
UG9wdXBNZW51UHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBvcHVwTWVudVByb3h5UXQuY3BwCkBAIC01MiwyMyArNTIsMjggQEAgcHVibGljOgogICAgICAg
ICBJc1NlcGFyYXRvclJvbGUgPSBRdDo6VXNlclJvbGUgKyAzCiAgICAgfTsKIAotICAgIFBvcHVw
TWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGludCBzZWxlY3RlZE9y
aWdpbmFsSW5kZXgpOworICAgIFBvcHVwTWVudUl0ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9w
dXBJdGVtPiYsIGJvb2wgbXVsdGlwbGUpOwogICAgIHZpcnR1YWwgaW50IHJvd0NvdW50KGNvbnN0
IFFNb2RlbEluZGV4JiBwYXJlbnQgPSBRTW9kZWxJbmRleCgpKSBjb25zdCB7IHJldHVybiBtX2l0
ZW1zLnNpemUoKTsgfQogICAgIHZpcnR1YWwgUVZhcmlhbnQgZGF0YShjb25zdCBRTW9kZWxJbmRl
eCYsIGludCByb2xlID0gUXQ6OkRpc3BsYXlSb2xlKSBjb25zdDsKIAogICAgIFFfSU5WT0tBQkxF
IHZvaWQgc2VsZWN0KGludCk7CiAKICAgICBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KCkgY29u
c3Q7CisgICAgYm9vbCBtdWx0aXBsZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dNdWx0aXBsZXM7
IH0KKyAgICB2b2lkIHNlbGVjdEl0ZW0oaW50KTsKKworUV9TSUdOQUxTOgorICAgIHZvaWQgaW5k
ZXhVcGRhdGVkKCk7CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IEl0ZW0gewotICAgICAgICBJdGVt
KGNvbnN0IFdlYlBvcHVwSXRlbSYgd2ViUG9wdXBJdGVtLCBjb25zdCBRU3RyaW5nJiBncm91cCwg
aW50IG9yaWdpbmFsSW5kZXgsIGJvb2wgc2VsZWN0ZWQpCisgICAgICAgIEl0ZW0oY29uc3QgV2Vi
UG9wdXBJdGVtJiB3ZWJQb3B1cEl0ZW0sIGNvbnN0IFFTdHJpbmcmIGdyb3VwLCBpbnQgb3JpZ2lu
YWxJbmRleCkKICAgICAgICAgICAgIDogdGV4dCh3ZWJQb3B1cEl0ZW0ubV90ZXh0KQogICAgICAg
ICAgICAgLCB0b29sVGlwKHdlYlBvcHVwSXRlbS5tX3Rvb2xUaXApCiAgICAgICAgICAgICAsIGdy
b3VwKGdyb3VwKQogICAgICAgICAgICAgLCBvcmlnaW5hbEluZGV4KG9yaWdpbmFsSW5kZXgpCiAg
ICAgICAgICAgICAsIGVuYWJsZWQod2ViUG9wdXBJdGVtLm1faXNFbmFibGVkKQotICAgICAgICAg
ICAgLCBzZWxlY3RlZChzZWxlY3RlZCkKKyAgICAgICAgICAgICwgc2VsZWN0ZWQod2ViUG9wdXBJ
dGVtLm1faXNTZWxlY3RlZCkKICAgICAgICAgICAgICwgaXNTZXBhcmF0b3Iod2ViUG9wdXBJdGVt
Lm1fdHlwZSA9PSBXZWJQb3B1cEl0ZW06OlNlcGFyYXRvcikKICAgICAgICAgeyB9CiAKQEAgLTgy
LDQ3ICs4Nyw2NyBAQCBwcml2YXRlOgogICAgICAgICBib29sIGlzU2VwYXJhdG9yOwogICAgIH07
CiAKLSAgICB2b2lkIGJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBv
cHVwSXRlbXMsIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOworICAgIHZvaWQgYnVpbGRJdGVt
cyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcyk7CiAKICAgICBWZWN0
b3I8SXRlbT4gbV9pdGVtczsKICAgICBpbnQgbV9zZWxlY3RlZE1vZGVsSW5kZXg7CisgICAgYm9v
bCBtX2FsbG93TXVsdGlwbGVzOwogfTsKIAogY2xhc3MgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVj
dCA6IHB1YmxpYyBRT2JqZWN0IHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoUVJlY3Qg
ZWxlbWVudFJlY3QgUkVBRCBlbGVtZW50UmVjdCBDT05TVEFOVCBGSU5BTCkKICAgICBRX1BST1BF
UlRZKFFPYmplY3QqIGl0ZW1zIFJFQUQgaXRlbXMgQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9Q
RVJUWShib29sIGFsbG93TXVsdGlTZWxlY3QgUkVBRCBhbGxvd011bHRpU2VsZWN0IENPTlNUQU5U
IEZJTkFMKQogCiBwdWJsaWM6Ci0gICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQgc2Vs
ZWN0ZWRJbmRleCk7CisgICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJbnRSZWN0
JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBib29sIG11bHRpcGxl
KTsKIAogICAgIFFSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50UmVj
dDsgfQogICAgIFBvcHVwTWVudUl0ZW1Nb2RlbCogaXRlbXMoKSB7IHJldHVybiAmbV9pdGVtczsg
fQorICAgIGJvb2wgYWxsb3dNdWx0aVNlbGVjdCgpIHsgcmV0dXJuIG1faXRlbXMubXVsdGlwbGUo
KTsgfQogCiAgICAgUV9JTlZPS0FCTEUgdm9pZCBhY2NlcHQoaW50IGluZGV4ID0gLTEpOwotICAg
IFFfSU5WT0tBQkxFIHZvaWQgcmVqZWN0KCkgeyBlbWl0IHJlamVjdGVkKCk7IH0KKyAgICBRX0lO
Vk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCBkb25lKCk7IH0KKyAgICBRX0lOVk9LQUJMRSB2
b2lkIGRpc21pc3MoKSB7IGVtaXQgZG9uZSgpOyB9CiAKIFFfU0lHTkFMUzoKICAgICB2b2lkIGFj
Y2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KTsKLSAgICB2b2lkIHJlamVjdGVkKCk7CisgICAg
dm9pZCBkb25lKCk7CisKK3ByaXZhdGUgUV9TTE9UUzoKKyAgICB2b2lkIG9uSW5kZXhVcGRhdGUo
KTsKIAogcHJpdmF0ZToKICAgICBRUmVjdCBtX2VsZW1lbnRSZWN0OwogICAgIFBvcHVwTWVudUl0
ZW1Nb2RlbCBtX2l0ZW1zOwogfTsKIAotSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNl
bGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJbnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVj
dG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3RlZEluZGV4KQorSXRl
bVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBJ
bnRSZWN0JiBlbGVtZW50UmVjdCwgY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVw
SXRlbXMsIGJvb2wgbXVsdGlwbGUpCiAgICAgOiBtX2VsZW1lbnRSZWN0KGVsZW1lbnRSZWN0KQot
ICAgICwgbV9pdGVtcyh3ZWJQb3B1cEl0ZW1zLCBzZWxlY3RlZEluZGV4KQorICAgICwgbV9pdGVt
cyh3ZWJQb3B1cEl0ZW1zLCBtdWx0aXBsZSkKIHsKKyAgICBjb25uZWN0KCZtX2l0ZW1zLCBTSUdO
QUwoaW5kZXhVcGRhdGVkKCkpLCBTTE9UKG9uSW5kZXhVcGRhdGUoKSkpOworfQorCit2b2lkIEl0
ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Om9uSW5kZXhVcGRhdGUoKQoreworICAgIC8vIFNlbmQg
dGhlIHVwZGF0ZSBmb3IgbXVsdGktc2VsZWN0IGxpc3QuCisgICAgaWYgKG1faXRlbXMubXVsdGlw
bGUoKSkKKyAgICAgICAgZW1pdCBhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KG1faXRlbXMuc2Vs
ZWN0ZWRPcmlnaW5hbEluZGV4KCkpOwogfQogCiB2b2lkIEl0ZW1TZWxlY3RvckNvbnRleHRPYmpl
Y3Q6OmFjY2VwdChpbnQgaW5kZXgpCiB7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICBt
X2l0ZW1zLnNlbGVjdChpbmRleCk7Ci0gICAgaW50IG9yaWdpbmFsSW5kZXggPSBtX2l0ZW1zLnNl
bGVjdGVkT3JpZ2luYWxJbmRleCgpOwotICAgIGVtaXQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRl
eChvcmlnaW5hbEluZGV4KTsKKyAgICAvLyBJZiB0aGUgaW5kZXggaXMgbm90IHZhbGlkIGZvciBt
dWx0aS1zZWxlY3QgbGlzdHMsIGp1c3QgaGlkZSB0aGUgcG9wIHVwIGFzIHRoZSBzZWxlY3RlZCBp
bmRpY2VzIGhhdmUgCisgICAgLy8gYWxyZWFkeSBiZWVuIHNlbnQuCisgICAgaWYgKChpbmRleCA9
PSAtMSApICYmIG1faXRlbXMubXVsdGlwbGUoKSkKKyAgICAgICAgZW1pdCBkb25lKCk7CisgICAg
ZWxzZSB7CisgICAgICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAgICAgIG1faXRlbXMuc2Vs
ZWN0SXRlbShpbmRleCk7CisgICAgICAgIGVtaXQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleCht
X2l0ZW1zLnNlbGVjdGVkT3JpZ2luYWxJbmRleCgpKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBRSGFz
aDxpbnQsIFFCeXRlQXJyYXk+IGNyZWF0ZVJvbGVOYW1lc0hhc2goKQpAQCAtMTM3LDEyICsxNjIs
MTMgQEAgc3RhdGljIFFIYXNoPGludCwgUUJ5dGVBcnJheT4gY3JlYXRlUm9sZU5hbWVzSGFzaCgp
CiAgICAgcmV0dXJuIHJvbGVzOwogfQogCi1Qb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0
ZW1Nb2RlbChjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgaW50IHNl
bGVjdGVkT3JpZ2luYWxJbmRleCkKK1BvcHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51SXRlbU1v
ZGVsKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBib29sIG11bHRp
cGxlKQogICAgIDogbV9zZWxlY3RlZE1vZGVsSW5kZXgoLTEpCisgICAgLCBtX2FsbG93TXVsdGlw
bGVzKG11bHRpcGxlKQogewogICAgIHN0YXRpYyBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+IHJvbGVz
ID0gY3JlYXRlUm9sZU5hbWVzSGFzaCgpOwogICAgIHNldFJvbGVOYW1lcyhyb2xlcyk7Ci0gICAg
YnVpbGRJdGVtcyh3ZWJQb3B1cEl0ZW1zLCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpOworICAgIGJ1
aWxkSXRlbXMod2ViUG9wdXBJdGVtcyk7CiB9CiAKIFFWYXJpYW50IFBvcHVwTWVudUl0ZW1Nb2Rl
bDo6ZGF0YShjb25zdCBRTW9kZWxJbmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdApAQCAtMTc3
LDIyICsyMDMsMzEgQEAgUVZhcmlhbnQgUG9wdXBNZW51SXRlbU1vZGVsOjpkYXRhKGNvbnN0IFFN
b2RlbEluZGV4JiBpbmRleCwgaW50IHJvbGUpIGNvbnN0CiAKIHZvaWQgUG9wdXBNZW51SXRlbU1v
ZGVsOjpzZWxlY3QoaW50IGluZGV4KQogeworICAgIHNlbGVjdEl0ZW0oaW5kZXgpOworICAgIGVt
aXQgaW5kZXhVcGRhdGVkKCk7Cit9CisKK3ZvaWQgUG9wdXBNZW51SXRlbU1vZGVsOjpzZWxlY3RJ
dGVtKGludCBpbmRleCkKK3sKICAgICBpbnQgb2xkSW5kZXggPSBtX3NlbGVjdGVkTW9kZWxJbmRl
eDsKLSAgICBpZiAoaW5kZXggPT0gb2xkSW5kZXgpCi0gICAgICAgIHJldHVybjsKICAgICBpZiAo
aW5kZXggPCAwIHx8IGluZGV4ID49IG1faXRlbXMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAg
ICAgSXRlbSYgaXRlbSA9IG1faXRlbXNbaW5kZXhdOwogICAgIGlmICghaXRlbS5lbmFibGVkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBpdGVtLnNlbGVjdGVkID0gdHJ1ZTsKICAgICBtX3NlbGVj
dGVkTW9kZWxJbmRleCA9IGluZGV4OwotCi0gICAgaWYgKG9sZEluZGV4ICE9IC0xKSB7Ci0gICAg
ICAgIEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKLSAgICAgICAgb2xkSXRlbS5z
ZWxlY3RlZCA9IGZhbHNlOwotICAgICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KG9s
ZEluZGV4KSwgdGhpcy0+aW5kZXgob2xkSW5kZXgpKTsKKyAgICBpZiAobV9hbGxvd011bHRpcGxl
cykKKyAgICAgICAgaXRlbS5zZWxlY3RlZCA9ICFpdGVtLnNlbGVjdGVkOworICAgIGVsc2Ugewor
ICAgICAgICBpZiAoaW5kZXggPT0gb2xkSW5kZXgpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICBpZiAob2xkSW5kZXggIT0gLTEpIHsK
KyAgICAgICAgICAgIEl0ZW0mIG9sZEl0ZW0gPSBtX2l0ZW1zW29sZEluZGV4XTsKKyAgICAgICAg
ICAgIG9sZEl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIGVtaXQgZGF0YUNoYW5n
ZWQodGhpcy0+aW5kZXgob2xkSW5kZXgpLCB0aGlzLT5pbmRleChvbGRJbmRleCkpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgZW1pdCBkYXRhQ2hhbmdlZCh0aGlzLT5pbmRleChpbmRleCksIHRo
aXMtPmluZGV4KGluZGV4KSk7CkBAIC0yMDUsNyArMjQwLDcgQEAgaW50IFBvcHVwTWVudUl0ZW1N
b2RlbDo6c2VsZWN0ZWRPcmlnaW5hbEluZGV4KCkgY29uc3QKICAgICByZXR1cm4gbV9pdGVtc1tt
X3NlbGVjdGVkTW9kZWxJbmRleF0ub3JpZ2luYWxJbmRleDsKIH0KIAotdm9pZCBQb3B1cE1lbnVJ
dGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVw
SXRlbXMsIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgpCit2b2lkIFBvcHVwTWVudUl0ZW1Nb2Rl
bDo6YnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcykK
IHsKICAgICBRU3RyaW5nIGN1cnJlbnRHcm91cDsKICAgICBtX2l0ZW1zLnJlc2VydmVJbml0aWFs
Q2FwYWNpdHkod2ViUG9wdXBJdGVtcy5zaXplKCkpOwpAQCAtMjE1LDEwICsyNTAsOSBAQCB2b2lk
IFBvcHVwTWVudUl0ZW1Nb2RlbDo6YnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVt
PiYgd2ViUG9wdXBJdGVtcywgaQogICAgICAgICAgICAgY3VycmVudEdyb3VwID0gd2ViUG9wdXBJ
dGVtLm1fdGV4dDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGNv
bnN0IGJvb2wgc2VsZWN0ZWQgPSBpID09IHNlbGVjdGVkT3JpZ2luYWxJbmRleDsKLSAgICAgICAg
aWYgKHNlbGVjdGVkKQorICAgICAgICBpZiAod2ViUG9wdXBJdGVtLm1faXNTZWxlY3RlZCAmJiAh
bV9hbGxvd011bHRpcGxlcykKICAgICAgICAgICAgIG1fc2VsZWN0ZWRNb2RlbEluZGV4ID0gbV9p
dGVtcy5zaXplKCk7Ci0gICAgICAgIG1faXRlbXMuYXBwZW5kKEl0ZW0od2ViUG9wdXBJdGVtLCBj
dXJyZW50R3JvdXAsIGksIHNlbGVjdGVkKSk7CisgICAgICAgIG1faXRlbXMuYXBwZW5kKEl0ZW0o
d2ViUG9wdXBJdGVtLCBjdXJyZW50R3JvdXAsIGkpKTsKICAgICB9CiB9CiAKQEAgLTIzMiwxNCAr
MjY2LDE3IEBAIFdlYlBvcHVwTWVudVByb3h5UXQ6On5XZWJQb3B1cE1lbnVQcm94eVF0KCkKIHsK
IH0KIAotdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0IEludFJl
Y3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3QgVmVjdG9yPFdl
YlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmLCBpbnQzMl90
IHNlbGVjdGVkSW5kZXgpCit2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUo
Y29uc3QgSW50UmVjdCYgcmVjdCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlLCBjb25z
dCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0
YSYgZGF0YSwgaW50MzJfdCkKIHsKLSAgICBtX3NlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4
OworICAgIG1fc2VsZWN0aW9uVHlwZSA9IChkYXRhLm11bHRpcGxlU2VsZWN0aW9ucykgPyBXZWJQ
b3B1cE1lbnVQcm94eVF0OjpNdWx0aXBsZVNlbGVjdGlvbiA6IFdlYlBvcHVwTWVudVByb3h5UXQ6
OlNpbmdsZVNlbGVjdGlvbjsKKworICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QqIGNvbnRl
eHRPYmplY3QgPSBuZXcgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChyZWN0LCBpdGVtcywgKG1f
c2VsZWN0aW9uVHlwZSA9PSBXZWJQb3B1cE1lbnVQcm94eVF0OjpNdWx0aXBsZVNlbGVjdGlvbikp
OworICAgIGlmICghY29udGV4dE9iamVjdCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgSXRlbVNl
bGVjdG9yQ29udGV4dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBJdGVtU2VsZWN0b3JDb250
ZXh0T2JqZWN0KHJlY3QsIGl0ZW1zLCBtX3NlbGVjdGVkSW5kZXgpOwogICAgIGNyZWF0ZUl0ZW0o
Y29udGV4dE9iamVjdCk7CiAgICAgaWYgKCFtX2l0ZW1TZWxlY3RvcikgewotICAgICAgICBub3Rp
ZnlWYWx1ZUNoYW5nZWQoKTsKKyAgICAgICAgaGlkZVBvcHVwTWVudSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+c2V0
RGlhbG9nQWN0aXZlKHRydWUpOwpAQCAtMjUwLDEyICsyODcsMTYgQEAgdm9pZCBXZWJQb3B1cE1l
bnVQcm94eVF0OjpoaWRlUG9wdXBNZW51KCkKICAgICBtX2l0ZW1TZWxlY3Rvci5jbGVhcigpOwog
ICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+c2V0RGlhbG9nQWN0aXZl
KGZhbHNlKTsKICAgICBtX2NvbnRleHQuY2xlYXIoKTsKLSAgICBub3RpZnlWYWx1ZUNoYW5nZWQo
KTsKKworICAgIGlmIChtX2NsaWVudCkgeworICAgICAgICBtX2NsaWVudC0+Y2xvc2VQb3B1cE1l
bnUoKTsKKyAgICAgICAgaW52YWxpZGF0ZSgpOworICAgIH0KIH0KIAogdm9pZCBXZWJQb3B1cE1l
bnVQcm94eVF0OjpzZWxlY3RJbmRleChpbnQgaW5kZXgpCiB7Ci0gICAgbV9zZWxlY3RlZEluZGV4
ID0gaW5kZXg7CisgICAgbV9jbGllbnQtPmNoYW5nZVNlbGVjdGVkSW5kZXgoaW5kZXgpOwogfQog
CiB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0ZW0oUU9iamVjdCogY29udGV4dE9i
amVjdCkKQEAgLTI2OCwyMyArMzA5LDE5IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6Y3Jl
YXRlSXRlbShRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQogCiAgICAgY3JlYXRlQ29udGV4dChjb21w
b25lbnQsIGNvbnRleHRPYmplY3QpOwogICAgIFFPYmplY3QqIG9iamVjdCA9IGNvbXBvbmVudC0+
YmVnaW5DcmVhdGUobV9jb250ZXh0LmdldCgpKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAg
ICBtX2NvbnRleHQuY2xlYXIoKTsKKyAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwot
ICAgIH0KIAogICAgIG1faXRlbVNlbGVjdG9yID0gYWRvcHRQdHIocW9iamVjdF9jYXN0PFFRdWlj
a0l0ZW0qPihvYmplY3QpKTsKLSAgICBpZiAoIW1faXRlbVNlbGVjdG9yKSB7Ci0gICAgICAgIG1f
Y29udGV4dC5jbGVhcigpOwotICAgICAgICBtX2l0ZW1TZWxlY3Rvci5jbGVhcigpOworICAgIGlm
ICghbV9pdGVtU2VsZWN0b3IpCiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKICAgICBjb25uZWN0
KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBT
TE9UKHNlbGVjdEluZGV4KGludCkpKTsKIAogICAgIC8vIFdlIGVucXVldWUgdGhlc2UgYmVjYXVz
ZSB0aGV5IGFyZSB0cmlnZ2VyZWQgYnkgbV9pdGVtU2VsZWN0b3IgYW5kIHdpbGwgbGVhZCB0byBp
dHMgZGVzdHJ1Y3Rpb24uCi0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0
ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkpLCBRdDo6UXVl
dWVkQ29ubmVjdGlvbik7Ci0gICAgY29ubmVjdChjb250ZXh0T2JqZWN0LCBTSUdOQUwocmVqZWN0
ZWQoKSksIFNMT1QoaGlkZVBvcHVwTWVudSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAg
IGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGRvbmUoKSksIFNMT1QoaGlkZVBvcHVwTWVu
dSgpKSwgUXQ6OlF1ZXVlZENvbm5lY3Rpb24pOworICAgIGlmIChtX3NlbGVjdGlvblR5cGUgPT0g
V2ViUG9wdXBNZW51UHJveHlRdDo6U2luZ2xlU2VsZWN0aW9uKQorICAgICAgICBjb25uZWN0KGNv
bnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KGludCkpLCBTTE9U
KGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKIAogICAgIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+YWRkQXR0YWNoZWRQcm9wZXJ0eVRvKG1faXRl
bVNlbGVjdG9yLmdldCgpKTsKICAgICBtX2l0ZW1TZWxlY3Rvci0+c2V0UGFyZW50SXRlbShtX3dl
YlZpZXcpOwpAQCAtMzA3LDE0ICszNDQsNiBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNy
ZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVudCogY29tcG9uZW50LCBRT2JqZWN0KiBjb250ZQogICAg
IG1fY29udGV4dC0+c2V0Q29udGV4dE9iamVjdChjb250ZXh0T2JqZWN0KTsKIH0KIAotdm9pZCBX
ZWJQb3B1cE1lbnVQcm94eVF0Ojpub3RpZnlWYWx1ZUNoYW5nZWQoKQotewotICAgIGlmIChtX2Ns
aWVudCkgewotICAgICAgICBtX2NsaWVudC0+dmFsdWVDaGFuZ2VkRm9yUG9wdXBNZW51KHRoaXMs
IG1fc2VsZWN0ZWRJbmRleCk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKLSAgICB9Ci19Ci0KIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAvLyBTaW5jZSB3ZSBkZWZpbmUgUU9iamVjdHMgaW4gV2Vi
UG9wdXBNZW51UHJveHlRdC5jcHAsIHRoaXMgd2lsbCB0cmlnZ2VyIG1vYyB0byBydW4gb24gLmNw
cC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQ
cm94eVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5oCmluZGV4IDIxZWVjNWQuLjNlYjU0NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApAQCAtNDIsNiArNDIsMTEgQEAgY2xhc3Mg
V2ViUG9wdXBNZW51UHJveHlRdCA6IHB1YmxpYyBRT2JqZWN0LCBwdWJsaWMgV2ViUG9wdXBNZW51
UHJveHkgewogICAgIFFfT0JKRUNUCiAKIHB1YmxpYzoKKyAgICBlbnVtIFNlbGVjdGlvblR5cGUg
eworICAgICAgICBTaW5nbGVTZWxlY3Rpb24sCisgICAgICAgIE11bHRpcGxlU2VsZWN0aW9uCisg
ICAgfTsKKwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5UXQ+IGNyZWF0
ZShXZWJQb3B1cE1lbnVQcm94eTo6Q2xpZW50KiBjbGllbnQsIFFRdWlja1dlYlZpZXcqIHdlYlZp
ZXcpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlBvcHVwTWVudVByb3h5
UXQoY2xpZW50LCB3ZWJWaWV3KSk7CkBAIC02MSwxMyArNjYsMTEgQEAgcHJpdmF0ZToKICAgICB2
b2lkIGNyZWF0ZUl0ZW0oUU9iamVjdCopOwogICAgIHZvaWQgY3JlYXRlQ29udGV4dChRUW1sQ29t
cG9uZW50KiwgUU9iamVjdCopOwogCi0gICAgdm9pZCBub3RpZnlWYWx1ZUNoYW5nZWQoKTsKLQog
ICAgIE93blB0cjxRUW1sQ29udGV4dD4gbV9jb250ZXh0OwogICAgIE93blB0cjxRUXVpY2tJdGVt
PiBtX2l0ZW1TZWxlY3RvcjsKIAogICAgIFFRdWlja1dlYlZpZXcqIG1fd2ViVmlldzsKLSAgICBp
bnQzMl90IG1fc2VsZWN0ZWRJbmRleDsKKyAgICBTZWxlY3Rpb25UeXBlIG1fc2VsZWN0aW9uVHlw
ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCmluZGV4IDk0
MGNiOTUuLjRjMzA5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKQEAgLTU5LDkgKzU5LDE0IEBAIHZv
aWQgV2ViUG9wdXBNZW51OjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGludCBuZXdJbmRleCkKICAg
ICBpZiAoIW1fcG9wdXBDbGllbnQpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFBMQVRGT1JNKFFU
KQorICAgIGlmIChuZXdJbmRleCA+PSAwKQorICAgICAgICBtX3BvcHVwQ2xpZW50LT5saXN0Qm94
U2VsZWN0SXRlbShuZXdJbmRleCwgbV9wb3B1cENsaWVudC0+bXVsdGlwbGUoKSwgZmFsc2UpOwor
I2Vsc2UKICAgICBtX3BvcHVwQ2xpZW50LT5wb3B1cERpZEhpZGUoKTsKICAgICBpZiAobmV3SW5k
ZXggPj0gMCkKICAgICAgICAgbV9wb3B1cENsaWVudC0+dmFsdWVDaGFuZ2VkKG5ld0luZGV4KTsK
KyNlbmRpZgogfQogCiB2b2lkIFdlYlBvcHVwTWVudTo6c2V0VGV4dEZvckluZGV4KGludCBpbmRl
eCkKQEAgLTg3LDcgKzkyLDcgQEAgVmVjdG9yPFdlYlBvcHVwSXRlbT4gV2ViUG9wdXBNZW51Ojpw
b3B1bGF0ZUl0ZW1zKCkKICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Igc3R5
bGluZyB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvcnMuCiAgICAgICAgICAgICAv
LyBGSVhNRTogRmluZCBhIHdheSB0byBjdXN0b21pemUgdGV4dCBjb2xvciB3aGVuIGFuIGl0ZW0g
aXMgaGlnaGxpZ2h0ZWQuCiAgICAgICAgICAgICBQb3B1cE1lbnVTdHlsZSBpdGVtU3R5bGUgPSBt
X3BvcHVwQ2xpZW50LT5pdGVtU3R5bGUoaSk7Ci0gICAgICAgICAgICBpdGVtcy5hcHBlbmQoV2Vi
UG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6SXRlbSwgbV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSks
IGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3Zl
cnJpZGUoKSwgbV9wb3B1cENsaWVudC0+aXRlbVRvb2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0
ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSwg
bV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaSkpKTsKKyAgICAgICAgICAgIGl0ZW1zLmFwcGVu
ZChXZWJQb3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJdGVtLCBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4
dChpKSwgaXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0eWxlLmhhc1RleHREaXJlY3Rp
b25PdmVycmlkZSgpLCBtX3BvcHVwQ2xpZW50LT5pdGVtVG9vbFRpcChpKSwgbV9wb3B1cENsaWVu
dC0+aXRlbUFjY2Vzc2liaWxpdHlUZXh0KGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNFbmFibGVk
KGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJlbChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlz
U2VsZWN0ZWQoaSkpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKaW5kZXggOGU2
NjI1MC4uNjMxOWI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpc2Nvbm5lY3RGcm9tUGFnZSgpIHsgbV9wYWdlID0gMDsgfQogICAgIHZvaWQg
ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3SW5kZXgpOwogICAgIHZvaWQgc2V0VGV4dEZv
ckluZGV4KGludCBuZXdJbmRleCk7Ci0jaWYgUExBVEZPUk0oR1RLKSAgICAKKyNpZiBQTEFURk9S
TShHVEspIHx8IFBMQVRGT1JNKFFUKQogICAgIFdlYkNvcmU6OlBvcHVwTWVudUNsaWVudCogY2xp
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9wb3B1cENsaWVudDsgfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBN
ZW51UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9X
ZWJQb3B1cE1lbnVRdC5jcHAKaW5kZXggYjIxZjA2Yy4uZjBhOGY3NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQ
b3B1cE1lbnVRdC5jcHAKQEAgLTI3LDEzICsyNywxNSBAQAogI2luY2x1ZGUgIldlYlBvcHVwTWVu
dS5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9Qb3B1cE1lbnVDbGllbnQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi12b2lkIFdlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEo
Y29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0YSYpCit2b2lkIFdlYlBvcHVwTWVu
dTo6c2V0VXBQbGF0Zm9ybURhdGEoY29uc3QgSW50UmVjdCYsIFBsYXRmb3JtUG9wdXBNZW51RGF0
YSYgZGF0YSkKIHsKKyAgICBkYXRhLm11bHRpcGxlU2VsZWN0aW9ucyA9IG1fcG9wdXBDbGllbnQt
Pm11bHRpcGxlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDZmMTgyN2MuLjg2NjllMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAg
LTIzMzcsMTEgKzIzMzcsMTYgQEAgdm9pZCBXZWJQYWdlOjpjb3VudFN0cmluZ01hdGNoZXMoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl8KIAogdm9pZCBXZWJQ
YWdlOjpkaWRDaGFuZ2VTZWxlY3RlZEluZGV4Rm9yQWN0aXZlUG9wdXBNZW51KGludDMyX3QgbmV3
SW5kZXgpCiB7CisgICAgY2hhbmdlU2VsZWN0ZWRJbmRleChuZXdJbmRleCk7CisgICAgbV9hY3Rp
dmVQb3B1cE1lbnUgPSAwOworfQorCit2b2lkIFdlYlBhZ2U6OmNoYW5nZVNlbGVjdGVkSW5kZXgo
aW50MzJfdCBpbmRleCkKK3sKICAgICBpZiAoIW1fYWN0aXZlUG9wdXBNZW51KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBtX2FjdGl2ZVBvcHVwTWVudS0+ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChu
ZXdJbmRleCk7Ci0gICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworICAgIG1fYWN0aXZlUG9wdXBN
ZW51LT5kaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGluZGV4KTsKIH0KIAogdm9pZCBXZWJQYWdlOjpk
aWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5lbChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCAzYjdlNmU2
Li5jYzcyM2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKQEAgLTY2OSw2ICs2NjksMTAgQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShHVEspCiAgICAg
dm9pZCBmYWlsZWRUb1Nob3dQb3B1cE1lbnUoKTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQor
ICAgIHZvaWQgaGlkZVBvcHVwTWVudSgpOworICAgIHZvaWQgc2VsZWN0ZWRJbmRleChpbnQzMl90
IG5ld0luZGV4KTsKKyNlbmRpZgogCiAgICAgdm9pZCBkaWRDaG9vc2VGaWxlc0Zvck9wZW5QYW5l
bChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIHZvaWQgZGlkQ2FuY2VsRm9yT3BlblBhbmVs
KCk7CkBAIC02OTQsNiArNjk4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFNlbGVjdEl0ZW1G
cm9tQWN0aXZlQ29udGV4dE1lbnUoY29uc3QgV2ViQ29udGV4dE1lbnVJdGVtRGF0YSYpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIGNoYW5nZVNlbGVjdGVkSW5kZXgoaW50MzJfdCBpbmRleCk7CiAgICAg
dm9pZCBzZXRDYW5TdGFydE1lZGlhVGltZXJGaXJlZCgpOwogCiAgICAgc3RhdGljIGJvb2wgcGxh
dGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBmMTRmY2I2Li42YTU4YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMTYxLDcgKzE2
MSwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIHsKICAgICBTZXRUZXh0Rm9yQWN0aXZlUG9wdXBN
ZW51KGludDMyX3QgaW5kZXgpOwogI2lmIFBMQVRGT1JNKEdUSykgICAgCiAgICAgRmFpbGVkVG9T
aG93UG9wdXBNZW51KCk7Ci0jZW5kaWYgICAgCisjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAg
ICBIaWRlUG9wdXBNZW51KCk7CisgICAgU2VsZWN0ZWRJbmRleChpbnQzMl90IG5ld0luZGV4KTsK
KyNlbmRpZgogICAgIAogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogICAgICMgQ29udGV4dCBt
ZW51LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dl
YlBhZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFn
ZVF0LmNwcAppbmRleCAyZTkwYTczLi4xOGU0Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcApAQCAtMjgsOSArMjgsMTEgQEAK
ICNpbmNsdWRlICJXZWJQYWdlLmgiCiAKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2lu
Y2x1ZGUgIlBvcHVwTWVudUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkVkaXRvckNsaWVudC5oIgog
I2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
KyNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9ET01XcmFwcGVyV29ybGQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvY3Vz
Q29udHJvbGxlci5oPgpAQCAtNDIyLDQgKzQyNCwxOCBAQCB2b2lkIFdlYlBhZ2U6OnNldFVzZXJT
Y3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzY3JpcHRzKQogICAgICAgICBwYWdlR3JvdXAt
PmFkZFVzZXJTY3JpcHRUb1dvcmxkKG1haW5UaHJlYWROb3JtYWxXb3JsZCgpLCBzY3JpcHRzLmF0
KGkpLCBLVVJMKCksIG51bGxwdHIsIG51bGxwdHIsIEluamVjdEF0RG9jdW1lbnRFbmQsIEluamVj
dEluVG9wRnJhbWVPbmx5KTsKIH0KIAordm9pZCBXZWJQYWdlOjpzZWxlY3RlZEluZGV4KGludDMy
X3QgbmV3SW5kZXgpCit7CisgICAgY2hhbmdlU2VsZWN0ZWRJbmRleChuZXdJbmRleCk7Cit9CisK
K3ZvaWQgV2ViUGFnZTo6aGlkZVBvcHVwTWVudSgpCit7CisgICAgaWYgKCFtX2FjdGl2ZVBvcHVw
TWVudSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmNsaWVudCgp
LT5wb3B1cERpZEhpZGUoKTsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145404</attachid>
            <date>2012-06-01 16:31:16 -0700</date>
            <delta_ts>2012-07-19 10:39:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>85527_0601.patch</filename>
            <type>text/plain</type>
            <size>33585</size>
            <attacher name="Dinu Jacob">dinu.jacob</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA4YjI1MzkxLi44NGRkZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDYtMDEgIERpbnUgSmFjb2IgIDxkaW51LmphY29iQG5va2lhLmNvbT4KKworICAg
ICAgICBbUXRdW1dLMl0gQWRkIHN1cHBvcnQgZm9yIG11bHRpLXNlbGVjdCBsaXN0CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTUyNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB0aGUgYnV0dG9uIHRl
eHQgYXMgdGhlIHNlbGVjdGVkIGl0ZW0gYXQgdGhlIHNtYWxsZXN0IGluZGV4LgorCisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck1lbnVMaXN0OjpsaXN0Qm94U2VsZWN0SXRlbSk6CisKIDIwMTItMDYtMDEgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBPdmVyZmxvdyBzY3JvbGxpbmcgZG9lc24n
dCBuZWVkIHRvIGNyZWF0ZSBhIHN0YWNraW5nIGNvbnRleHQgaXMgdGhlIG92ZXJmbG93IGlzIGhp
ZGRlbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXgg
NDgxNDZlMi4uZjI0NzZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwCkBAIC0zNDAsNyArMzQwLDE0IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnZhbHVl
Q2hhbmdlZCh1bnNpZ25lZCBsaXN0SW5kZXgsIGJvb2wgZmlyZU9uQ2hhbmdlKQogCiB2b2lkIFJl
bmRlck1lbnVMaXN0OjpsaXN0Qm94U2VsZWN0SXRlbShpbnQgbGlzdEluZGV4LCBib29sIGFsbG93
TXVsdGlwbHlTZWxlY3Rpb25zLCBib29sIHNoaWZ0LCBib29sIGZpcmVPbkNoYW5nZU5vdykKIHsK
LSAgICB0b0hUTUxTZWxlY3RFbGVtZW50KG5vZGUoKSktPmxpc3RCb3hTZWxlY3RJdGVtKGxpc3RJ
bmRleCwgYWxsb3dNdWx0aXBseVNlbGVjdGlvbnMsIHNoaWZ0LCBmaXJlT25DaGFuZ2VOb3cpOwor
ICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3QgPSB0b0hUTUxTZWxlY3RFbGVtZW50KG5vZGUo
KSk7CisgICAgc2VsZWN0LT5saXN0Qm94U2VsZWN0SXRlbShsaXN0SW5kZXgsIGFsbG93TXVsdGlw
bHlTZWxlY3Rpb25zLCBzaGlmdCwgZmlyZU9uQ2hhbmdlTm93KTsKKworI2lmIFBMQVRGT1JNKFFU
KQorICAgIGNvbnN0IGludCBmaXJzdFNlbGVjdGVkSW5kZXggPSBzZWxlY3QtPnNlbGVjdGVkSW5k
ZXgoKTsKKyAgICBpZiAobGlzdEluZGV4IDw9IGZpcnN0U2VsZWN0ZWRJbmRleCkKKyAgICBzZXRU
ZXh0RnJvbUl0ZW0oZmlyc3RTZWxlY3RlZEluZGV4KTsKKyNlbmRpZgogfQogCiBib29sIFJlbmRl
ck1lbnVMaXN0OjptdWx0aXBsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDNmMjQ1NS4uNzc4NTA4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA2LTAxICBEaW51IEphY29iICA8
ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIEFkZCBzdXBwb3J0IGZv
ciBtdWx0aS1zZWxlY3QgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODU1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aS1zZWxlY3QgbGlzdDoKKyAgICAgICAg
LSBBZGRlZCBtdWx0aS1zZWxlY3Rpb24gZmxhZyB0byBQbGF0Zm9ybVBvcHVwTWVudURhdGEgdG8g
aW5kaWNhdGUgd2hldGhlciB0byBhY2NlcHQgbXVsdGlwbGUgc2VsZWN0aW9ucyBvciBub3QuCisg
ICAgICAgIC0gQWRkZWQgc2VsZWN0ZWQgc3RhdGUgdG8gV2ViUG9wdXBJdGVtLgorICAgICAgICAt
IE1vZGlmaWVkIFdlYlBvcHVwTWVudVF0IHRvIHN1cHBvcnQgbXVsdGlwbGUgc2VsZWN0aW9ucy4K
KworICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJl
ZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaDoKKyAgICAgICAgKFBsYXRmb3JtUG9wdXBNZW51RGF0
YSk6CisgICAgICAgICogU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBJ
dGVtOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRlY29kZSk6Cisg
ICAgICAgICogU2hhcmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVj
dC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAg
ICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94
eS5oOgorICAgICAgICAoQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUGFnZVBy
b3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5nZVNlbGVjdGVk
SW5kZXgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpjbG9zZVBvcHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVBy
b3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6Om11bHRpcGxl
KToKKyAgICAgICAgKFBvcHVwTWVudUl0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJLaXQ6OlBvcHVw
TWVudUl0ZW1Nb2RlbDo6SXRlbTo6SXRlbSk6CisgICAgICAgIChJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6YWxs
b3dNdWx0aVNlbGVjdCk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmpl
Y3Q6OnJlamVjdCk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6
OmRpc21pc3MpOgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjpJ
dGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChX
ZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Om9uSW5kZXhVcGRhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjphY2NlcHQpOgorICAgICAgICAo
V2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0ZW1Nb2RlbCk6CisgICAgICAg
IChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0KToKKyAgICAgICAgKFdlYktpdDo6
UG9wdXBNZW51SXRlbU1vZGVsOjpzZWxlY3RJdGVtKToKKyAgICAgICAgKFdlYktpdDo6UG9wdXBN
ZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2ViUG9wdXBNZW51
UHJveHlRdDo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVBy
b3h5UXQ6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94
eVF0OjpzZWxlY3RJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5UXQ6
OmNyZWF0ZUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0
Lmg6CisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eVF0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudTo6cG9wdWxhdGVJdGVtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKFdlYlBvcHVwTWVudSk6CisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudSk6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFuZ2VTZWxlY3RlZEluZGV4KToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAoV2ViUGFnZSk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZTo6aGlkZVBvcHVwTWVudSk6CisKIDIwMTItMDYtMDEgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMTMz
NTYyMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04ODExOQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAppbmRl
eCA2YzRkMjBlLi5iNjI3YWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZv
cm1Qb3B1cE1lbnVEYXRhLmNwcApAQCAtMzgsNiArMzgsOCBAQCBQbGF0Zm9ybVBvcHVwTWVudURh
dGE6OlBsYXRmb3JtUG9wdXBNZW51RGF0YSgpCiAgICAgLCBtX2NsaWVudEluc2V0UmlnaHQoMCkK
ICAgICAsIG1fcG9wdXBXaWR0aCgwKQogICAgICwgbV9pdGVtSGVpZ2h0KDApCisjZWxpZiBQTEFU
Rk9STShRVCkKKyAgICA6IG11bHRpcGxlU2VsZWN0aW9ucyhmYWxzZSkKICNlbmRpZgogewogfQpA
QCAtNjIsNiArNjQsOCBAQCB2b2lkIFBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKENvcmVJ
UEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKICNlbGlmIFBMQVRGT1JNKE1BQykK
ICAgICBlbmNvZGVyLT5lbmNvZGUoZm9udEluZm8pOwogICAgIGVuY29kZXItPmVuY29kZShzaG91
bGRQb3BPdmVyKTsKKyNlbGlmIFBMQVRGT1JNKFFUKQorICAgIGVuY29kZXItPmVuY29kZShtdWx0
aXBsZVNlbGVjdGlvbnMpOwogI2VuZGlmCiB9CiAKQEAgLTk1LDYgKzk5LDkgQEAgYm9vbCBQbGF0
Zm9ybVBvcHVwTWVudURhdGE6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFBsYXRmb3JtUG8KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKGRhdGEuc2hvdWxkUG9wT3ZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbGlm
IFBMQVRGT1JNKFFUKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGRhdGEubXVsdGlwbGVTZWxl
Y3Rpb25zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCiAgICAgCiAgICAgcmV0dXJu
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1l
bnVEYXRhLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgK
aW5kZXggZjg1MDA4YS4uMjFhYmRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVk
L1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0
Zm9ybVBvcHVwTWVudURhdGEuaApAQCAtNTUsNiArNTUsOCBAQCBzdHJ1Y3QgUGxhdGZvcm1Qb3B1
cE1lbnVEYXRhIHsKICNlbGlmIFBMQVRGT1JNKE1BQykKICAgICBGb250SW5mbyBmb250SW5mbzsK
ICAgICBib29sIHNob3VsZFBvcE92ZXI7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBib29sIG11
bHRpcGxlU2VsZWN0aW9uczsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9w
dXBJdGVtLmNwcAppbmRleCBhOWFjMDMyLi5jMjE1ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUG9wdXBJdGVtLmNwcApAQCAtMzksNiArMzksNyBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVw
SXRlbSgpCiAgICAgLCBtX3RleHREaXJlY3Rpb24oTFRSKQogICAgICwgbV9oYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGUoZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQorICAgICwgbV9pc1Nl
bGVjdGVkKGZhbHNlKQogewogfQogCkBAIC00OCwxMCArNDksMTEgQEAgV2ViUG9wdXBJdGVtOjpX
ZWJQb3B1cEl0ZW0oVHlwZSB0eXBlKQogICAgICwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUo
ZmFsc2UpCiAgICAgLCBtX2lzRW5hYmxlZCh0cnVlKQogICAgICwgbV9pc0xhYmVsKGZhbHNlKQor
ICAgICwgbV9pc1NlbGVjdGVkKGZhbHNlKQogewogfQogCi1XZWJQb3B1cEl0ZW06OldlYlBvcHVw
SXRlbShUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGly
ZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29s
VGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9v
bCBpc0xhYmVsKQorV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGly
ZWN0aW9uT3ZlcnJpZGUsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBhY2Nl
c3NpYmlsaXR5VGV4dCwgYm9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCwgYm9vbCBpc1NlbGVj
dGVkKQogICAgIDogbV90eXBlKHR5cGUpCiAgICAgLCBtX3RleHQodGV4dCkKICAgICAsIG1fdGV4
dERpcmVjdGlvbih0ZXh0RGlyZWN0aW9uKQpAQCAtNjAsMTIgKzYyLDE0IEBAIFdlYlBvcHVwSXRl
bTo6V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGlyZWN0
aW9uIHRleHREaXJlCiAgICAgLCBtX2FjY2Vzc2liaWxpdHlUZXh0KGFjY2Vzc2liaWxpdHlUZXh0
KQogICAgICwgbV9pc0VuYWJsZWQoaXNFbmFibGVkKQogICAgICwgbV9pc0xhYmVsKGlzTGFiZWwp
CisgICAgLCBtX2lzU2VsZWN0ZWQoaXNTZWxlY3RlZCkKIHsKIH0KIAogdm9pZCBXZWJQb3B1cEl0
ZW06OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAg
ICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6OkluKHN0YXRpY19jYXN0PHVpbnQzMl90PihtX3R5
cGUpLCBtX3RleHQsIHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3RleHREaXJlY3Rpb24pLCBtX2hh
c1RleHREaXJlY3Rpb25PdmVycmlkZSwgbV90b29sVGlwLCBtX2FjY2Vzc2liaWxpdHlUZXh0LCBt
X2lzRW5hYmxlZCwgbV9pc0xhYmVsKSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKENvcmVJUEM6Oklu
KG1faXNTZWxlY3RlZCkpOwogfQogCiBib29sIFdlYlBvcHVwSXRlbTo6ZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViUG9wdXBJdGVtJiBpdGVtKQpAQCAtNzgsMTAg
KzgyLDE1IEBAIGJvb2wgV2ViUG9wdXBJdGVtOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNv
ZGVyKiBkZWNvZGVyLCBXZWJQb3B1cEl0ZW0mIGl0ZW0pCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxp
dHlUZXh0OwogICAgIGJvb2wgaXNFbmFibGVkOwogICAgIGJvb2wgaXNMYWJlbDsKKyAgICBib29s
IGlzU2VsZWN0ZWQ7CisKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQodHlw
ZSwgdGV4dCwgdGV4dERpcmVjdGlvbiwgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCB0b29sVGlw
LCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsKSkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGl0ZW0gPSBXZWJQb3B1cEl0ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlw
ZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rpb24+KHRleHREaXJlY3Rpb24pLCBoYXNU
ZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFjY2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJs
ZWQsIGlzTGFiZWwpOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKENvcmVJUEM6Ok91dChpc1Nl
bGVjdGVkKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGl0ZW0gPSBXZWJQb3B1cEl0
ZW0oc3RhdGljX2Nhc3Q8VHlwZT4odHlwZSksIHRleHQsIHN0YXRpY19jYXN0PFRleHREaXJlY3Rp
b24+KHRleHREaXJlY3Rpb24pLCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIHRvb2xUaXAsIGFj
Y2Vzc2liaWxpdHlUZXh0LCBpc0VuYWJsZWQsIGlzTGFiZWwsIGlzU2VsZWN0ZWQpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9w
dXBJdGVtLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgKaW5kZXggM2Rj
NjFkNy4uZDg1ODRiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVw
SXRlbS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaApAQCAtNDQs
NyArNDQsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVtIHsKIAogICAgIFdlYlBvcHVwSXRlbSgpOwog
ICAgIFdlYlBvcHVwSXRlbShUeXBlKTsKLSAgICBXZWJQb3B1cEl0ZW0oVHlwZSwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhhc1RleHREaXJlY3Rpb25P
dmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJpbmcmIGFjY2Vzc2liaWxp
dHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsKTsKKyAgICBXZWJQb3B1cEl0ZW0o
VHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBib29sIGhh
c1RleHREaXJlY3Rpb25PdmVycmlkZSwgY29uc3QgU3RyaW5nJiB0b29sVGlwLCBjb25zdCBTdHJp
bmcmIGFjY2Vzc2liaWxpdHlUZXh0LCBib29sIGlzRW5hYmxlZCwgYm9vbCBpc0xhYmVsLCBib29s
IGlzU2VsZWN0ZWQpOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVy
KikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciosIFdlYlBvcHVwSXRlbSYpOwpAQCAtNTcsNiArNTcsNyBAQCBzdHJ1Y3QgV2ViUG9wdXBJdGVt
IHsKICAgICBTdHJpbmcgbV9hY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBib29sIG1faXNFbmFibGVk
OwogICAgIGJvb2wgbV9pc0xhYmVsOworICAgIGJvb2wgbV9pc1NlbGVjdGVkOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVs
dGlTZWxlY3QucW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxZGY2ZTMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3FtbHRlc3RzL1dlYlZpZXcvdHN0X211bHRpU2VsZWN0LnFtbApAQCAtMCwwICsxLDg0IEBACitp
bXBvcnQgUXRRdWljayAyLjAKK2ltcG9ydCBRdFRlc3QgMS4wCitpbXBvcnQgUXRXZWJLaXQgMy4w
CitpbXBvcnQgUXRXZWJLaXQuZXhwZXJpbWVudGFsIDEuMAoraW1wb3J0IFRlc3QgMS4wCitpbXBv
cnQgIi4uL2NvbW1vbiIKKworVGVzdFdlYlZpZXcgeworICAgIGlkOiB3ZWJWaWV3CisKKyAgICB3
aWR0aDogNDAwCisgICAgaGVpZ2h0OiA0MDAKKworICAgIHByb3BlcnR5IGludCBzZWxlY3RJdGVt
cworICAgIHByb3BlcnR5IGJvb2wgdXNlQWNjZXB0RGlyZWN0bHkKKworICAgIGV4cGVyaW1lbnRh
bC5pdGVtU2VsZWN0b3I6IEl0ZW0geworICAgICAgICAgQ29tcG9uZW50Lm9uQ29tcGxldGVkOiB7
CisgICAgICAgICAgICB2YXIgc2VsZWN0ZWRJbmRpY2VzID0gWzAsMSwyXQorCisgICAgICAgICAg
ICBpZiAobW9kZWwuYWxsb3dNdWx0aVNlbGVjdCAmJiBzZWxlY3RJdGVtcyl7CisgICAgICAgICAg
ICAgICAgaWYgKHVzZUFjY2VwdERpcmVjdGx5KSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgIHNlbGVjdEl0ZW1zOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RlbC5hY2NlcHQoc2VsZWN0ZWRJbmRpY2VzW2ldKQorICAgICAgICAgICAgICAgICAgICBt
b2RlbC5kaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8ICBzZWxlY3RJdGVtczsg
aSsrKQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwuaXRlbXMuc2VsZWN0KHNlbGVjdGVk
SW5kaWNlc1tpXSkKKyAgICAgICAgICAgICAgICAgICAgbW9kZWwuYWNjZXB0KCk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoIXNlbGVjdEl0
ZW1zKQorICAgICAgICAgICAgICAgIG1vZGVsLmRpc21pc3MoKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIFNpZ25hbFNweSB7CisgICAgICAgIGlkOiB0aXRsZVNweQorICAgICAgICB0YXJnZXQ6
IHdlYlZpZXcKKyAgICAgICAgc2lnbmFsTmFtZTogInRpdGxlQ2hhbmdlZCIKKyAgICB9CisKKyAg
ICBUZXN0Q2FzZSB7CisgICAgICAgIGlkOiB0ZXN0Q2FzZQorICAgICAgICBuYW1lOiAiV2ViVmll
d011bHRpSXRlbVNlbGVjdG9yIgorICAgICAgICB3aGVuOiB3aW5kb3dTaG93bgorCisgICAgICAg
IGZ1bmN0aW9uIGluaXQoKSB7CisgICAgICAgICAgICB3ZWJWaWV3LnVzZUFjY2VwdERpcmVjdGx5
ID0gZmFsc2UKKyAgICAgICAgICAgIHdlYlZpZXcudXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2Nv
bW1vbi9tdWx0aXNlbGVjdC5odG1sIikKKyAgICAgICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRG
b3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICB0aXRsZVNweS5jbGVhcigpCisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiBvcGVuSXRlbVNlbGVjdG9yKCkgeworICAgICAgICAgICAg
d2ViVmlldy5leHBlcmltZW50YWwudGVzdC50b3VjaFRhcCh3ZWJWaWV3LCAxNSwgMTUpCisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0ZXN0X2FjY2VwdCgpIHsKKyAgICAgICAgICAgIHdl
YlZpZXcuc2VsZWN0SXRlbXMgPSAyCisgICAgICAgICAgICBvcGVuSXRlbVNlbGVjdG9yKCkKKyAg
ICAgICAgICAgIHRpdGxlU3B5LndhaXQoKQorICAgICAgICAgICAgY29tcGFyZSh0aXRsZVNweS5j
b3VudCwgMikKKyAgICAgICAgICAgIGNvbXBhcmUod2ViVmlldy50aXRsZSwgIl9fb3Blbl9fLF9f
Y2xvc2VkX18iKQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gdGVzdF9hY2NlcHREaXJl
Y3RseSgpIHsKKyAgICAgICAgICAgIHdlYlZpZXcudXNlQWNjZXB0RGlyZWN0bHkgPSB0cnVlCisg
ICAgICAgICAgICB3ZWJWaWV3LnNlbGVjdEl0ZW1zID0gMworICAgICAgICAgICAgb3Blbkl0ZW1T
ZWxlY3RvcigpCisgICAgICAgICAgICB0aXRsZVNweS53YWl0KCkKKyAgICAgICAgICAgIGNvbXBh
cmUodGl0bGVTcHkuY291bnQsIDMpCisgICAgICAgICAgICBjb21wYXJlKHdlYlZpZXcudGl0bGUs
ICJfX29wZW5fXyxfX2Nsb3NlZF9fLF9fYWxsX18iKQorICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gdGVzdF9yZWplY3QoKSB7CisgICAgICAgICAgICB2YXIgb2xkVGl0bGUgPSB3ZWJWaWV3
LnRpdGxlCisgICAgICAgICAgICB3ZWJWaWV3LnNlbGVjdEl0ZW1zID0gMDsKKyAgICAgICAgICAg
IG9wZW5JdGVtU2VsZWN0b3IoKQorICAgICAgICAgICAgY29tcGFyZSh3ZWJWaWV3LnRpdGxlLCBv
bGRUaXRsZSkKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvY29tbW9uL211bHRpc2VsZWN0Lmh0bWwg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9t
dWx0aXNlbGVjdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OWNi
MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3FtbHRlc3RzL2NvbW1vbi9tdWx0aXNlbGVjdC5odG1sCkBAIC0wLDAgKzEsMzMgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5ObyBuZXcgc2VsZWN0aW9uIHdh
cyBtYWRlPC90aXRsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiB1cGRhdGUoKSB7CisgICAgdmFyIHNl
bG9wdGlvbnMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VsJykub3B0aW9uczsKKyAgICB2
YXIgb3B0OworICAgIHZhciBzdHIgPSBuZXcgU3RyaW5nKCIiKTsKKyAgICB2YXIgdmFsdWUgPSBu
ZXcgU3RyaW5nKCIiKTsKKyAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc2Vsb3B0aW9ucy5sZW5n
dGg7IGkgPCBsZW47IGkrKykKKyAgICB7CisgICAgICAgIG9wdCA9IHNlbG9wdGlvbnNbaV07Cisg
ICAgICAgIGlmIChvcHQuc2VsZWN0ZWQpIHsKKyAgICAgICAgICAgIG5hbWUgPSBvcHQudmFsdWU7
CisgICAgICAgICAgICBpZiAoc3RyLmxlbmd0aCA9PSAwKQorICAgICAgICAgICAgICAgIHN0ciA9
IG5hbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc3RyID0gc3RyICsgIiwi
ICsgbmFtZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBkb2N1bWVudC50aXRsZSA9IHN0cjsKK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgICA8c2VsZWN0IGlkPSJzZWwiICBtdWx0
aXBsZT0ibXVsdGlwbGUiICBvbmNoYW5nZT0idXBkYXRlKCk7Ij4KKyAgICAgIDxvcHRpb24gdmFs
dWU9Il9fb3Blbl9fIiA+T3Blbjwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iX19jbG9z
ZWRfXyIgPkNsb3NlZDwvb3B0aW9uPgorICAgICAgPG9wdGlvbiB2YWx1ZT0iX19hbGxfXyIgPkFs
bDwvb3B0aW9uPgorICAgICAgPC9zZWxlY3Q+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTVlNmMxMy4uNThmZjljNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNjcxLDcgKzY3MSwxMSBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0RnJvbUl0ZW1Gb3JQb3B1cE1lbnUoV2Vi
UG9wdXBNZW51UHJveHkqLCBpbnQzMl90IGluZGV4KTsKICNpZiBQTEFURk9STShHVEspCiAgICAg
dmlydHVhbCB2b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpOwotI2VuZGlmICAgIAorI2VuZGlm
CisjaWYgUExBVEZPUk0oUVQpCisgICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbGVjdGVkSW5kZXgo
aW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQb3B1cE1l
bnUoKTsKKyNlbmRpZgogCiAgICAgLy8gSW1wbGVtZW50ZWQgaW4gZ2VuZXJhdGVkIFdlYlBhZ2VQ
cm94eU1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJQYWdlUHJveHlN
ZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBvcHVwTWVudVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBN
ZW51UHJveHkuaAppbmRleCAzY2VmYzBkLi5kNWJmYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUG9wdXBNZW51UHJveHkuaApAQCAtNTUsNyArNTUsMTEgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIE5hdGl2ZVdlYk1vdXNlRXZlbnQqIGN1cnJlbnRseVByb2Nlc3NlZE1v
dXNlRG93bkV2ZW50KCkgPSAwOwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgdmlydHVhbCB2
b2lkIGZhaWxlZFRvU2hvd1BvcHVwTWVudSgpID0gMDsKLSNlbmRpZiAgICAgICAgCisjZW5kaWYK
KyNpZiBQTEFURk9STShRVCkKKyAgICAgICAgdmlydHVhbCB2b2lkIGNoYW5nZVNlbGVjdGVkSW5k
ZXgoaW50MzJfdCBuZXdTZWxlY3RlZEluZGV4KSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBj
bG9zZVBvcHVwTWVudSgpID0gMDsKKyNlbmRpZgogICAgIH07CiAKICAgICB2aXJ0dWFsIH5XZWJQ
b3B1cE1lbnVQcm94eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViUGFnZVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQ
cm94eVF0LmNwcAppbmRleCA1Y2FmYWQ1Li5mYTJjNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKQEAgLTExOSw0ICsxMTksMTQgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OndpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWUKIH0KICNlbmRpZgogCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2hh
bmdlU2VsZWN0ZWRJbmRleChpbnQzMl90IHNlbGVjdGVkSW5kZXgpCit7CisgICAgcHJvY2Vzcygp
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZWxlY3RlZEluZGV4KHNlbGVjdGVkSW5kZXgpLCBt
X3BhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpjbG9zZVBvcHVwTWVudSgpCit7Cisg
ICAgcHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpIaWRlUG9wdXBNZW51KCksIG1f
cGFnZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5jcHAKaW5kZXggMmY5MjA5OC4u
MzIyNTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVw
TWVudVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1
cE1lbnVQcm94eVF0LmNwcApAQCAtNTIsMjMgKzUyLDI4IEBAIHB1YmxpYzoKICAgICAgICAgSXNT
ZXBhcmF0b3JSb2xlID0gUXQ6OlVzZXJSb2xlICsgMwogICAgIH07CiAKLSAgICBQb3B1cE1lbnVJ
dGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mLCBpbnQgc2VsZWN0ZWRPcmlnaW5h
bEluZGV4KTsKKyAgICBQb3B1cE1lbnVJdGVtTW9kZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRl
bT4mLCBib29sIG11bHRpcGxlKTsKICAgICB2aXJ0dWFsIGludCByb3dDb3VudChjb25zdCBRTW9k
ZWxJbmRleCYgcGFyZW50ID0gUU1vZGVsSW5kZXgoKSkgY29uc3QgeyByZXR1cm4gbV9pdGVtcy5z
aXplKCk7IH0KICAgICB2aXJ0dWFsIFFWYXJpYW50IGRhdGEoY29uc3QgUU1vZGVsSW5kZXgmLCBp
bnQgcm9sZSA9IFF0OjpEaXNwbGF5Um9sZSkgY29uc3Q7CiAKICAgICBRX0lOVk9LQUJMRSB2b2lk
IHNlbGVjdChpbnQpOwogCiAgICAgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCgpIGNvbnN0Owor
ICAgIGJvb2wgbXVsdGlwbGUoKSBjb25zdCB7IHJldHVybiBtX2FsbG93TXVsdGlwbGVzOyB9Cisg
ICAgdm9pZCBzZWxlY3RJdGVtKGludCk7CisKK1FfU0lHTkFMUzoKKyAgICB2b2lkIGluZGV4VXBk
YXRlZCgpOwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBJdGVtIHsKLSAgICAgICAgSXRlbShjb25z
dCBXZWJQb3B1cEl0ZW0mIHdlYlBvcHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGludCBv
cmlnaW5hbEluZGV4LCBib29sIHNlbGVjdGVkKQorICAgICAgICBJdGVtKGNvbnN0IFdlYlBvcHVw
SXRlbSYgd2ViUG9wdXBJdGVtLCBjb25zdCBRU3RyaW5nJiBncm91cCwgaW50IG9yaWdpbmFsSW5k
ZXgpCiAgICAgICAgICAgICA6IHRleHQod2ViUG9wdXBJdGVtLm1fdGV4dCkKICAgICAgICAgICAg
ICwgdG9vbFRpcCh3ZWJQb3B1cEl0ZW0ubV90b29sVGlwKQogICAgICAgICAgICAgLCBncm91cChn
cm91cCkKICAgICAgICAgICAgICwgb3JpZ2luYWxJbmRleChvcmlnaW5hbEluZGV4KQogICAgICAg
ICAgICAgLCBlbmFibGVkKHdlYlBvcHVwSXRlbS5tX2lzRW5hYmxlZCkKLSAgICAgICAgICAgICwg
c2VsZWN0ZWQoc2VsZWN0ZWQpCisgICAgICAgICAgICAsIHNlbGVjdGVkKHdlYlBvcHVwSXRlbS5t
X2lzU2VsZWN0ZWQpCiAgICAgICAgICAgICAsIGlzU2VwYXJhdG9yKHdlYlBvcHVwSXRlbS5tX3R5
cGUgPT0gV2ViUG9wdXBJdGVtOjpTZXBhcmF0b3IpCiAgICAgICAgIHsgfQogCkBAIC04Miw0NyAr
ODcsNjcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc1NlcGFyYXRvcjsKICAgICB9OwogCi0g
ICAgdm9pZCBidWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0
ZW1zLCBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KTsKKyAgICB2b2lkIGJ1aWxkSXRlbXMoY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMpOwogCiAgICAgVmVjdG9yPEl0
ZW0+IG1faXRlbXM7CiAgICAgaW50IG1fc2VsZWN0ZWRNb2RlbEluZGV4OworICAgIGJvb2wgbV9h
bGxvd011bHRpcGxlczsKIH07CiAKIGNsYXNzIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QgOiBw
dWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKICAgICBRX1BST1BFUlRZKFFSZWN0IGVsZW1l
bnRSZWN0IFJFQUQgZWxlbWVudFJlY3QgQ09OU1RBTlQgRklOQUwpCiAgICAgUV9QUk9QRVJUWShR
T2JqZWN0KiBpdGVtcyBSRUFEIGl0ZW1zIENPTlNUQU5UIEZJTkFMKQorICAgIFFfUFJPUEVSVFko
Ym9vbCBhbGxvd011bHRpU2VsZWN0IFJFQUQgYWxsb3dNdWx0aVNlbGVjdCBDT05TVEFOVCBGSU5B
TCkKIAogcHVibGljOgotICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QoY29uc3QgSW50UmVj
dCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgaW50IHNlbGVjdGVk
SW5kZXgpOworICAgIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QoY29uc3QgSW50UmVjdCYgZWxl
bWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgYm9vbCBtdWx0aXBsZSk7CiAK
ICAgICBRUmVjdCBlbGVtZW50UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudFJlY3Q7IH0K
ICAgICBQb3B1cE1lbnVJdGVtTW9kZWwqIGl0ZW1zKCkgeyByZXR1cm4gJm1faXRlbXM7IH0KKyAg
ICBib29sIGFsbG93TXVsdGlTZWxlY3QoKSB7IHJldHVybiBtX2l0ZW1zLm11bHRpcGxlKCk7IH0K
IAogICAgIFFfSU5WT0tBQkxFIHZvaWQgYWNjZXB0KGludCBpbmRleCA9IC0xKTsKLSAgICBRX0lO
Vk9LQUJMRSB2b2lkIHJlamVjdCgpIHsgZW1pdCByZWplY3RlZCgpOyB9CisgICAgUV9JTlZPS0FC
TEUgdm9pZCByZWplY3QoKSB7IGVtaXQgZG9uZSgpOyB9CisgICAgUV9JTlZPS0FCTEUgdm9pZCBk
aXNtaXNzKCkgeyBlbWl0IGRvbmUoKTsgfQogCiBRX1NJR05BTFM6CiAgICAgdm9pZCBhY2NlcHRl
ZFdpdGhPcmlnaW5hbEluZGV4KGludCk7Ci0gICAgdm9pZCByZWplY3RlZCgpOworICAgIHZvaWQg
ZG9uZSgpOworCitwcml2YXRlIFFfU0xPVFM6CisgICAgdm9pZCBvbkluZGV4VXBkYXRlKCk7CiAK
IHByaXZhdGU6CiAgICAgUVJlY3QgbV9lbGVtZW50UmVjdDsKICAgICBQb3B1cE1lbnVJdGVtTW9k
ZWwgbV9pdGVtczsKIH07CiAKLUl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Okl0ZW1TZWxlY3Rv
ckNvbnRleHRPYmplY3QoY29uc3QgSW50UmVjdCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxX
ZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRJbmRleCkKK0l0ZW1TZWxl
Y3RvckNvbnRleHRPYmplY3Q6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QoY29uc3QgSW50UmVj
dCYgZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1z
LCBib29sIG11bHRpcGxlKQogICAgIDogbV9lbGVtZW50UmVjdChlbGVtZW50UmVjdCkKLSAgICAs
IG1faXRlbXMod2ViUG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCkKKyAgICAsIG1faXRlbXMod2Vi
UG9wdXBJdGVtcywgbXVsdGlwbGUpCiB7CisgICAgY29ubmVjdCgmbV9pdGVtcywgU0lHTkFMKGlu
ZGV4VXBkYXRlZCgpKSwgU0xPVChvbkluZGV4VXBkYXRlKCkpKTsKK30KKwordm9pZCBJdGVtU2Vs
ZWN0b3JDb250ZXh0T2JqZWN0OjpvbkluZGV4VXBkYXRlKCkKK3sKKyAgICAvLyBTZW5kIHRoZSB1
cGRhdGUgZm9yIG11bHRpLXNlbGVjdCBsaXN0LgorICAgIGlmIChtX2l0ZW1zLm11bHRpcGxlKCkp
CisgICAgICAgIGVtaXQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChtX2l0ZW1zLnNlbGVjdGVk
T3JpZ2luYWxJbmRleCgpKTsKIH0KIAogdm9pZCBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0Ojph
Y2NlcHQoaW50IGluZGV4KQogewotICAgIGlmIChpbmRleCAhPSAtMSkKLSAgICAgICAgbV9pdGVt
cy5zZWxlY3QoaW5kZXgpOwotICAgIGludCBvcmlnaW5hbEluZGV4ID0gbV9pdGVtcy5zZWxlY3Rl
ZE9yaWdpbmFsSW5kZXgoKTsKLSAgICBlbWl0IGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgob3Jp
Z2luYWxJbmRleCk7CisgICAgLy8gSWYgdGhlIGluZGV4IGlzIG5vdCB2YWxpZCBmb3IgbXVsdGkt
c2VsZWN0IGxpc3RzLCBqdXN0IGhpZGUgdGhlIHBvcCB1cCBhcyB0aGUgc2VsZWN0ZWQgaW5kaWNl
cyBoYXZlIAorICAgIC8vIGFscmVhZHkgYmVlbiBzZW50LgorICAgIGlmICgoaW5kZXggPT0gLTEg
KSAmJiBtX2l0ZW1zLm11bHRpcGxlKCkpCisgICAgICAgIGVtaXQgZG9uZSgpOworICAgIGVsc2Ug
eworICAgICAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgICAgICBtX2l0ZW1zLnNlbGVjdEl0
ZW0oaW5kZXgpOworICAgICAgICBlbWl0IGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgobV9pdGVt
cy5zZWxlY3RlZE9yaWdpbmFsSW5kZXgoKSk7CisgICAgfQogfQogCiBzdGF0aWMgUUhhc2g8aW50
LCBRQnl0ZUFycmF5PiBjcmVhdGVSb2xlTmFtZXNIYXNoKCkKQEAgLTEzNywxMiArMTYyLDEzIEBA
IHN0YXRpYyBRSGFzaDxpbnQsIFFCeXRlQXJyYXk+IGNyZWF0ZVJvbGVOYW1lc0hhc2goKQogICAg
IHJldHVybiByb2xlczsKIH0KIAotUG9wdXBNZW51SXRlbU1vZGVsOjpQb3B1cE1lbnVJdGVtTW9k
ZWwoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGludCBzZWxlY3Rl
ZE9yaWdpbmFsSW5kZXgpCitQb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0ZW1Nb2RlbChj
b25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgYm9vbCBtdWx0aXBsZSkK
ICAgICA6IG1fc2VsZWN0ZWRNb2RlbEluZGV4KC0xKQorICAgICwgbV9hbGxvd011bHRpcGxlcyht
dWx0aXBsZSkKIHsKICAgICBzdGF0aWMgUUhhc2g8aW50LCBRQnl0ZUFycmF5PiByb2xlcyA9IGNy
ZWF0ZVJvbGVOYW1lc0hhc2goKTsKICAgICBzZXRSb2xlTmFtZXMocm9sZXMpOwotICAgIGJ1aWxk
SXRlbXMod2ViUG9wdXBJdGVtcywgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KTsKKyAgICBidWlsZEl0
ZW1zKHdlYlBvcHVwSXRlbXMpOwogfQogCiBRVmFyaWFudCBQb3B1cE1lbnVJdGVtTW9kZWw6OmRh
dGEoY29uc3QgUU1vZGVsSW5kZXgmIGluZGV4LCBpbnQgcm9sZSkgY29uc3QKQEAgLTE3NywyMiAr
MjAzLDMxIEBAIFFWYXJpYW50IFBvcHVwTWVudUl0ZW1Nb2RlbDo6ZGF0YShjb25zdCBRTW9kZWxJ
bmRleCYgaW5kZXgsIGludCByb2xlKSBjb25zdAogCiB2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6
c2VsZWN0KGludCBpbmRleCkKIHsKKyAgICBzZWxlY3RJdGVtKGluZGV4KTsKKyAgICBlbWl0IGlu
ZGV4VXBkYXRlZCgpOworfQorCit2b2lkIFBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0SXRlbShp
bnQgaW5kZXgpCit7CiAgICAgaW50IG9sZEluZGV4ID0gbV9zZWxlY3RlZE1vZGVsSW5kZXg7Ci0g
ICAgaWYgKGluZGV4ID09IG9sZEluZGV4KQotICAgICAgICByZXR1cm47CiAgICAgaWYgKGluZGV4
IDwgMCB8fCBpbmRleCA+PSBtX2l0ZW1zLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIEl0
ZW0mIGl0ZW0gPSBtX2l0ZW1zW2luZGV4XTsKICAgICBpZiAoIWl0ZW0uZW5hYmxlZCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaXRlbS5zZWxlY3RlZCA9IHRydWU7CiAgICAgbV9zZWxlY3RlZE1v
ZGVsSW5kZXggPSBpbmRleDsKLQotICAgIGlmIChvbGRJbmRleCAhPSAtMSkgewotICAgICAgICBJ
dGVtJiBvbGRJdGVtID0gbV9pdGVtc1tvbGRJbmRleF07Ci0gICAgICAgIG9sZEl0ZW0uc2VsZWN0
ZWQgPSBmYWxzZTsKLSAgICAgICAgZW1pdCBkYXRhQ2hhbmdlZCh0aGlzLT5pbmRleChvbGRJbmRl
eCksIHRoaXMtPmluZGV4KG9sZEluZGV4KSk7CisgICAgaWYgKG1fYWxsb3dNdWx0aXBsZXMpCisg
ICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSAhaXRlbS5zZWxlY3RlZDsKKyAgICBlbHNlIHsKKyAgICAg
ICAgaWYgKGluZGV4ID09IG9sZEluZGV4KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
dGVtLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKG9sZEluZGV4ICE9IC0xKSB7CisgICAg
ICAgICAgICBJdGVtJiBvbGRJdGVtID0gbV9pdGVtc1tvbGRJbmRleF07CisgICAgICAgICAgICBv
bGRJdGVtLnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRo
aXMtPmluZGV4KG9sZEluZGV4KSwgdGhpcy0+aW5kZXgob2xkSW5kZXgpKTsKKyAgICAgICAgfQog
ICAgIH0KIAogICAgIGVtaXQgZGF0YUNoYW5nZWQodGhpcy0+aW5kZXgoaW5kZXgpLCB0aGlzLT5p
bmRleChpbmRleCkpOwpAQCAtMjA1LDcgKzI0MCw3IEBAIGludCBQb3B1cE1lbnVJdGVtTW9kZWw6
OnNlbGVjdGVkT3JpZ2luYWxJbmRleCgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXRlbXNbbV9zZWxl
Y3RlZE1vZGVsSW5kZXhdLm9yaWdpbmFsSW5kZXg7CiB9CiAKLXZvaWQgUG9wdXBNZW51SXRlbU1v
ZGVsOjpidWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1z
LCBpbnQgc2VsZWN0ZWRPcmlnaW5hbEluZGV4KQordm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OmJ1
aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMpCiB7CiAg
ICAgUVN0cmluZyBjdXJyZW50R3JvdXA7CiAgICAgbV9pdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KHdlYlBvcHVwSXRlbXMuc2l6ZSgpKTsKQEAgLTIxNSwxMCArMjUwLDkgQEAgdm9pZCBQb3B1
cE1lbnVJdGVtTW9kZWw6OmJ1aWxkSXRlbXMoY29uc3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdl
YlBvcHVwSXRlbXMsIGkKICAgICAgICAgICAgIGN1cnJlbnRHcm91cCA9IHdlYlBvcHVwSXRlbS5t
X3RleHQ7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBjb25zdCBi
b29sIHNlbGVjdGVkID0gaSA9PSBzZWxlY3RlZE9yaWdpbmFsSW5kZXg7Ci0gICAgICAgIGlmIChz
ZWxlY3RlZCkKKyAgICAgICAgaWYgKHdlYlBvcHVwSXRlbS5tX2lzU2VsZWN0ZWQgJiYgIW1fYWxs
b3dNdWx0aXBsZXMpCiAgICAgICAgICAgICBtX3NlbGVjdGVkTW9kZWxJbmRleCA9IG1faXRlbXMu
c2l6ZSgpOwotICAgICAgICBtX2l0ZW1zLmFwcGVuZChJdGVtKHdlYlBvcHVwSXRlbSwgY3VycmVu
dEdyb3VwLCBpLCBzZWxlY3RlZCkpOworICAgICAgICBtX2l0ZW1zLmFwcGVuZChJdGVtKHdlYlBv
cHVwSXRlbSwgY3VycmVudEdyb3VwLCBpKSk7CiAgICAgfQogfQogCkBAIC0yMzIsMTQgKzI2Niwx
NyBAQCBXZWJQb3B1cE1lbnVQcm94eVF0Ojp+V2ViUG9wdXBNZW51UHJveHlRdCgpCiB7CiB9CiAK
LXZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShjb25zdCBJbnRSZWN0JiBy
ZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUsIGNvbnN0IFZlY3RvcjxXZWJQb3B1
cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiwgaW50MzJfdCBzZWxl
Y3RlZEluZGV4KQordm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpzaG93UG9wdXBNZW51KGNvbnN0
IEludFJlY3QmIHJlY3QsIFdlYkNvcmU6OlRleHREaXJlY3Rpb24sIGRvdWJsZSwgY29uc3QgVmVj
dG9yPFdlYlBvcHVwSXRlbT4mIGl0ZW1zLCBjb25zdCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRh
dGEsIGludDMyX3QpCiB7Ci0gICAgbV9zZWxlY3RlZEluZGV4ID0gc2VsZWN0ZWRJbmRleDsKKyAg
ICBtX3NlbGVjdGlvblR5cGUgPSAoZGF0YS5tdWx0aXBsZVNlbGVjdGlvbnMpID8gV2ViUG9wdXBN
ZW51UHJveHlRdDo6TXVsdGlwbGVTZWxlY3Rpb24gOiBXZWJQb3B1cE1lbnVQcm94eVF0OjpTaW5n
bGVTZWxlY3Rpb247CisKKyAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KiBjb250ZXh0T2Jq
ZWN0ID0gbmV3IEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QocmVjdCwgaXRlbXMsIChtX3NlbGVj
dGlvblR5cGUgPT0gV2ViUG9wdXBNZW51UHJveHlRdDo6TXVsdGlwbGVTZWxlY3Rpb24pKTsKKyAg
ICBpZiAoIWNvbnRleHRPYmplY3QpCisgICAgICAgIHJldHVybjsKIAotICAgIEl0ZW1TZWxlY3Rv
ckNvbnRleHRPYmplY3QqIGNvbnRleHRPYmplY3QgPSBuZXcgSXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdChyZWN0LCBpdGVtcywgbV9zZWxlY3RlZEluZGV4KTsKICAgICBjcmVhdGVJdGVtKGNvbnRl
eHRPYmplY3QpOwogICAgIGlmICghbV9pdGVtU2VsZWN0b3IpIHsKLSAgICAgICAgbm90aWZ5VmFs
dWVDaGFuZ2VkKCk7CisgICAgICAgIGhpZGVQb3B1cE1lbnUoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnNldERpYWxv
Z0FjdGl2ZSh0cnVlKTsKQEAgLTI1MCwxMiArMjg3LDE2IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJv
eHlRdDo6aGlkZVBvcHVwTWVudSgpCiAgICAgbV9pdGVtU2VsZWN0b3IuY2xlYXIoKTsKICAgICBR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPnNldERpYWxvZ0FjdGl2ZShmYWxz
ZSk7CiAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0gICAgbm90aWZ5VmFsdWVDaGFuZ2VkKCk7CisK
KyAgICBpZiAobV9jbGllbnQpIHsKKyAgICAgICAgbV9jbGllbnQtPmNsb3NlUG9wdXBNZW51KCk7
CisgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51UHJv
eHlRdDo6c2VsZWN0SW5kZXgoaW50IGluZGV4KQogewotICAgIG1fc2VsZWN0ZWRJbmRleCA9IGlu
ZGV4OworICAgIG1fY2xpZW50LT5jaGFuZ2VTZWxlY3RlZEluZGV4KGluZGV4KTsKIH0KIAogdm9p
ZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVJdGVtKFFPYmplY3QqIGNvbnRleHRPYmplY3Qp
CkBAIC0yNjgsMjMgKzMwOSwxOSBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmNyZWF0ZUl0
ZW0oUU9iamVjdCogY29udGV4dE9iamVjdCkKIAogICAgIGNyZWF0ZUNvbnRleHQoY29tcG9uZW50
LCBjb250ZXh0T2JqZWN0KTsKICAgICBRT2JqZWN0KiBvYmplY3QgPSBjb21wb25lbnQtPmJlZ2lu
Q3JlYXRlKG1fY29udGV4dC5nZXQoKSk7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgbV9j
b250ZXh0LmNsZWFyKCk7CisgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKICAgICBtX2l0ZW1TZWxlY3RvciA9IGFkb3B0UHRyKHFvYmplY3RfY2FzdDxRUXVpY2tJdGVt
Kj4ob2JqZWN0KSk7Ci0gICAgaWYgKCFtX2l0ZW1TZWxlY3RvcikgewotICAgICAgICBtX2NvbnRl
eHQuY2xlYXIoKTsKLSAgICAgICAgbV9pdGVtU2VsZWN0b3IuY2xlYXIoKTsKKyAgICBpZiAoIW1f
aXRlbVNlbGVjdG9yKQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgY29ubmVjdChjb250
ZXh0T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpKSwgU0xPVChz
ZWxlY3RJbmRleChpbnQpKSk7CiAKICAgICAvLyBXZSBlbnF1ZXVlIHRoZXNlIGJlY2F1c2UgdGhl
eSBhcmUgdHJpZ2dlcmVkIGJ5IG1faXRlbVNlbGVjdG9yIGFuZCB3aWxsIGxlYWQgdG8gaXRzIGRl
c3RydWN0aW9uLgotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKGFjY2VwdGVkV2l0
aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVudSgpKSwgUXQ6OlF1ZXVlZENv
bm5lY3Rpb24pOwotICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFMKHJlamVjdGVkKCkp
LCBTTE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICBjb25u
ZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChkb25lKCkpLCBTTE9UKGhpZGVQb3B1cE1lbnUoKSks
IFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKKyAgICBpZiAobV9zZWxlY3Rpb25UeXBlID09IFdlYlBv
cHVwTWVudVByb3h5UXQ6OlNpbmdsZVNlbGVjdGlvbikKKyAgICAgICAgY29ubmVjdChjb250ZXh0
T2JqZWN0LCBTSUdOQUwoYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChpbnQpKSwgU0xPVChoaWRl
UG9wdXBNZW51KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CiAKICAgICBRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6Z2V0KG1fd2ViVmlldyktPmFkZEF0dGFjaGVkUHJvcGVydHlUbyhtX2l0ZW1TZWxl
Y3Rvci5nZXQoKSk7CiAgICAgbV9pdGVtU2VsZWN0b3ItPnNldFBhcmVudEl0ZW0obV93ZWJWaWV3
KTsKQEAgLTMwNywxNCArMzQ0LDYgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVD
b250ZXh0KFFRbWxDb21wb25lbnQqIGNvbXBvbmVudCwgUU9iamVjdCogY29udGUKICAgICBtX2Nv
bnRleHQtPnNldENvbnRleHRPYmplY3QoY29udGV4dE9iamVjdCk7CiB9CiAKLXZvaWQgV2ViUG9w
dXBNZW51UHJveHlRdDo6bm90aWZ5VmFsdWVDaGFuZ2VkKCkKLXsKLSAgICBpZiAobV9jbGllbnQp
IHsKLSAgICAgICAgbV9jbGllbnQtPnZhbHVlQ2hhbmdlZEZvclBvcHVwTWVudSh0aGlzLCBtX3Nl
bGVjdGVkSW5kZXgpOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgfQotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKIAogLy8gU2luY2Ugd2UgZGVmaW5lIFFPYmplY3RzIGluIFdlYlBvcHVw
TWVudVByb3h5UXQuY3BwLCB0aGlzIHdpbGwgdHJpZ2dlciBtb2MgdG8gcnVuIG9uIC5jcHAuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlR
dC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaApp
bmRleCAyMWVlYzVkLi4zZWI1NDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKQEAgLTQyLDYgKzQyLDExIEBAIGNsYXNzIFdlYlBv
cHVwTWVudVByb3h5UXQgOiBwdWJsaWMgUU9iamVjdCwgcHVibGljIFdlYlBvcHVwTWVudVByb3h5
IHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6CisgICAgZW51bSBTZWxlY3Rpb25UeXBlIHsKKyAg
ICAgICAgU2luZ2xlU2VsZWN0aW9uLAorICAgICAgICBNdWx0aXBsZVNlbGVjdGlvbgorICAgIH07
CisKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eVF0PiBjcmVhdGUoV2Vi
UG9wdXBNZW51UHJveHk6OkNsaWVudCogY2xpZW50LCBRUXVpY2tXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJQb3B1cE1lbnVQcm94eVF0KGNs
aWVudCwgd2ViVmlldykpOwpAQCAtNjEsMTMgKzY2LDExIEBAIHByaXZhdGU6CiAgICAgdm9pZCBj
cmVhdGVJdGVtKFFPYmplY3QqKTsKICAgICB2b2lkIGNyZWF0ZUNvbnRleHQoUVFtbENvbXBvbmVu
dCosIFFPYmplY3QqKTsKIAotICAgIHZvaWQgbm90aWZ5VmFsdWVDaGFuZ2VkKCk7Ci0KICAgICBP
d25QdHI8UVFtbENvbnRleHQ+IG1fY29udGV4dDsKICAgICBPd25QdHI8UVF1aWNrSXRlbT4gbV9p
dGVtU2VsZWN0b3I7CiAKICAgICBRUXVpY2tXZWJWaWV3KiBtX3dlYlZpZXc7Ci0gICAgaW50MzJf
dCBtX3NlbGVjdGVkSW5kZXg7CisgICAgU2VsZWN0aW9uVHlwZSBtX3NlbGVjdGlvblR5cGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcAppbmRleCA5NDBjYjk1
Li40YzMwOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCkBAIC01OSw5ICs1OSwxNCBAQCB2b2lkIFdl
YlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbnQgbmV3SW5kZXgpCiAgICAgaWYg
KCFtX3BvcHVwQ2xpZW50KQogICAgICAgICByZXR1cm47CiAKKyNpZiBQTEFURk9STShRVCkKKyAg
ICBpZiAobmV3SW5kZXggPj0gMCkKKyAgICAgICAgbV9wb3B1cENsaWVudC0+bGlzdEJveFNlbGVj
dEl0ZW0obmV3SW5kZXgsIG1fcG9wdXBDbGllbnQtPm11bHRpcGxlKCksIGZhbHNlKTsKKyNlbHNl
CiAgICAgbV9wb3B1cENsaWVudC0+cG9wdXBEaWRIaWRlKCk7CiAgICAgaWYgKG5ld0luZGV4ID49
IDApCiAgICAgICAgIG1fcG9wdXBDbGllbnQtPnZhbHVlQ2hhbmdlZChuZXdJbmRleCk7CisjZW5k
aWYKIH0KIAogdm9pZCBXZWJQb3B1cE1lbnU6OnNldFRleHRGb3JJbmRleChpbnQgaW5kZXgpCkBA
IC04Nyw3ICs5Miw3IEBAIFZlY3RvcjxXZWJQb3B1cEl0ZW0+IFdlYlBvcHVwTWVudTo6cG9wdWxh
dGVJdGVtcygpCiAgICAgICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHN0eWxpbmcg
dGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgY29sb3JzLgogICAgICAgICAgICAgLy8gRklY
TUU6IEZpbmQgYSB3YXkgdG8gY3VzdG9taXplIHRleHQgY29sb3Igd2hlbiBhbiBpdGVtIGlzIGhp
Z2hsaWdodGVkLgogICAgICAgICAgICAgUG9wdXBNZW51U3R5bGUgaXRlbVN0eWxlID0gbV9wb3B1
cENsaWVudC0+aXRlbVN0eWxlKGkpOwotICAgICAgICAgICAgaXRlbXMuYXBwZW5kKFdlYlBvcHVw
SXRlbShXZWJQb3B1cEl0ZW06Okl0ZW0sIG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0KGkpLCBpdGVt
U3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRl
KCksIG1fcG9wdXBDbGllbnQtPml0ZW1Ub29sVGlwKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtQWNj
ZXNzaWJpbGl0eVRleHQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQoaSksIG1fcG9w
dXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkpKSk7CisgICAgICAgICAgICBpdGVtcy5hcHBlbmQoV2Vi
UG9wdXBJdGVtKFdlYlBvcHVwSXRlbTo6SXRlbSwgbV9wb3B1cENsaWVudC0+aXRlbVRleHQoaSks
IGl0ZW1TdHlsZS50ZXh0RGlyZWN0aW9uKCksIGl0ZW1TdHlsZS5oYXNUZXh0RGlyZWN0aW9uT3Zl
cnJpZGUoKSwgbV9wb3B1cENsaWVudC0+aXRlbVRvb2xUaXAoaSksIG1fcG9wdXBDbGllbnQtPml0
ZW1BY2Nlc3NpYmlsaXR5VGV4dChpKSwgbV9wb3B1cENsaWVudC0+aXRlbUlzRW5hYmxlZChpKSwg
bV9wb3B1cENsaWVudC0+aXRlbUlzTGFiZWwoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc1NlbGVj
dGVkKGkpKSk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCmluZGV4IDhlNjYyNTAu
LjYzMTliOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViUG9wdXBNZW51LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaApAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBkaXNjb25uZWN0RnJvbVBhZ2UoKSB7IG1fcGFnZSA9IDA7IH0KICAgICB2b2lkIGRpZENo
YW5nZVNlbGVjdGVkSW5kZXgoaW50IG5ld0luZGV4KTsKICAgICB2b2lkIHNldFRleHRGb3JJbmRl
eChpbnQgbmV3SW5kZXgpOwotI2lmIFBMQVRGT1JNKEdUSykgICAgCisjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShRVCkKICAgICBXZWJDb3JlOjpQb3B1cE1lbnVDbGllbnQqIGNsaWVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fcG9wdXBDbGllbnQ7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9w
dXBNZW51UXQuY3BwCmluZGV4IGIyMWYwNmMuLmYwYThmNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBNZW51UXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvV2ViUG9wdXBN
ZW51UXQuY3BwCkBAIC0yNywxMyArMjcsMTUgQEAKICNpbmNsdWRlICJXZWJQb3B1cE1lbnUuaCIK
IAogI2luY2x1ZGUgIlBsYXRmb3JtUG9wdXBNZW51RGF0YS5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UG9wdXBNZW51Q2xpZW50Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIAotdm9pZCBXZWJQb3B1cE1lbnU6OnNldFVwUGxhdGZvcm1EYXRhKGNvbnN0
IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmKQordm9pZCBXZWJQb3B1cE1lbnU6OnNl
dFVwUGxhdGZvcm1EYXRhKGNvbnN0IEludFJlY3QmLCBQbGF0Zm9ybVBvcHVwTWVudURhdGEmIGRh
dGEpCiB7CisgICAgZGF0YS5tdWx0aXBsZVNlbGVjdGlvbnMgPSBtX3BvcHVwQ2xpZW50LT5tdWx0
aXBsZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA2ZjE4MjdjLi44NjY5ZTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0yMzM3
LDExICsyMzM3LDE2IEBAIHZvaWQgV2ViUGFnZTo6Y291bnRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfCiAKIHZvaWQgV2ViUGFnZTo6
ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudShpbnQzMl90IG5ld0luZGV4
KQogeworICAgIGNoYW5nZVNlbGVjdGVkSW5kZXgobmV3SW5kZXgpOworICAgIG1fYWN0aXZlUG9w
dXBNZW51ID0gMDsKK30KKwordm9pZCBXZWJQYWdlOjpjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMy
X3QgaW5kZXgpCit7CiAgICAgaWYgKCFtX2FjdGl2ZVBvcHVwTWVudSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpZENoYW5nZVNlbGVjdGVkSW5kZXgobmV3SW5k
ZXgpOwotICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+
ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleChpbmRleCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6ZGlkQ2hv
b3NlRmlsZXNGb3JPcGVuUGFuZWwoY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggM2I3ZTZlNi4uY2M3
MjNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC02NjksNiArNjY5LDEwIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZvaWQg
ZmFpbGVkVG9TaG93UG9wdXBNZW51KCk7CiAjZW5kaWYKKyNpZiBQTEFURk9STShRVCkKKyAgICB2
b2lkIGhpZGVQb3B1cE1lbnUoKTsKKyAgICB2b2lkIHNlbGVjdGVkSW5kZXgoaW50MzJfdCBuZXdJ
bmRleCk7CisjZW5kaWYKIAogICAgIHZvaWQgZGlkQ2hvb3NlRmlsZXNGb3JPcGVuUGFuZWwoY29u
c3QgVmVjdG9yPFN0cmluZz4mKTsKICAgICB2b2lkIGRpZENhbmNlbEZvck9wZW5QYW5lbCgpOwpA
QCAtNjk0LDYgKzY5OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRTZWxlY3RJdGVtRnJvbUFj
dGl2ZUNvbnRleHRNZW51KGNvbnN0IFdlYkNvbnRleHRNZW51SXRlbURhdGEmKTsKICNlbmRpZgog
CisgICAgdm9pZCBjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3QgaW5kZXgpOwogICAgIHZvaWQg
c2V0Q2FuU3RhcnRNZWRpYVRpbWVyRmlyZWQoKTsKIAogICAgIHN0YXRpYyBib29sIHBsYXRmb3Jt
Q2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KaW5kZXggZjE0ZmNiNi4uNmE1OGIxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTE2MSw3ICsxNjEsMTEg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgU2V0VGV4dEZvckFjdGl2ZVBvcHVwTWVudShp
bnQzMl90IGluZGV4KTsKICNpZiBQTEFURk9STShHVEspICAgIAogICAgIEZhaWxlZFRvU2hvd1Bv
cHVwTWVudSgpOwotI2VuZGlmICAgIAorI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgSGlk
ZVBvcHVwTWVudSgpOworICAgIFNlbGVjdGVkSW5kZXgoaW50MzJfdCBuZXdJbmRleCk7CisjZW5k
aWYKICAgICAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAjIENvbnRleHQgbWVudS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdl
UXQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5j
cHAKaW5kZXggMmU5MGE3My4uMThlNGY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHAKQEAgLTI4LDkgKzI4LDExIEBACiAjaW5j
bHVkZSAiV2ViUGFnZS5oIgogCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJQb3B1cE1lbnVDbGllbnQuaCIKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCisjaW5j
bHVkZSAiV2ViUG9wdXBNZW51LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvRE9NV3JhcHBlcldvcmxkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb2N1c0NvbnRy
b2xsZXIuaD4KQEAgLTQyMiw0ICs0MjQsMTggQEAgdm9pZCBXZWJQYWdlOjpzZXRVc2VyU2NyaXB0
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2NyaXB0cykKICAgICAgICAgcGFnZUdyb3VwLT5hZGRV
c2VyU2NyaXB0VG9Xb3JsZChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSwgc2NyaXB0cy5hdChpKSwg
S1VSTCgpLCBudWxscHRyLCBudWxscHRyLCBJbmplY3RBdERvY3VtZW50RW5kLCBJbmplY3RJblRv
cEZyYW1lT25seSk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6c2VsZWN0ZWRJbmRleChpbnQzMl90IG5l
d0luZGV4KQoreworICAgIGNoYW5nZVNlbGVjdGVkSW5kZXgobmV3SW5kZXgpOworfQorCit2b2lk
IFdlYlBhZ2U6OmhpZGVQb3B1cE1lbnUoKQoreworICAgIGlmICghbV9hY3RpdmVQb3B1cE1lbnUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fYWN0aXZlUG9wdXBNZW51LT5jbGllbnQoKS0+cG9w
dXBEaWRIaWRlKCk7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUgPSAwOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153299</attachid>
            <date>2012-07-19 10:39:30 -0700</date>
            <delta_ts>2012-07-20 07:29:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85527-20120719194234.patch</filename>
            <type>text/plain</type>
            <size>29368</size>
            <attacher name="Pierre Rossi">pierre.rossi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOWIxZTljYWNlZmE2MTVi
MzgzYWU4ZjI1NzQxY2ZhMDQ0NmJlYjVjYi4uNzZmNDM1M2I1NDc0NWM5NmRmZjk4MzdjNTY1NTc4
ZmRiYTBjNzAyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA2LTAxICBEaW51
IEphY29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CisKKyAgICAgICAgW1F0XVtXSzJdIEFkZCBz
dXBwb3J0IGZvciBtdWx0aS1zZWxlY3QgbGlzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU1MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBtdWx0aS1zZWxlY3QgbGlzdDoK
KyAgICAgICAgLSBBZGRlZCBtdWx0aS1zZWxlY3Rpb24gZmxhZyB0byBQbGF0Zm9ybVBvcHVwTWVu
dURhdGEgdG8gaW5kaWNhdGUgd2hldGhlciB0byBhY2NlcHQgbXVsdGlwbGUgc2VsZWN0aW9ucyBv
ciBub3QuCisgICAgICAgIC0gQWRkZWQgc2VsZWN0ZWQgc3RhdGUgdG8gV2ViUG9wdXBJdGVtLgor
ICAgICAgICAtIE1vZGlmaWVkIFdlYlBvcHVwTWVudVF0IHRvIHN1cHBvcnQgbXVsdGlwbGUgc2Vs
ZWN0aW9ucy4KKworICAgICAgICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybVBvcHVwTWVudURhdGE6OlBsYXRmb3JtUG9wdXBNZW51
RGF0YSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtUG9wdXBNZW51RGF0YTo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUpOgorICAgICAg
ICAqIFNoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaDoKKyAgICAgICAgKFBsYXRmb3JtUG9w
dXBNZW51RGF0YSk6CisgICAgICAgICogU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUG9wdXBJdGVtOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1cEl0ZW06OmRl
Y29kZSk6CisgICAgICAgICogU2hhcmVkL1dlYlBvcHVwSXRlbS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfbXVsdGlTZWxlY3QucW1sOiBB
ZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL2NvbW1vbi9t
dWx0aXNlbGVjdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lmg6CisgICAgICAgIChXZWJQYWdlUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQb3B1
cE1lbnVQcm94eS5oOgorICAgICAgICAoQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQv
V2ViUGFnZVByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNoYW5n
ZVNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpjbG9zZVBvcHVwTWVudSk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBv
cHVwTWVudVByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6
Om11bHRpcGxlKToKKyAgICAgICAgKFBvcHVwTWVudUl0ZW1Nb2RlbCk6CisgICAgICAgIChXZWJL
aXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6SXRlbTo6SXRlbSk6CisgICAgICAgIChJdGVtU2VsZWN0
b3JDb250ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6SXRlbVNlbGVjdG9yQ29udGV4dE9i
amVjdDo6YWxsb3dNdWx0aVNlbGVjdCk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNv
bnRleHRPYmplY3Q6OnJlamVjdCk6CisgICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRl
eHRPYmplY3Q6OmRpc21pc3MpOgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6Okl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6Om9uSW5kZXhVcGRhdGUp
OgorICAgICAgICAoV2ViS2l0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0OjphY2NlcHQpOgor
ICAgICAgICAoV2ViS2l0OjpQb3B1cE1lbnVJdGVtTW9kZWw6OlBvcHVwTWVudUl0ZW1Nb2RlbCk6
CisgICAgICAgIChXZWJLaXQ6OlBvcHVwTWVudUl0ZW1Nb2RlbDo6c2VsZWN0KToKKyAgICAgICAg
KFdlYktpdDo6UG9wdXBNZW51SXRlbU1vZGVsOjpzZWxlY3RJdGVtKToKKyAgICAgICAgKFdlYktp
dDo6UG9wdXBNZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBv
cHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1cE1lbnUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQb3B1
cE1lbnVQcm94eVF0OjpzZWxlY3RJbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5UXQ6OmNyZWF0ZUl0ZW0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQb3B1cE1l
bnVQcm94eVF0Lmg6CisgICAgICAgIChXZWJQb3B1cE1lbnVQcm94eVF0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBvcHVwTWVudTo6cG9wdWxhdGVJdGVtcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaDoKKyAgICAgICAgKFdlYlBvcHVwTWVudSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9XZWJQb3B1cE1lbnVRdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBvcHVwTWVudTo6c2V0VXBQbGF0Zm9ybURhdGEpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZGlkQ2hhbmdlU2VsZWN0ZWRJbmRleEZvckFjdGl2ZVBvcHVwTWVudSk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFuZ2VTZWxlY3RlZElu
ZGV4KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAo
V2ViUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL3F0L1dlYlBhZ2VRdC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdGVkSW5kZXgpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGlkZVBvcHVwTWVudSk6CisKIDIwMTItMDctMTkg
IFBpZXJyZSBSb3NzaSAgPHBpZXJyZS5yb3NzaUBnbWFpbC5jb20+CiAKICAgICAgICAgW1F0XVtX
SzJdIE1hcCB0aGUgZWxlbWVudFJlY3QgZXhwb3NlZCBpbiBRTUwgdG8gdGhlIHZpZXcgZm9yIHBv
cHVwIG1lbnUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVw
TWVudURhdGEuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0
YS5jcHAKaW5kZXggNmM0ZDIwZTY0OTcwNTA5OTFkNGU4MTBjMmQxOTY3OTdlNGM4ZGY1ZS4uYjYy
N2FmZTI0YzI5NGRiNzliMDUxNmQ4N2FhMDMxZDBkN2MzNjVjMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5jcHAKQEAgLTM4LDYgKzM4LDggQEAg
UGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpQbGF0Zm9ybVBvcHVwTWVudURhdGEoKQogICAgICwgbV9j
bGllbnRJbnNldFJpZ2h0KDApCiAgICAgLCBtX3BvcHVwV2lkdGgoMCkKICAgICAsIG1faXRlbUhl
aWdodCgwKQorI2VsaWYgUExBVEZPUk0oUVQpCisgICAgOiBtdWx0aXBsZVNlbGVjdGlvbnMoZmFs
c2UpCiAjZW5kaWYKIHsKIH0KQEAgLTYyLDYgKzY0LDggQEAgdm9pZCBQbGF0Zm9ybVBvcHVwTWVu
dURhdGE6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiAj
ZWxpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGZvbnRJbmZvKTsKICAgICBl
bmNvZGVyLT5lbmNvZGUoc2hvdWxkUG9wT3Zlcik7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBl
bmNvZGVyLT5lbmNvZGUobXVsdGlwbGVTZWxlY3Rpb25zKTsKICNlbmRpZgogfQogCkBAIC05NSw2
ICs5OSw5IEBAIGJvb2wgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhOjpkZWNvZGUoQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbGF0Zm9ybVBvCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShkYXRhLnNob3VsZFBvcE92ZXIpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CisjZWxpZiBQTEFURk9STShRVCkKKyAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShkYXRhLm11bHRpcGxlU2VsZWN0aW9ucykpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRp
ZgogICAgIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsYXRmb3JtUG9wdXBNZW51RGF0YS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsYXRm
b3JtUG9wdXBNZW51RGF0YS5oCmluZGV4IGY4NTAwOGE4ZGY1ZWQ2ZWZjMWRjOTc2ZjhiYzVhMjJh
YmI5M2RhZDAuLjIxYWJkZTRmZjVkNjIyOTM1YzhhMjM1YTNhMGFiNjllYzRjZWY2NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbGF0Zm9ybVBvcHVwTWVudURhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGxhdGZvcm1Qb3B1cE1lbnVEYXRhLmgKQEAgLTU1LDYg
KzU1LDggQEAgc3RydWN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSB7CiAjZWxpZiBQTEFURk9STShN
QUMpCiAgICAgRm9udEluZm8gZm9udEluZm87CiAgICAgYm9vbCBzaG91bGRQb3BPdmVyOworI2Vs
aWYgUExBVEZPUk0oUVQpCisgICAgYm9vbCBtdWx0aXBsZVNlbGVjdGlvbnM7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uY3BwIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAKaW5kZXggYTlhYzAzMjI1MjU0
MThjOGQ5ZTNiMjczNGFmOTA4Yzk2NDhlMjQyNi4uYzIxNWYzNTY4MWJlMzk1ZGY2OTY4ZTBkNjE3
NTM5MjgwNWIzMDQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVw
SXRlbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5jcHAKQEAg
LTM5LDYgKzM5LDcgQEAgV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oKQogICAgICwgbV90ZXh0
RGlyZWN0aW9uKExUUikKICAgICAsIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKGZhbHNlKQog
ICAgICwgbV9pc0VuYWJsZWQodHJ1ZSkKKyAgICAsIG1faXNTZWxlY3RlZChmYWxzZSkKIHsKIH0K
IApAQCAtNDgsMTAgKzQ5LDExIEBAIFdlYlBvcHVwSXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUgdHlw
ZSkKICAgICAsIG1faGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlKGZhbHNlKQogICAgICwgbV9pc0Vu
YWJsZWQodHJ1ZSkKICAgICAsIG1faXNMYWJlbChmYWxzZSkKKyAgICAsIG1faXNTZWxlY3RlZChm
YWxzZSkKIHsKIH0KIAotV2ViUG9wdXBJdGVtOjpXZWJQb3B1cEl0ZW0oVHlwZSB0eXBlLCBjb25z
dCBTdHJpbmcmIHRleHQsIFRleHREaXJlY3Rpb24gdGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0
RGlyZWN0aW9uT3ZlcnJpZGUsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBh
Y2Nlc3NpYmlsaXR5VGV4dCwgYm9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCkKK1dlYlBvcHVw
SXRlbTo6V2ViUG9wdXBJdGVtKFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBUZXh0RGly
ZWN0aW9uIHRleHREaXJlY3Rpb24sIGJvb2wgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCBjb25z
dCBTdHJpbmcmIHRvb2xUaXAsIGNvbnN0IFN0cmluZyYgYWNjZXNzaWJpbGl0eVRleHQsIGJvb2wg
aXNFbmFibGVkLCBib29sIGlzTGFiZWwsIGJvb2wgaXNTZWxlY3RlZCkKICAgICA6IG1fdHlwZSh0
eXBlKQogICAgICwgbV90ZXh0KHRleHQpCiAgICAgLCBtX3RleHREaXJlY3Rpb24odGV4dERpcmVj
dGlvbikKQEAgLTYwLDEyICs2MiwxNCBAQCBXZWJQb3B1cEl0ZW06OldlYlBvcHVwSXRlbShUeXBl
IHR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgVGV4dERpcmVjdGlvbiB0ZXh0RGlyZQogICAgICwg
bV9hY2Nlc3NpYmlsaXR5VGV4dChhY2Nlc3NpYmlsaXR5VGV4dCkKICAgICAsIG1faXNFbmFibGVk
KGlzRW5hYmxlZCkKICAgICAsIG1faXNMYWJlbChpc0xhYmVsKQorICAgICwgbV9pc1NlbGVjdGVk
KGlzU2VsZWN0ZWQpCiB7CiB9CiAKIHZvaWQgV2ViUG9wdXBJdGVtOjplbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXItPmVuY29kZShD
b3JlSVBDOjpJbihzdGF0aWNfY2FzdDx1aW50MzJfdD4obV90eXBlKSwgbV90ZXh0LCBzdGF0aWNf
Y2FzdDx1aW50NjRfdD4obV90ZXh0RGlyZWN0aW9uKSwgbV9oYXNUZXh0RGlyZWN0aW9uT3ZlcnJp
ZGUsIG1fdG9vbFRpcCwgbV9hY2Nlc3NpYmlsaXR5VGV4dCwgbV9pc0VuYWJsZWQsIG1faXNMYWJl
bCkpOworICAgIGVuY29kZXItPmVuY29kZShDb3JlSVBDOjpJbihtX2lzU2VsZWN0ZWQpKTsKIH0K
IAogYm9vbCBXZWJQb3B1cEl0ZW06OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRl
Y29kZXIsIFdlYlBvcHVwSXRlbSYgaXRlbSkKQEAgLTc4LDEwICs4MiwxNSBAQCBib29sIFdlYlBv
cHVwSXRlbTo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViUG9w
dXBJdGVtJiBpdGVtKQogICAgIFN0cmluZyBhY2Nlc3NpYmlsaXR5VGV4dDsKICAgICBib29sIGlz
RW5hYmxlZDsKICAgICBib29sIGlzTGFiZWw7CisgICAgYm9vbCBpc1NlbGVjdGVkOworCiAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6T3V0KHR5cGUsIHRleHQsIHRleHREaXJlY3Rp
b24sIGhhc1RleHREaXJlY3Rpb25PdmVycmlkZSwgdG9vbFRpcCwgYWNjZXNzaWJpbGl0eVRleHQs
IGlzRW5hYmxlZCwgaXNMYWJlbCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpdGVt
ID0gV2ViUG9wdXBJdGVtKHN0YXRpY19jYXN0PFR5cGU+KHR5cGUpLCB0ZXh0LCBzdGF0aWNfY2Fz
dDxUZXh0RGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwgaGFzVGV4dERpcmVjdGlvbk92ZXJyaWRl
LCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNFbmFibGVkLCBpc0xhYmVsKTsKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShDb3JlSVBDOjpPdXQoaXNTZWxlY3RlZCkpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpdGVtID0gV2ViUG9wdXBJdGVtKHN0YXRpY19jYXN0PFR5cGU+
KHR5cGUpLCB0ZXh0LCBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPih0ZXh0RGlyZWN0aW9uKSwg
aGFzVGV4dERpcmVjdGlvbk92ZXJyaWRlLCB0b29sVGlwLCBhY2Nlc3NpYmlsaXR5VGV4dCwgaXNF
bmFibGVkLCBpc0xhYmVsLCBpc1NlbGVjdGVkKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlBvcHVwSXRlbS5oCmluZGV4IDNkYzYxZDc3ZThkODkxNWQxZTdkZjlk
MmI3MTRkM2MzNWI3YzA1ZjMuLmQ4NTg0YmVhNTMyMDljM2M3NTE1YzZiYmFmM2IwNzk4YTBiMmZk
NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQb3B1cEl0ZW0uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUG9wdXBJdGVtLmgKQEAgLTQ0LDcgKzQ0LDcgQEAg
c3RydWN0IFdlYlBvcHVwSXRlbSB7CiAKICAgICBXZWJQb3B1cEl0ZW0oKTsKICAgICBXZWJQb3B1
cEl0ZW0oVHlwZSk7Ci0gICAgV2ViUG9wdXBJdGVtKFR5cGUsIGNvbnN0IFN0cmluZyYgdGV4dCwg
V2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0aW9uT3ZlcnJpZGUsIGNv
bnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBhY2Nlc3NpYmlsaXR5VGV4dCwgYm9v
bCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCk7CisgICAgV2ViUG9wdXBJdGVtKFR5cGUsIGNvbnN0
IFN0cmluZyYgdGV4dCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgYm9vbCBoYXNUZXh0RGlyZWN0
aW9uT3ZlcnJpZGUsIGNvbnN0IFN0cmluZyYgdG9vbFRpcCwgY29uc3QgU3RyaW5nJiBhY2Nlc3Np
YmlsaXR5VGV4dCwgYm9vbCBpc0VuYWJsZWQsIGJvb2wgaXNMYWJlbCwgYm9vbCBpc1NlbGVjdGVk
KTsKIAogICAgIHZvaWQgZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciopIGNvbnN0Owog
ICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBXZWJQb3B1
cEl0ZW0mKTsKQEAgLTU3LDYgKzU3LDcgQEAgc3RydWN0IFdlYlBvcHVwSXRlbSB7CiAgICAgU3Ry
aW5nIG1fYWNjZXNzaWJpbGl0eVRleHQ7CiAgICAgYm9vbCBtX2lzRW5hYmxlZDsKICAgICBib29s
IG1faXNMYWJlbDsKKyAgICBib29sIG1faXNTZWxlY3RlZDsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDI5YTZj
NjVjNTg4NjRiZTY0NDIxZTNjYzI4ZmY2NGRmZmFhODY0NWUuLmU3MDAzNjY0NWQ2OThiYzhlMjEz
ODA1MjllYzA2ODYyZWM4MDA0NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTcxOSw3ICs3MTksMTEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VGV4dEZyb21JdGVtRm9yUG9wdXBNZW51KFdlYlBvcHVwTWVudVByb3h5KiwgaW50MzJfdCBpbmRl
eCk7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1Nob3dQb3B1
cE1lbnUoKTsKLSNlbmRpZiAgICAKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIHZpcnR1
YWwgdm9pZCBjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3QgbmV3U2VsZWN0ZWRJbmRleCk7Cisg
ICAgdmlydHVhbCB2b2lkIGNsb3NlUG9wdXBNZW51KCk7CisjZW5kaWYKIAogICAgIC8vIEltcGxl
bWVudGVkIGluIGdlbmVyYXRlZCBXZWJQYWdlUHJveHlNZXNzYWdlUmVjZWl2ZXIuY3BwCiAgICAg
dm9pZCBkaWRSZWNlaXZlV2ViUGFnZVByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQb3B1cE1lbnVQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvcHVwTWVudVByb3h5LmgKaW5kZXggM2NlZmMwZDY3YWU1
ZGFjZjk5ZjYzNTYxZjExZTA4MTU4YzY0MGEwNC4uZDViZmE0YzVjMjE5MDc5YjhlYmY4YzMzMjBi
NmExZjkwNjljM2U4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBv
cHVwTWVudVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBvcHVwTWVu
dVByb3h5LmgKQEAgLTU1LDcgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBOYXRp
dmVXZWJNb3VzZUV2ZW50KiBjdXJyZW50bHlQcm9jZXNzZWRNb3VzZURvd25FdmVudCgpID0gMDsK
ICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1Nob3dQb3B1
cE1lbnUoKSA9IDA7Ci0jZW5kaWYgICAgICAgIAorI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VTZWxlY3RlZEluZGV4KGludDMyX3QgbmV3U2VsZWN0
ZWRJbmRleCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VQb3B1cE1lbnUoKSA9IDA7
CisjZW5kaWYKICAgICB9OwogCiAgICAgdmlydHVhbCB+V2ViUG9wdXBNZW51UHJveHkoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKaW5kZXggNWNh
ZmFkNTljNjg5YzM4MjQ2NGI4MDcxOTA0YjA1MjllNzVlNWJlYS4uZmEyYzc0ZjFmZGI1YjE1N2Vk
NjJmYzc1MjQ4ZjJlNDEyYmFmYjdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViUGFnZVByb3h5UXQuY3BwCkBAIC0xMTksNCArMTE5LDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5Ojp3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGZyYW1lCiB9CiAjZW5kaWYKIAordm9pZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNlbGVjdGVk
SW5kZXgoaW50MzJfdCBzZWxlY3RlZEluZGV4KQoreworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2VsZWN0ZWRJbmRleChzZWxlY3RlZEluZGV4KSwgbV9wYWdlSUQpOwor
fQorCit2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQb3B1cE1lbnUoKQoreworICAgIHByb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGlkZVBvcHVwTWVudSgpLCBtX3BhZ2VJRCk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuY3BwCmluZGV4IDlkOTM2YTY2OWVjYWMwMGY1NmI5
ZjdkNTVmNDA4NTY1YTYxZDk5NDYuLmIzZTI2MmM0NzI2NDhmNzU5NjRiMDNmOTAzNGRjMDhmZTE3
NDUzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1l
bnVQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUG9wdXBN
ZW51UHJveHlRdC5jcHAKQEAgLTUyLDIzICs1MiwyOCBAQCBwdWJsaWM6CiAgICAgICAgIElzU2Vw
YXJhdG9yUm9sZSA9IFF0OjpVc2VyUm9sZSArIDMKICAgICB9OwogCi0gICAgUG9wdXBNZW51SXRl
bU1vZGVsKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgaW50IHNlbGVjdGVkT3JpZ2luYWxJ
bmRleCk7CisgICAgUG9wdXBNZW51SXRlbU1vZGVsKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+
JiwgYm9vbCBtdWx0aXBsZSk7CiAgICAgdmlydHVhbCBpbnQgcm93Q291bnQoY29uc3QgUU1vZGVs
SW5kZXgmIHBhcmVudCA9IFFNb2RlbEluZGV4KCkpIGNvbnN0IHsgcmV0dXJuIG1faXRlbXMuc2l6
ZSgpOyB9CiAgICAgdmlydHVhbCBRVmFyaWFudCBkYXRhKGNvbnN0IFFNb2RlbEluZGV4JiwgaW50
IHJvbGUgPSBRdDo6RGlzcGxheVJvbGUpIGNvbnN0OwogCiAgICAgUV9JTlZPS0FCTEUgdm9pZCBz
ZWxlY3QoaW50KTsKIAogICAgIGludCBzZWxlY3RlZE9yaWdpbmFsSW5kZXgoKSBjb25zdDsKKyAg
ICBib29sIG11bHRpcGxlKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd011bHRpcGxlczsgfQorICAg
IHZvaWQgc2VsZWN0SXRlbShpbnQpOworCitRX1NJR05BTFM6CisgICAgdm9pZCBpbmRleFVwZGF0
ZWQoKTsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgSXRlbSB7Ci0gICAgICAgIEl0ZW0oY29uc3Qg
V2ViUG9wdXBJdGVtJiB3ZWJQb3B1cEl0ZW0sIGNvbnN0IFFTdHJpbmcmIGdyb3VwLCBpbnQgb3Jp
Z2luYWxJbmRleCwgYm9vbCBzZWxlY3RlZCkKKyAgICAgICAgSXRlbShjb25zdCBXZWJQb3B1cEl0
ZW0mIHdlYlBvcHVwSXRlbSwgY29uc3QgUVN0cmluZyYgZ3JvdXAsIGludCBvcmlnaW5hbEluZGV4
KQogICAgICAgICAgICAgOiB0ZXh0KHdlYlBvcHVwSXRlbS5tX3RleHQpCiAgICAgICAgICAgICAs
IHRvb2xUaXAod2ViUG9wdXBJdGVtLm1fdG9vbFRpcCkKICAgICAgICAgICAgICwgZ3JvdXAoZ3Jv
dXApCiAgICAgICAgICAgICAsIG9yaWdpbmFsSW5kZXgob3JpZ2luYWxJbmRleCkKICAgICAgICAg
ICAgICwgZW5hYmxlZCh3ZWJQb3B1cEl0ZW0ubV9pc0VuYWJsZWQpCi0gICAgICAgICAgICAsIHNl
bGVjdGVkKHNlbGVjdGVkKQorICAgICAgICAgICAgLCBzZWxlY3RlZCh3ZWJQb3B1cEl0ZW0ubV9p
c1NlbGVjdGVkKQogICAgICAgICAgICAgLCBpc1NlcGFyYXRvcih3ZWJQb3B1cEl0ZW0ubV90eXBl
ID09IFdlYlBvcHVwSXRlbTo6U2VwYXJhdG9yKQogICAgICAgICB7IH0KIApAQCAtODIsNDcgKzg3
LDY4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNTZXBhcmF0b3I7CiAgICAgfTsKIAotICAg
IHZvaWQgYnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVt
cywgaW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgdm9pZCBidWlsZEl0ZW1zKGNvbnN0
IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zKTsKIAogICAgIFZlY3RvcjxJdGVt
PiBtX2l0ZW1zOwogICAgIGludCBtX3NlbGVjdGVkTW9kZWxJbmRleDsKKyAgICBib29sIG1fYWxs
b3dNdWx0aXBsZXM7CiB9OwogCiBjbGFzcyBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0IDogcHVi
bGljIFFPYmplY3QgewogICAgIFFfT0JKRUNUCiAgICAgUV9QUk9QRVJUWShRUmVjdEYgZWxlbWVu
dFJlY3QgUkVBRCBlbGVtZW50UmVjdCBDT05TVEFOVCBGSU5BTCkKICAgICBRX1BST1BFUlRZKFFP
YmplY3QqIGl0ZW1zIFJFQUQgaXRlbXMgQ09OU1RBTlQgRklOQUwpCisgICAgUV9QUk9QRVJUWShi
b29sIGFsbG93TXVsdGlTZWxlY3QgUkVBRCBhbGxvd011bHRpU2VsZWN0IENPTlNUQU5UIEZJTkFM
KQogCiBwdWJsaWM6Ci0gICAgSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdChjb25zdCBRUmVjdEYm
IGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYsIGludCBzZWxlY3RlZElu
ZGV4KTsKKyAgICBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0IFFSZWN0RiYgZWxlbWVu
dFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiwgYm9vbCBtdWx0aXBsZSk7CiAKICAg
ICBRUmVjdEYgZWxlbWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRSZWN0OyB9CiAg
ICAgUG9wdXBNZW51SXRlbU1vZGVsKiBpdGVtcygpIHsgcmV0dXJuICZtX2l0ZW1zOyB9CisgICAg
Ym9vbCBhbGxvd011bHRpU2VsZWN0KCkgeyByZXR1cm4gbV9pdGVtcy5tdWx0aXBsZSgpOyB9CiAK
ICAgICBRX0lOVk9LQUJMRSB2b2lkIGFjY2VwdChpbnQgaW5kZXggPSAtMSk7Ci0gICAgUV9JTlZP
S0FCTEUgdm9pZCByZWplY3QoKSB7IGVtaXQgcmVqZWN0ZWQoKTsgfQorICAgIFFfSU5WT0tBQkxF
IHZvaWQgcmVqZWN0KCkgeyBlbWl0IGRvbmUoKTsgfQorICAgIFFfSU5WT0tBQkxFIHZvaWQgZGlz
bWlzcygpIHsgZW1pdCBkb25lKCk7IH0KIAogUV9TSUdOQUxTOgogICAgIHZvaWQgYWNjZXB0ZWRX
aXRoT3JpZ2luYWxJbmRleChpbnQpOwotICAgIHZvaWQgcmVqZWN0ZWQoKTsKKyAgICB2b2lkIGRv
bmUoKTsKKworcHJpdmF0ZSBRX1NMT1RTOgorICAgIHZvaWQgb25JbmRleFVwZGF0ZSgpOwogCiBw
cml2YXRlOgogICAgIFFSZWN0RiBtX2VsZW1lbnRSZWN0OwogICAgIFBvcHVwTWVudUl0ZW1Nb2Rl
bCBtX2l0ZW1zOwogfTsKIAotSXRlbVNlbGVjdG9yQ29udGV4dE9iamVjdDo6SXRlbVNlbGVjdG9y
Q29udGV4dE9iamVjdChjb25zdCBRUmVjdEYmIGVsZW1lbnRSZWN0LCBjb25zdCBWZWN0b3I8V2Vi
UG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywgaW50IHNlbGVjdGVkSW5kZXgpCitJdGVtU2VsZWN0
b3JDb250ZXh0T2JqZWN0OjpJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KGNvbnN0IFFSZWN0RiYg
ZWxlbWVudFJlY3QsIGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBi
b29sIG11bHRpcGxlKQogICAgIDogbV9lbGVtZW50UmVjdChlbGVtZW50UmVjdCkKLSAgICAsIG1f
aXRlbXMod2ViUG9wdXBJdGVtcywgc2VsZWN0ZWRJbmRleCkKKyAgICAsIG1faXRlbXMod2ViUG9w
dXBJdGVtcywgbXVsdGlwbGUpCiB7CisgICAgY29ubmVjdCgmbV9pdGVtcywgU0lHTkFMKGluZGV4
VXBkYXRlZCgpKSwgU0xPVChvbkluZGV4VXBkYXRlKCkpKTsKIH0KIAordm9pZCBJdGVtU2VsZWN0
b3JDb250ZXh0T2JqZWN0OjpvbkluZGV4VXBkYXRlKCkKK3sKKyAgICAvLyBTZW5kIHRoZSB1cGRh
dGUgZm9yIG11bHRpLXNlbGVjdCBsaXN0LgorICAgIGlmIChtX2l0ZW1zLm11bHRpcGxlKCkpCisg
ICAgICAgIGVtaXQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChtX2l0ZW1zLnNlbGVjdGVkT3Jp
Z2luYWxJbmRleCgpKTsKK30KKworCiB2b2lkIEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3Q6OmFj
Y2VwdChpbnQgaW5kZXgpCiB7Ci0gICAgaWYgKGluZGV4ICE9IC0xKQotICAgICAgICBtX2l0ZW1z
LnNlbGVjdChpbmRleCk7Ci0gICAgaW50IG9yaWdpbmFsSW5kZXggPSBtX2l0ZW1zLnNlbGVjdGVk
T3JpZ2luYWxJbmRleCgpOwotICAgIGVtaXQgYWNjZXB0ZWRXaXRoT3JpZ2luYWxJbmRleChvcmln
aW5hbEluZGV4KTsKKyAgICAvLyBJZiB0aGUgaW5kZXggaXMgbm90IHZhbGlkIGZvciBtdWx0aS1z
ZWxlY3QgbGlzdHMsIGp1c3QgaGlkZSB0aGUgcG9wIHVwIGFzIHRoZSBzZWxlY3RlZCBpbmRpY2Vz
IGhhdmUKKyAgICAvLyBhbHJlYWR5IGJlZW4gc2VudC4KKyAgICBpZiAoKGluZGV4ID09IC0xICkg
JiYgbV9pdGVtcy5tdWx0aXBsZSgpKQorICAgICAgICBlbWl0IGRvbmUoKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgaWYgKGluZGV4ICE9IC0xKQorICAgICAgICAgICAgbV9pdGVtcy5zZWxlY3RJdGVt
KGluZGV4KTsKKyAgICAgICAgZW1pdCBhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4KG1faXRlbXMu
c2VsZWN0ZWRPcmlnaW5hbEluZGV4KCkpOworICAgIH0KIH0KIAogc3RhdGljIFFIYXNoPGludCwg
UUJ5dGVBcnJheT4gY3JlYXRlUm9sZU5hbWVzSGFzaCgpCkBAIC0xMzcsMTIgKzE2MywxMyBAQCBz
dGF0aWMgUUhhc2g8aW50LCBRQnl0ZUFycmF5PiBjcmVhdGVSb2xlTmFtZXNIYXNoKCkKICAgICBy
ZXR1cm4gcm9sZXM7CiB9CiAKLVBvcHVwTWVudUl0ZW1Nb2RlbDo6UG9wdXBNZW51SXRlbU1vZGVs
KGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zLCBpbnQgc2VsZWN0ZWRP
cmlnaW5hbEluZGV4KQorUG9wdXBNZW51SXRlbU1vZGVsOjpQb3B1cE1lbnVJdGVtTW9kZWwoY29u
c3QgVmVjdG9yPFdlYlBvcHVwSXRlbT4mIHdlYlBvcHVwSXRlbXMsIGJvb2wgbXVsdGlwbGUpCiAg
ICAgOiBtX3NlbGVjdGVkTW9kZWxJbmRleCgtMSkKKyAgICAsIG1fYWxsb3dNdWx0aXBsZXMobXVs
dGlwbGUpCiB7CiAgICAgc3RhdGljIFFIYXNoPGludCwgUUJ5dGVBcnJheT4gcm9sZXMgPSBjcmVh
dGVSb2xlTmFtZXNIYXNoKCk7CiAgICAgc2V0Um9sZU5hbWVzKHJvbGVzKTsKLSAgICBidWlsZEl0
ZW1zKHdlYlBvcHVwSXRlbXMsIHNlbGVjdGVkT3JpZ2luYWxJbmRleCk7CisgICAgYnVpbGRJdGVt
cyh3ZWJQb3B1cEl0ZW1zKTsKIH0KIAogUVZhcmlhbnQgUG9wdXBNZW51SXRlbU1vZGVsOjpkYXRh
KGNvbnN0IFFNb2RlbEluZGV4JiBpbmRleCwgaW50IHJvbGUpIGNvbnN0CkBAIC0xNzcsMjIgKzIw
NCwzMSBAQCBRVmFyaWFudCBQb3B1cE1lbnVJdGVtTW9kZWw6OmRhdGEoY29uc3QgUU1vZGVsSW5k
ZXgmIGluZGV4LCBpbnQgcm9sZSkgY29uc3QKIAogdm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OnNl
bGVjdChpbnQgaW5kZXgpCiB7CisgICAgc2VsZWN0SXRlbShpbmRleCk7CisgICAgZW1pdCBpbmRl
eFVwZGF0ZWQoKTsKK30KKwordm9pZCBQb3B1cE1lbnVJdGVtTW9kZWw6OnNlbGVjdEl0ZW0oaW50
IGluZGV4KQorewogICAgIGludCBvbGRJbmRleCA9IG1fc2VsZWN0ZWRNb2RlbEluZGV4OwotICAg
IGlmIChpbmRleCA9PSBvbGRJbmRleCkKLSAgICAgICAgcmV0dXJuOwogICAgIGlmIChpbmRleCA8
IDAgfHwgaW5kZXggPj0gbV9pdGVtcy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJdGVt
JiBpdGVtID0gbV9pdGVtc1tpbmRleF07CiAgICAgaWYgKCFpdGVtLmVuYWJsZWQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlOwogICAgIG1fc2VsZWN0ZWRNb2Rl
bEluZGV4ID0gaW5kZXg7Ci0KLSAgICBpZiAob2xkSW5kZXggIT0gLTEpIHsKLSAgICAgICAgSXRl
bSYgb2xkSXRlbSA9IG1faXRlbXNbb2xkSW5kZXhdOwotICAgICAgICBvbGRJdGVtLnNlbGVjdGVk
ID0gZmFsc2U7Ci0gICAgICAgIGVtaXQgZGF0YUNoYW5nZWQodGhpcy0+aW5kZXgob2xkSW5kZXgp
LCB0aGlzLT5pbmRleChvbGRJbmRleCkpOworICAgIGlmIChtX2FsbG93TXVsdGlwbGVzKQorICAg
ICAgICBpdGVtLnNlbGVjdGVkID0gIWl0ZW0uc2VsZWN0ZWQ7CisgICAgZWxzZSB7CisgICAgICAg
IGlmIChpbmRleCA9PSBvbGRJbmRleCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaXRl
bS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgIGlmIChvbGRJbmRleCAhPSAtMSkgeworICAgICAg
ICAgICAgSXRlbSYgb2xkSXRlbSA9IG1faXRlbXNbb2xkSW5kZXhdOworICAgICAgICAgICAgb2xk
SXRlbS5zZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgZW1pdCBkYXRhQ2hhbmdlZCh0aGlz
LT5pbmRleChvbGRJbmRleCksIHRoaXMtPmluZGV4KG9sZEluZGV4KSk7CisgICAgICAgIH0KICAg
ICB9CiAKICAgICBlbWl0IGRhdGFDaGFuZ2VkKHRoaXMtPmluZGV4KGluZGV4KSwgdGhpcy0+aW5k
ZXgoaW5kZXgpKTsKQEAgLTIwNSw3ICsyNDEsNyBAQCBpbnQgUG9wdXBNZW51SXRlbU1vZGVsOjpz
ZWxlY3RlZE9yaWdpbmFsSW5kZXgoKSBjb25zdAogICAgIHJldHVybiBtX2l0ZW1zW21fc2VsZWN0
ZWRNb2RlbEluZGV4XS5vcmlnaW5hbEluZGV4OwogfQogCi12b2lkIFBvcHVwTWVudUl0ZW1Nb2Rl
bDo6YnVpbGRJdGVtcyhjb25zdCBWZWN0b3I8V2ViUG9wdXBJdGVtPiYgd2ViUG9wdXBJdGVtcywg
aW50IHNlbGVjdGVkT3JpZ2luYWxJbmRleCkKK3ZvaWQgUG9wdXBNZW51SXRlbU1vZGVsOjpidWls
ZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQb3B1cEl0ZW1zKQogewogICAg
IFFTdHJpbmcgY3VycmVudEdyb3VwOwogICAgIG1faXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSh3ZWJQb3B1cEl0ZW1zLnNpemUoKSk7CkBAIC0yMTUsMTAgKzI1MSw5IEBAIHZvaWQgUG9wdXBN
ZW51SXRlbU1vZGVsOjpidWlsZEl0ZW1zKGNvbnN0IFZlY3RvcjxXZWJQb3B1cEl0ZW0+JiB3ZWJQ
b3B1cEl0ZW1zLCBpCiAgICAgICAgICAgICBjdXJyZW50R3JvdXAgPSB3ZWJQb3B1cEl0ZW0ubV90
ZXh0OwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3QgYm9v
bCBzZWxlY3RlZCA9IGkgPT0gc2VsZWN0ZWRPcmlnaW5hbEluZGV4OwotICAgICAgICBpZiAoc2Vs
ZWN0ZWQpCisgICAgICAgIGlmICh3ZWJQb3B1cEl0ZW0ubV9pc1NlbGVjdGVkICYmICFtX2FsbG93
TXVsdGlwbGVzKQogICAgICAgICAgICAgbV9zZWxlY3RlZE1vZGVsSW5kZXggPSBtX2l0ZW1zLnNp
emUoKTsKLSAgICAgICAgbV9pdGVtcy5hcHBlbmQoSXRlbSh3ZWJQb3B1cEl0ZW0sIGN1cnJlbnRH
cm91cCwgaSwgc2VsZWN0ZWQpKTsKKyAgICAgICAgbV9pdGVtcy5hcHBlbmQoSXRlbSh3ZWJQb3B1
cEl0ZW0sIGN1cnJlbnRHcm91cCwgaSkpOwogICAgIH0KIH0KIApAQCAtMjMyLDE1ICsyNjcsMTUg
QEAgV2ViUG9wdXBNZW51UHJveHlRdDo6fldlYlBvcHVwTWVudVByb3h5UXQoKQogewogfQogCi12
b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNob3dQb3B1cE1lbnUoY29uc3QgSW50UmVjdCYgcmVj
dCwgV2ViQ29yZTo6VGV4dERpcmVjdGlvbiwgZG91YmxlLCBjb25zdCBWZWN0b3I8V2ViUG9wdXBJ
dGVtPiYgaXRlbXMsIGNvbnN0IFBsYXRmb3JtUG9wdXBNZW51RGF0YSYsIGludDMyX3Qgc2VsZWN0
ZWRJbmRleCkKK3ZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6c2hvd1BvcHVwTWVudShjb25zdCBJ
bnRSZWN0JiByZWN0LCBXZWJDb3JlOjpUZXh0RGlyZWN0aW9uLCBkb3VibGUsIGNvbnN0IFZlY3Rv
cjxXZWJQb3B1cEl0ZW0+JiBpdGVtcywgY29uc3QgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRh
LCBpbnQzMl90KQogewotICAgIG1fc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7CisgICAg
bV9zZWxlY3Rpb25UeXBlID0gKGRhdGEubXVsdGlwbGVTZWxlY3Rpb25zKSA/IFdlYlBvcHVwTWVu
dVByb3h5UXQ6Ok11bHRpcGxlU2VsZWN0aW9uIDogV2ViUG9wdXBNZW51UHJveHlRdDo6U2luZ2xl
U2VsZWN0aW9uOwogCiAgICAgY29uc3QgUVJlY3RGIG1hcHBlZFJlY3Q9IG1fd2ViVmlldy0+bWFw
UmVjdEZyb21XZWJDb250ZW50KFFSZWN0KHJlY3QpKTsKLSAgICBJdGVtU2VsZWN0b3JDb250ZXh0
T2JqZWN0KiBjb250ZXh0T2JqZWN0ID0gbmV3IEl0ZW1TZWxlY3RvckNvbnRleHRPYmplY3QobWFw
cGVkUmVjdCwgaXRlbXMsIG1fc2VsZWN0ZWRJbmRleCk7CisgICAgSXRlbVNlbGVjdG9yQ29udGV4
dE9iamVjdCogY29udGV4dE9iamVjdCA9IG5ldyBJdGVtU2VsZWN0b3JDb250ZXh0T2JqZWN0KG1h
cHBlZFJlY3QsIGl0ZW1zLCAobV9zZWxlY3Rpb25UeXBlID09IFdlYlBvcHVwTWVudVByb3h5UXQ6
Ok11bHRpcGxlU2VsZWN0aW9uKSk7CiAgICAgY3JlYXRlSXRlbShjb250ZXh0T2JqZWN0KTsKICAg
ICBpZiAoIW1faXRlbVNlbGVjdG9yKSB7Ci0gICAgICAgIG5vdGlmeVZhbHVlQ2hhbmdlZCgpOwor
ICAgICAgICBoaWRlUG9wdXBNZW51KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUVF1
aWNrV2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5zZXREaWFsb2dBY3RpdmUodHJ1ZSk7
CkBAIC0yNTEsMTIgKzI4NiwxNiBAQCB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OmhpZGVQb3B1
cE1lbnUoKQogICAgIG1faXRlbVNlbGVjdG9yLmNsZWFyKCk7CiAgICAgUVF1aWNrV2ViVmlld1By
aXZhdGU6OmdldChtX3dlYlZpZXcpLT5zZXREaWFsb2dBY3RpdmUoZmFsc2UpOwogICAgIG1fY29u
dGV4dC5jbGVhcigpOwotICAgIG5vdGlmeVZhbHVlQ2hhbmdlZCgpOworCisgICAgaWYgKG1fY2xp
ZW50KSB7CisgICAgICAgIG1fY2xpZW50LT5jbG9zZVBvcHVwTWVudSgpOworICAgICAgICBpbnZh
bGlkYXRlKCk7CisgICAgfQogfQogCiB2b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6OnNlbGVjdElu
ZGV4KGludCBpbmRleCkKIHsKLSAgICBtX3NlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAgICBtX2Ns
aWVudC0+Y2hhbmdlU2VsZWN0ZWRJbmRleChpbmRleCk7CiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51
UHJveHlRdDo6Y3JlYXRlSXRlbShRT2JqZWN0KiBjb250ZXh0T2JqZWN0KQpAQCAtMjY5LDIzICsz
MDgsMTkgQEAgdm9pZCBXZWJQb3B1cE1lbnVQcm94eVF0OjpjcmVhdGVJdGVtKFFPYmplY3QqIGNv
bnRleHRPYmplY3QpCiAKICAgICBjcmVhdGVDb250ZXh0KGNvbXBvbmVudCwgY29udGV4dE9iamVj
dCk7CiAgICAgUU9iamVjdCogb2JqZWN0ID0gY29tcG9uZW50LT5iZWdpbkNyZWF0ZShtX2NvbnRl
eHQuZ2V0KCkpOwotICAgIGlmICghb2JqZWN0KSB7Ci0gICAgICAgIG1fY29udGV4dC5jbGVhcigp
OworICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm47Ci0gICAgfQogCiAgICAgbV9pdGVt
U2VsZWN0b3IgPSBhZG9wdFB0cihxb2JqZWN0X2Nhc3Q8UVF1aWNrSXRlbSo+KG9iamVjdCkpOwot
ICAgIGlmICghbV9pdGVtU2VsZWN0b3IpIHsKLSAgICAgICAgbV9jb250ZXh0LmNsZWFyKCk7Ci0g
ICAgICAgIG1faXRlbVNlbGVjdG9yLmNsZWFyKCk7CisgICAgaWYgKCFtX2l0ZW1TZWxlY3RvcikK
ICAgICAgICAgcmV0dXJuOwotICAgIH0KIAogICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lH
TkFMKGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1Qoc2VsZWN0SW5kZXgoaW50
KSkpOwogCiAgICAgLy8gV2UgZW5xdWV1ZSB0aGVzZSBiZWNhdXNlIHRoZXkgYXJlIHRyaWdnZXJl
ZCBieSBtX2l0ZW1TZWxlY3RvciBhbmQgd2lsbCBsZWFkIHRvIGl0cyBkZXN0cnVjdGlvbi4KLSAg
ICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChhY2NlcHRlZFdpdGhPcmlnaW5hbEluZGV4
KGludCkpLCBTTE9UKGhpZGVQb3B1cE1lbnUoKSksIFF0OjpRdWV1ZWRDb25uZWN0aW9uKTsKLSAg
ICBjb25uZWN0KGNvbnRleHRPYmplY3QsIFNJR05BTChyZWplY3RlZCgpKSwgU0xPVChoaWRlUG9w
dXBNZW51KCkpLCBRdDo6UXVldWVkQ29ubmVjdGlvbik7CisgICAgY29ubmVjdChjb250ZXh0T2Jq
ZWN0LCBTSUdOQUwoZG9uZSgpKSwgU0xPVChoaWRlUG9wdXBNZW51KCkpLCBRdDo6UXVldWVkQ29u
bmVjdGlvbik7CisgICAgaWYgKG1fc2VsZWN0aW9uVHlwZSA9PSBXZWJQb3B1cE1lbnVQcm94eVF0
OjpTaW5nbGVTZWxlY3Rpb24pCisgICAgICAgIGNvbm5lY3QoY29udGV4dE9iamVjdCwgU0lHTkFM
KGFjY2VwdGVkV2l0aE9yaWdpbmFsSW5kZXgoaW50KSksIFNMT1QoaGlkZVBvcHVwTWVudSgpKSwg
UXQ6OlF1ZXVlZENvbm5lY3Rpb24pOwogCiAgICAgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmdldCht
X3dlYlZpZXcpLT5hZGRBdHRhY2hlZFByb3BlcnR5VG8obV9pdGVtU2VsZWN0b3IuZ2V0KCkpOwog
ICAgIG1faXRlbVNlbGVjdG9yLT5zZXRQYXJlbnRJdGVtKG1fd2ViVmlldyk7CkBAIC0zMDgsMTQg
KzM0Myw2IEBAIHZvaWQgV2ViUG9wdXBNZW51UHJveHlRdDo6Y3JlYXRlQ29udGV4dChRUW1sQ29t
cG9uZW50KiBjb21wb25lbnQsIFFPYmplY3QqIGNvbnRlCiAgICAgbV9jb250ZXh0LT5zZXRDb250
ZXh0T2JqZWN0KGNvbnRleHRPYmplY3QpOwogfQogCi12b2lkIFdlYlBvcHVwTWVudVByb3h5UXQ6
Om5vdGlmeVZhbHVlQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1fY2xpZW50KSB7Ci0gICAgICAgIG1f
Y2xpZW50LT52YWx1ZUNoYW5nZWRGb3JQb3B1cE1lbnUodGhpcywgbV9zZWxlY3RlZEluZGV4KTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CiAKIC8vIFNpbmNlIHdlIGRlZmluZSBRT2JqZWN0cyBpbiBXZWJQb3B1cE1lbnVQcm94eVF0LmNw
cCwgdGhpcyB3aWxsIHRyaWdnZXIgbW9jIHRvIHJ1biBvbiAuY3BwLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVByb3h5UXQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQb3B1cE1lbnVQcm94eVF0LmgKaW5kZXggMjFlZWM1ZDFk
MjU0ODQwYTkzNGE1YjhhMGM3YWM0MTgzOGYxNThlNC4uM2ViNTQ0ZDYxNjdiYmViMWVlMTlhNmRk
ODgyZWY5YTI5YWUxOTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYlBvcHVwTWVudVByb3h5UXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
V2ViUG9wdXBNZW51UHJveHlRdC5oCkBAIC00Miw2ICs0MiwxMSBAQCBjbGFzcyBXZWJQb3B1cE1l
bnVQcm94eVF0IDogcHVibGljIFFPYmplY3QsIHB1YmxpYyBXZWJQb3B1cE1lbnVQcm94eSB7CiAg
ICAgUV9PQkpFQ1QKIAogcHVibGljOgorICAgIGVudW0gU2VsZWN0aW9uVHlwZSB7CisgICAgICAg
IFNpbmdsZVNlbGVjdGlvbiwKKyAgICAgICAgTXVsdGlwbGVTZWxlY3Rpb24KKyAgICB9OworCiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViUG9wdXBNZW51UHJveHlRdD4gY3JlYXRlKFdlYlBvcHVw
TWVudVByb3h5OjpDbGllbnQqIGNsaWVudCwgUVF1aWNrV2ViVmlldyogd2ViVmlldykKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViUG9wdXBNZW51UHJveHlRdChjbGllbnQs
IHdlYlZpZXcpKTsKQEAgLTYxLDEzICs2NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgY3JlYXRl
SXRlbShRT2JqZWN0Kik7CiAgICAgdm9pZCBjcmVhdGVDb250ZXh0KFFRbWxDb21wb25lbnQqLCBR
T2JqZWN0Kik7CiAKLSAgICB2b2lkIG5vdGlmeVZhbHVlQ2hhbmdlZCgpOwotCiAgICAgT3duUHRy
PFFRbWxDb250ZXh0PiBtX2NvbnRleHQ7CiAgICAgT3duUHRyPFFRdWlja0l0ZW0+IG1faXRlbVNl
bGVjdG9yOwogCiAgICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OwotICAgIGludDMyX3QgbV9z
ZWxlY3RlZEluZGV4OworICAgIFNlbGVjdGlvblR5cGUgbV9zZWxlY3Rpb25UeXBlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5jcHAKaW5kZXggOTQwY2I5NWQ4NGNk
YTA5NGFkZDU2YzgxZjM5OTZkNzM4MWVjZjM5Mi4uNGMzMDlkY2FmYTE2YWM3NGUzMGEzMWVkYjM3
ZDU2MGU3OTJlOTA4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmNwcApAQCAtNTksOSArNTksMTQgQEAgdm9p
ZCBXZWJQb3B1cE1lbnU6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW50IG5ld0luZGV4KQogICAg
IGlmICghbV9wb3B1cENsaWVudCkKICAgICAgICAgcmV0dXJuOwogCisjaWYgUExBVEZPUk0oUVQp
CisgICAgaWYgKG5ld0luZGV4ID49IDApCisgICAgICAgIG1fcG9wdXBDbGllbnQtPmxpc3RCb3hT
ZWxlY3RJdGVtKG5ld0luZGV4LCBtX3BvcHVwQ2xpZW50LT5tdWx0aXBsZSgpLCBmYWxzZSk7Cisj
ZWxzZQogICAgIG1fcG9wdXBDbGllbnQtPnBvcHVwRGlkSGlkZSgpOwogICAgIGlmIChuZXdJbmRl
eCA+PSAwKQogICAgICAgICBtX3BvcHVwQ2xpZW50LT52YWx1ZUNoYW5nZWQobmV3SW5kZXgpOwor
I2VuZGlmCiB9CiAKIHZvaWQgV2ViUG9wdXBNZW51OjpzZXRUZXh0Rm9ySW5kZXgoaW50IGluZGV4
KQpAQCAtODcsNyArOTIsNyBAQCBWZWN0b3I8V2ViUG9wdXBJdGVtPiBXZWJQb3B1cE1lbnU6OnBv
cHVsYXRlSXRlbXMoKQogICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBzdHls
aW5nIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9ycy4KICAgICAgICAgICAgIC8v
IEZJWE1FOiBGaW5kIGEgd2F5IHRvIGN1c3RvbWl6ZSB0ZXh0IGNvbG9yIHdoZW4gYW4gaXRlbSBp
cyBoaWdobGlnaHRlZC4KICAgICAgICAgICAgIFBvcHVwTWVudVN0eWxlIGl0ZW1TdHlsZSA9IG1f
cG9wdXBDbGllbnQtPml0ZW1TdHlsZShpKTsKLSAgICAgICAgICAgIGl0ZW1zLmFwcGVuZChXZWJQ
b3B1cEl0ZW0oV2ViUG9wdXBJdGVtOjpJdGVtLCBtX3BvcHVwQ2xpZW50LT5pdGVtVGV4dChpKSwg
aXRlbVN0eWxlLnRleHREaXJlY3Rpb24oKSwgaXRlbVN0eWxlLmhhc1RleHREaXJlY3Rpb25PdmVy
cmlkZSgpLCBtX3BvcHVwQ2xpZW50LT5pdGVtVG9vbFRpcChpKSwgbV9wb3B1cENsaWVudC0+aXRl
bUFjY2Vzc2liaWxpdHlUZXh0KGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNFbmFibGVkKGkpLCBt
X3BvcHVwQ2xpZW50LT5pdGVtSXNMYWJlbChpKSkpOworICAgICAgICAgICAgaXRlbXMuYXBwZW5k
KFdlYlBvcHVwSXRlbShXZWJQb3B1cEl0ZW06Okl0ZW0sIG1fcG9wdXBDbGllbnQtPml0ZW1UZXh0
KGkpLCBpdGVtU3R5bGUudGV4dERpcmVjdGlvbigpLCBpdGVtU3R5bGUuaGFzVGV4dERpcmVjdGlv
bk92ZXJyaWRlKCksIG1fcG9wdXBDbGllbnQtPml0ZW1Ub29sVGlwKGkpLCBtX3BvcHVwQ2xpZW50
LT5pdGVtQWNjZXNzaWJpbGl0eVRleHQoaSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0VuYWJsZWQo
aSksIG1fcG9wdXBDbGllbnQtPml0ZW1Jc0xhYmVsKGkpLCBtX3BvcHVwQ2xpZW50LT5pdGVtSXNT
ZWxlY3RlZChpKSkpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQb3B1cE1lbnUuaAppbmRleCA4ZTY2
MjUwMTg1M2E5ZjQ5MWE3ZGZkMWZhYmQ3MDA3ZTBjYjQ5YThjLi42MzE5YjlkNTU0ZGMzZmMyM2Yx
ODljNGY5NmE2MjRhYWFhMTI0YzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBvcHVwTWVudS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUG9wdXBNZW51LmgKQEAgLTQ4LDcgKzQ4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgZGlzY29ubmVjdEZyb21QYWdlKCkgeyBtX3BhZ2UgPSAwOyB9CiAg
ICAgdm9pZCBkaWRDaGFuZ2VTZWxlY3RlZEluZGV4KGludCBuZXdJbmRleCk7CiAgICAgdm9pZCBz
ZXRUZXh0Rm9ySW5kZXgoaW50IG5ld0luZGV4KTsKLSNpZiBQTEFURk9STShHVEspICAgIAorI2lm
IFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oUVQpCiAgICAgV2ViQ29yZTo6UG9wdXBNZW51Q2xp
ZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX3BvcHVwQ2xpZW50OyB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9xdC9X
ZWJQb3B1cE1lbnVRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcAppbmRleCBiMjFmMDZjY2Y3MjNlNGRjNzFiZDA5NTdk
MzU2MjJhZmQwMWNkMjJjLi5mMGE4Zjc3NjMwYWE2ZmY4ZDUzZjAxNTZmYjVjMWVjNjZjYjY4Mjc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0
L1dlYlBvcHVwTWVudVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3F0L1dlYlBvcHVwTWVudVF0LmNwcApAQCAtMjcsMTMgKzI3LDE1IEBACiAjaW5j
bHVkZSAiV2ViUG9wdXBNZW51LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVBvcHVwTWVudURhdGEu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL1BvcHVwTWVudUNsaWVudC5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgV2ViUG9wdXBNZW51Ojpz
ZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0JiwgUGxhdGZvcm1Qb3B1cE1lbnVEYXRhJikK
K3ZvaWQgV2ViUG9wdXBNZW51OjpzZXRVcFBsYXRmb3JtRGF0YShjb25zdCBJbnRSZWN0JiwgUGxh
dGZvcm1Qb3B1cE1lbnVEYXRhJiBkYXRhKQogeworICAgIGRhdGEubXVsdGlwbGVTZWxlY3Rpb25z
ID0gbV9wb3B1cENsaWVudC0+bXVsdGlwbGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
Nzc5ODdmMjZjNmMwOTIxMzAxZmU2YTQzZDlmNjdiNTQ2NGJiMjNiMi4uMWZjM2ZhNjA3MGE4ZDUz
ZmM0NjYzZjcyNTE0YWI4ZDdkMTg4Mzg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjM5NCwxMSArMjM5NCwxNiBAQCB2b2lkIFdlYlBh
Z2U6OmNvdW50U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0
aW9ucywgdWludDMyXwogCiB2b2lkIFdlYlBhZ2U6OmRpZENoYW5nZVNlbGVjdGVkSW5kZXhGb3JB
Y3RpdmVQb3B1cE1lbnUoaW50MzJfdCBuZXdJbmRleCkKIHsKKyAgICBjaGFuZ2VTZWxlY3RlZElu
ZGV4KG5ld0luZGV4KTsKKyAgICBtX2FjdGl2ZVBvcHVwTWVudSA9IDA7Cit9CisKK3ZvaWQgV2Vi
UGFnZTo6Y2hhbmdlU2VsZWN0ZWRJbmRleChpbnQzMl90IGluZGV4KQorewogICAgIGlmICghbV9h
Y3RpdmVQb3B1cE1lbnUpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fYWN0aXZlUG9wdXBNZW51
LT5kaWRDaGFuZ2VTZWxlY3RlZEluZGV4KG5ld0luZGV4KTsKLSAgICBtX2FjdGl2ZVBvcHVwTWVu
dSA9IDA7CisgICAgbV9hY3RpdmVQb3B1cE1lbnUtPmRpZENoYW5nZVNlbGVjdGVkSW5kZXgoaW5k
ZXgpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBmaWxlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IDRkMjA0MjFlMGJkODc3MDhmYTE3NjNhMTEzMGZhMzU3NmFhMGYy
YWIuLjFiNzcwOGE0Y2FlNWUzZTNkNjQzYTE0OTU4ZGYzYzYxZTgzODdkNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjk3LDYgKzY5NywxMCBA
QCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGZhaWxlZFRvU2hvd1BvcHVw
TWVudSgpOwogI2VuZGlmCisjaWYgUExBVEZPUk0oUVQpCisgICAgdm9pZCBoaWRlUG9wdXBNZW51
KCk7CisgICAgdm9pZCBzZWxlY3RlZEluZGV4KGludDMyX3QgbmV3SW5kZXgpOworI2VuZGlmCiAK
ICAgICB2b2lkIGRpZENob29zZUZpbGVzRm9yT3BlblBhbmVsKGNvbnN0IFZlY3RvcjxTdHJpbmc+
Jik7CiAgICAgdm9pZCBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsKQEAgLTcyNCw2ICs3MjgsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGlkU2VsZWN0SXRlbUZyb21BY3RpdmVDb250ZXh0TWVudShj
b25zdCBXZWJDb250ZXh0TWVudUl0ZW1EYXRhJik7CiAjZW5kaWYKIAorICAgIHZvaWQgY2hhbmdl
U2VsZWN0ZWRJbmRleChpbnQzMl90IGluZGV4KTsKICAgICB2b2lkIHNldENhblN0YXJ0TWVkaWFU
aW1lckZpcmVkKCk7CiAKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDRjMjYwZWI5
MDVkNjliMmM4YzdjMTU2ZjU1NzRlOWJkMmM3YjRmMjIuLjM5YzgxMTRiNTgxOTg0NmFlYzczMGU1
ZDBkMDMyODZkOWJlZmNmMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0xNjYsNyArMTY2LDExIEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgewogICAgIFNldFRleHRGb3JBY3RpdmVQb3B1cE1lbnUoaW50MzJfdCBp
bmRleCk7CiAjaWYgUExBVEZPUk0oR1RLKSAgICAKICAgICBGYWlsZWRUb1Nob3dQb3B1cE1lbnUo
KTsKLSNlbmRpZiAgICAKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQorICAgIEhpZGVQb3B1cE1l
bnUoKTsKKyAgICBTZWxlY3RlZEluZGV4KGludDMyX3QgbmV3SW5kZXgpOworI2VuZGlmCiAgICAg
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgIyBDb250ZXh0IG1lbnUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvcXQvV2ViUGFnZVF0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCmluZGV4
IDJlOTBhNzM2MGI4ODhiNTY5NTFkZDc5ZjgzYmMyYzgzODAzMWVjNzIuLjE4ZTRmOTQ4YTQwNjZh
OWRkMmFlMzFhMjliN2M1MDg3NmE0Mzc4ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9xdC9XZWJQYWdlUXQuY3BwCkBAIC0yOCw5ICsyOCwxMSBAQAogI2lu
Y2x1ZGUgIldlYlBhZ2UuaCIKIAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSAiUG9wdXBNZW51Q2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViRWRpdG9yQ2xpZW50LmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgorI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0RPTVdyYXBwZXJXb3JsZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9jdXNDb250
cm9sbGVyLmg+CkBAIC00MjIsNCArNDI0LDE4IEBAIHZvaWQgV2ViUGFnZTo6c2V0VXNlclNjcmlw
dHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHNjcmlwdHMpCiAgICAgICAgIHBhZ2VHcm91cC0+YWRk
VXNlclNjcmlwdFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIHNjcmlwdHMuYXQoaSks
IEtVUkwoKSwgbnVsbHB0ciwgbnVsbHB0ciwgSW5qZWN0QXREb2N1bWVudEVuZCwgSW5qZWN0SW5U
b3BGcmFtZU9ubHkpOwogfQogCit2b2lkIFdlYlBhZ2U6OnNlbGVjdGVkSW5kZXgoaW50MzJfdCBu
ZXdJbmRleCkKK3sKKyAgICBjaGFuZ2VTZWxlY3RlZEluZGV4KG5ld0luZGV4KTsKK30KKwordm9p
ZCBXZWJQYWdlOjpoaWRlUG9wdXBNZW51KCkKK3sKKyAgICBpZiAoIW1fYWN0aXZlUG9wdXBNZW51
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2FjdGl2ZVBvcHVwTWVudS0+Y2xpZW50KCktPnBv
cHVwRGlkSGlkZSgpOworICAgIG1fYWN0aXZlUG9wdXBNZW51ID0gMDsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>
<flag name="review"
          id="162225"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>