<?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>164050</bug_id>
          
          <creation_ts>2016-10-27 01:50:26 -0700</creation_ts>
          <short_desc>[GTK] New API to notify about dynamically added forms</short_desc>
          <delta_ts>2016-11-22 01:36:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugzilla.gnome.org/show_bug.cgi?id=773327</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Villar Senin">svillar</reporter>
          <assigned_to name="Sergio Villar Senin">svillar</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>gustavo</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1245054</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-10-27 01:50:26 -0700</bug_when>
    <thetext>[GTK] New API to notify about dynamically added forms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245060</commentid>
    <comment_count>1</comment_count>
      <attachid>293001</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-10-27 01:58:11 -0700</bug_when>
    <thetext>Created attachment 293001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245064</commentid>
    <comment_count>2</comment_count>
      <attachid>293001</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-27 02:26:17 -0700</bug_when>
    <thetext>Comment on attachment 293001
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:169
&gt; +static void didAssociateFormControls(WKBundlePageRef page, WKArrayRef elementHandles, const void* clientInfo)

Omit names of unused params.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:174
&gt; +static bool shouldNotifyOnFormChanges(WKBundlePageRef page, const void* clientInfo)

Ditto.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:176
&gt; +    return true;

I guess the previous callback is never emitted if this is not implemented or returns false?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:203
&gt; +    WKBundlePageFormClientV2 wkBundlePageFormClient = {
&gt; +        {
&gt; +            2, // version
&gt; +            clientInfo,
&gt; +        },
&gt; +        0, // textFieldDidBeginEditing,
&gt; +        0, // textFieldDidEndEditing
&gt; +        0, // textDidChangeInTextField
&gt; +        0, // textDidChangeInTextArea
&gt; +        0, // shouldPerformActionInTextField
&gt; +        0, // willSubmitForm,
&gt; +
&gt; +        // Version 1.
&gt; +        0, // willSendSubmitEvent
&gt; +
&gt; +        // version 2.
&gt; +        0, // didFocusTextField
&gt; +        shouldNotifyOnFormChanges,
&gt; +        didAssociateFormControls,
&gt; +    };
&gt; +    WKBundlePageSetFormClient(page, &amp;wkBundlePageFormClient.base);

This doesn&apos;t belong here, you should do this in WebKitWebPage, see webkitWebPageCreate. That way you can use the page as client info and use that directly from the callback.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:479
&gt; +     * WebKitWebPage::did-associate-form-controls:

did-foo is WebKit internals style, but in GTK+ API we don&apos;t usually use that style. I would name this something like form-controls-added or form-controls-associated

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:481
&gt; +     *

Would it be possible to include information about the form controls added?

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:492
&gt; +        0, 0, 0,

0, 0, nullptr

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPagePrivate.h:29
&gt; +void webkitWebPageDidAssociateFormControls(WebKitWebPage*);

You don&apos;t need this either if the page form client is handled directly in WebKitWebPage.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:252
&gt; +    test-&gt;runJavaScriptAndWaitUntilFinished(addFormScript, 0);

0 -&gt; nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:271
&gt; +    WebViewTest::add(&quot;WebKitWebExtension&quot;, &quot;document-loaded-signal&quot;, testWebExtensionDidAssociateFormControls);

document-loaded-signal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245088</commentid>
    <comment_count>3</comment_count>
      <attachid>293001</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-10-27 04:10:59 -0700</bug_when>
    <thetext>Comment on attachment 293001
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:176
&gt;&gt; +    return true;
&gt; 
&gt; I guess the previous callback is never emitted if this is not implemented or returns false?

Right.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebExtension.cpp:203
&gt;&gt; +    WKBundlePageSetFormClient(page, &amp;wkBundlePageFormClient.base);
&gt; 
&gt; This doesn&apos;t belong here, you should do this in WebKitWebPage, see webkitWebPageCreate. That way you can use the page as client info and use that directly from the callback.

Right. I have messed it somehow because I have done precisely what you are mentioning. Not sure how I could end up with this...

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:479
&gt;&gt; +     * WebKitWebPage::did-associate-form-controls:
&gt; 
&gt; did-foo is WebKit internals style, but in GTK+ API we don&apos;t usually use that style. I would name this something like form-controls-added or form-controls-associated

Ack.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:271
&gt;&gt; +    WebViewTest::add(&quot;WebKitWebExtension&quot;, &quot;document-loaded-signal&quot;, testWebExtensionDidAssociateFormControls);
&gt; 
&gt; document-loaded-signal?

It&apos;s obviously wrong. Copy-paste issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245091</commentid>
    <comment_count>4</comment_count>
      <attachid>293001</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-10-27 04:22:17 -0700</bug_when>
    <thetext>Comment on attachment 293001
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:481
&gt;&gt; +     *
&gt; 
&gt; Would it be possible to include information about the form controls added?

Yep. The notification carries an array of associated elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245111</commentid>
    <comment_count>5</comment_count>
      <attachid>293001</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-10-27 06:53:20 -0700</bug_when>
    <thetext>Comment on attachment 293001
Patch

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

Awesome!

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:484
&gt; +     * Emmited after form elements (or form associated elements) are associated to a particular web
&gt; +     * page. Useful to implement form autofilling with web pages where form fields are dynamically
&gt; +     * added (as many JS frameworks) do.

Emmited -&gt; Emitted

So this signal can occur multiple times per load, right? That should be mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245128</commentid>
    <comment_count>6</comment_count>
      <attachid>293022</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-10-27 08:48:13 -0700</bug_when>
    <thetext>Created attachment 293022
Patch

New approach using an API::InjectedBundle::FormClient subclass to avoid the C API churn. Also renamed the signal name to make it more glib-ish. Last but not least, the signal now carries an array of WebKitDOMElement associated to forms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245129</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-27 08:54:18 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created attachment 293022 [details]
&gt; Patch
&gt; 
&gt; New approach using an API::InjectedBundle::FormClient subclass to avoid the
&gt; C API churn. Also renamed the signal name to make it more glib-ish. Last but
&gt; not least, the signal now carries an array of WebKitDOMElement associated to
&gt; forms

I looked for API::InjectedBundle::FormClient before to propose you to use it instead and didn&apos;t find it, now I&apos;ve seen that it&apos;s not in API dir.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245137</commentid>
    <comment_count>8</comment_count>
      <attachid>293022</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-10-27 09:05:59 -0700</bug_when>
    <thetext>Comment on attachment 293022
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:509
&gt; +     * @elements: a #GPtrArray of #WebKitDOMElement with the associated DOM elements in forms

We should clarify here the ownership of both the container (the array, and the contents)

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:272
&gt; +    gpointer data = g_object_get_data(G_OBJECT(extension), &quot;dbus-connection&quot;);
&gt; +    if (data)
&gt; +        emitFormControlsAssociated(G_DBUS_CONNECTION(data), formElements-&gt;len);
&gt; +    else
&gt; +        delayedSignalsQueue.append(DelayedSignal(FormControlsAssociatedSignal, formElements-&gt;len));

We should check the contents of the array, that the elements are really a WebKitDOMElement, I wonder if they should be WebKitDOMHTMLElement, btw. Instead of passing the len, maybe we could use an id in the UI process and pass the element id, and then check it&apos;s the one we added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1247121</commentid>
    <comment_count>9</comment_count>
      <attachid>293022</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-01 16:36:05 -0700</bug_when>
    <thetext>Comment on attachment 293022
Patch

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

Thanks a bunch. It looks almost there, but Carlos&apos;s comments above still need to be addressed.

&gt;&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:509
&gt;&gt; +     * @elements: a #GPtrArray of #WebKitDOMElement with the associated DOM elements in forms
&gt; 
&gt; We should clarify here the ownership of both the container (the array, and the contents)

I guess the right annotation would be:

@elements: (element-type WebKit.DOMElement) (transfer none): a #GPtrArray...

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:513
&gt; +     * Emmited after form elements (or form associated elements) are associated to a particular web
&gt; +     * page. Useful to implement form autofilling with web pages where form fields are dynamically
&gt; +     * added (as many JS frameworks) do.

I guess you missed my earlier comment. Please fix Emmited -&gt; Emitted. Please also mention here if it can be emitted more than once (I guess it can).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249009</commentid>
    <comment_count>10</comment_count>
      <attachid>294147</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-08 01:39:44 -0800</bug_when>
    <thetext>Created attachment 294147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249015</commentid>
    <comment_count>11</comment_count>
      <attachid>294147</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-08 02:32:25 -0800</bug_when>
    <thetext>Comment on attachment 294147
Patch

LGTM. I think Carlos will want to do final review. Please remember that we don&apos;t want to commit until Apple gets their internal CI working again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249027</commentid>
    <comment_count>12</comment_count>
      <attachid>294147</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-08 05:46:06 -0800</bug_when>
    <thetext>Comment on attachment 294147
Patch

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

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:357
&gt; +    void didAssociateFormControls(WebPage*, const Vector&lt;RefPtr&lt;WebCore::Element&gt;&gt;&amp; elements) override

No need for WebCore:: here.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:363
&gt; +        webkitWebPageFormControlsAssociated(m_webPage, formElements.get());

I think you can emit the signal here directly, it&apos;s just one line.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:510
&gt; +     * #WebKitDOMElement with the list of forms in the page

Indent this line, just adding 4 spaces or use a single line.

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:514
&gt; +     * added (as many JS frameworks) do. This might be emitted multiple times for the same web page.

(as many JS frameworks) do -&gt; (as many JS frameworks do)

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:517
&gt; +     * those cases the @elements array carries the list of those elements which mave moved.

mave moved -&gt; have moved

&gt; Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:518
&gt; +     *

Even when we use the transfer none, we should document here that the elements array will be alive during signal emission, and user should take a ref to keep it alive.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:225
&gt; +    g_main_loop_quit(test-&gt;m_mainLoop);

test-&gt;quitMainLoop();

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:235
&gt; +        0,

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:239
&gt; +        0,

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:243
&gt; +        0);

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:261
&gt; +    test-&gt;runJavaScriptAndWaitUntilFinished(addFormScript, 0);

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:263
&gt; +    g_main_loop_run(test-&gt;m_mainLoop);

Why do you run the main loop again right after it has quit? Where is it quit after this? Ah I see, didAssociateFormControlsCallback. This is racy I think. You shouldn&apos;t use runJavaScriptAndWaitUntilFinished in this case, but simply webkit_web_view_run_javascript (without ready handler) and run the loop manually. What we are interested in, is the didAssociateFormControlsCallback to be emitted

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:271
&gt; +    test-&gt;runJavaScriptAndWaitUntilFinished(moveFormElementScript, 0);

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp:272
&gt; +

And here you need to run the loop again to ensure the callback has been called, this only ensures that the script has run, but we don&apos;t know if the callback was emitted or not.

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:250
&gt; +        0,

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:255
&gt; +        0);

nullptr

&gt; Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:267
&gt; +    GUniquePtr&lt;char&gt; formIds(g_string_free(formIdsBuilder, false));

FALSE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249066</commentid>
    <comment_count>13</comment_count>
      <attachid>294165</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-08 09:26:10 -0800</bug_when>
    <thetext>Created attachment 294165
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249312</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-09 10:27:03 -0800</bug_when>
    <thetext>Tree is open again, ready to land it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1249739</commentid>
    <comment_count>15</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-10 02:18:42 -0800</bug_when>
    <thetext>Committed r208532: &lt;http://trac.webkit.org/changeset/208532&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250716</commentid>
    <comment_count>16</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-12 14:09:04 -0800</bug_when>
    <thetext>So we need to figure out the warning it introduced:

[5372/5556] Generating ../../WebKit2WebExtension-4.0.gir
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement
&lt;unknown&gt;:: Warning: WebKit2WebExtension: Deprecated reference to identifier prefix WebKit in GIName WebKit.DOMElement

I tried changing &quot;WebKit.DOMElement&quot; to simply &quot;DOMElement&quot;, but:

[38/60] Generating ../../WebKit2WebExtension-4.0.gir
&lt;unknown&gt;:: Warning: WebKit2WebExtension: (Signal)form-controls-associated: DOMElement: Unknown type: &apos;DOMElement&apos;

I also tried &quot;WebKit2.DOMElement&quot;:

[36/60] Generating ../../WebKit2WebExtension-4.0.gir
&lt;unknown&gt;:: Warning: WebKit2WebExtension: (Signal)form-controls-associated: WebKit2.DOMElement: Unknown type: &apos;WebKit2.DOMElement&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253080</commentid>
    <comment_count>17</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-11-19 08:16:12 -0800</bug_when>
    <thetext>If we can&apos;t figure this out (I don&apos;t know what to do), I think we should roll it out. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253193</commentid>
    <comment_count>18</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-11-21 00:25:43 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; If we can&apos;t figure this out (I don&apos;t know what to do), I think we should
&gt; roll it out. :(

Because of a warning compiling the gtk-doc? I don&apos;t think so. Rolling this out would affect epiphany, this is not causing any crash, not build failure and we have plenty of time to fix it before the stable release.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253355</commentid>
    <comment_count>19</comment_count>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2016-11-22 01:36:30 -0800</bug_when>
    <thetext>I&apos;m fixing the warning in another bug, there is no reason to revert this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293001</attachid>
            <date>2016-10-27 01:58:11 -0700</date>
            <delta_ts>2016-10-27 08:48:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164050-20161027105247.patch</filename>
            <type>text/plain</type>
            <size>13787</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDliNzk5Mzk3NWVjM2Rj
NmVlNWMzNzI5MjhmZmUzMWYxM2NhNTBmZi4uN2ZjN2FjMDExZjA2NGZlMzJjYmJlZjg1MGM5ZWQ0
OWU4MTg4ZGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE2LTEwLTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE5l
dyBBUEkgdG8gbm90aWZ5IGFib3V0IGR5bmFtaWNhbGx5IGFkZGVkIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5ldyBBUEkgZXhwb3J0
cyB0aGUgV2ViQ29yZSBldmVudCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMgdGhyb3VnaCB0aGUg
d2ViIGV4dGVuc2lvbgorICAgICAgICBtZWNoYW5pc20uIFRoaXMgd2lsbCBoZWxwIGNsaWVudHMg
KG1haW5seSB3ZWIgYnJvd3NlcnMpIHRvIGltcGxlbWVudCByb2J1c3QgYXV0byBmaWxsaW5nCisg
ICAgICAgIG1lY2hhbmlzbXMuIEl0IGRlYWxzIG5pY2VseSB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0
ZWQgZm9ybXMgKGFuZCBmb3JtIGNvbnRyb2xzKSBhcyBtYW55IEpTCisgICAgICAgIGZyYW1ld29y
a3MgZG8gbm93YWRheXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcDoKKyAgICAgICAgKGRpZEFzc29jaWF0ZUZvcm1D
b250cm9scyk6CisgICAgICAgIChzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKTogU2V0IGl0IHRv
IFRSVUUgc28gdGhhdCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMgaXMgZW1pdHRlZC4KKyAgICAg
ICAgKGRpZENyZWF0ZVBhZ2UpOiBTZXQgdGhlIFdlYkV4dGVuc2lvbiBhcyBhIFBhZ2VGb3JtQ2xp
ZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRX
ZWJQYWdlLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfcGFnZV9jbGFzc19pbml0KTogQWRkZWQg
YSBuZXcgc2lnbmFsLgorICAgICAgICAod2Via2l0V2ViUGFnZURpZEFzc29jaWF0ZUZvcm1Db250
cm9scyk6IEVtaXQgdGhlIG5ldyBzaWduYWwuCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmg6CisKIDIwMTYtMTAtMjYgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIElEQktleVBh
dGggd2l0aCBhIFdURjo6VmFyaWFudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYkV4dGVuc2lvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0
ZW5zaW9uLmNwcAppbmRleCAzNDRmYjIyZWFiZGY4OWFhZDUxYzJiZTBhYzkwY2FlNWMxODFjMTIy
Li5iZjg0YjRlZTZiMjcxYTc0NTAyN2NiODM3MDFiOWQ3NzZhNmM1ZDZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViRXh0ZW5zaW9uLmNwcApAQCAtMTY2LDkgKzE2Niw0MSBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJFeHRlbnNpb25EaWRSZWNlaXZlTWVzc2FnZShXZWJLaXRXZWJF
eHRlbnNpb24qLCBjb25zdCBTdHJpbgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0K
IAorc3RhdGljIHZvaWQgZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0FycmF5UmVmIGVsZW1lbnRIYW5kbGVzLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQor
eworICAgIHdlYmtpdFdlYlBhZ2VEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoV0VCS0lUX1dFQl9F
WFRFTlNJT04oY2xpZW50SW5mbyktPnByaXYtPnBhZ2VzLmdldCh0b0ltcGwocGFnZSkpLmdldCgp
KTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdlcyhXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgd2Via2l0V2ViRXh0ZW5z
aW9uUGFnZUNyZWF0ZWQoV0VCS0lUX1dFQl9FWFRFTlNJT04oY2xpZW50SW5mbyksIHRvSW1wbChw
YWdlKSk7CisKKyAgICBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50VjIgd2tCdW5kbGVQYWdlRm9ybUNs
aWVudCA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgMiwgLy8gdmVyc2lvbgorICAgICAgICAg
ICAgY2xpZW50SW5mbywKKyAgICAgICAgfSwKKyAgICAgICAgMCwgLy8gdGV4dEZpZWxkRGlkQmVn
aW5FZGl0aW5nLAorICAgICAgICAwLCAvLyB0ZXh0RmllbGREaWRFbmRFZGl0aW5nCisgICAgICAg
IDAsIC8vIHRleHREaWRDaGFuZ2VJblRleHRGaWVsZAorICAgICAgICAwLCAvLyB0ZXh0RGlkQ2hh
bmdlSW5UZXh0QXJlYQorICAgICAgICAwLCAvLyBzaG91bGRQZXJmb3JtQWN0aW9uSW5UZXh0Rmll
bGQKKyAgICAgICAgMCwgLy8gd2lsbFN1Ym1pdEZvcm0sCisKKyAgICAgICAgLy8gVmVyc2lvbiAx
LgorICAgICAgICAwLCAvLyB3aWxsU2VuZFN1Ym1pdEV2ZW50CisKKyAgICAgICAgLy8gdmVyc2lv
biAyLgorICAgICAgICAwLCAvLyBkaWRGb2N1c1RleHRGaWVsZAorICAgICAgICBzaG91bGROb3Rp
ZnlPbkZvcm1DaGFuZ2VzLAorICAgICAgICBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMsCisgICAg
fTsKKyAgICBXS0J1bmRsZVBhZ2VTZXRGb3JtQ2xpZW50KHBhZ2UsICZ3a0J1bmRsZVBhZ2VGb3Jt
Q2xpZW50LmJhc2UpOwogfQogCiBzdGF0aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVS
ZWYsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dl
YktpdFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDAwZDc2YTkzNDg1MGMyZGNlOGI1NDE3
MjVhOTFkMGZiYTg4ZWQ0MjIuLjhiZjdhNGRlNGRlOTY5YTgyZDZiM2MwNDgzNjdiYTViYjQ3NGUx
ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTYwLDYgKzYwLDcg
QEAgZW51bSB7CiAgICAgU0VORF9SRVFVRVNULAogICAgIENPTlRFWFRfTUVOVSwKICAgICBDT05T
T0xFX01FU1NBR0VfU0VOVCwKKyAgICBESURfQVNTT0NJQVRFX0ZPUk1fQ09OVFJPTFMsCiAKICAg
ICBMQVNUX1NJR05BTAogfTsKQEAgLTQ3Myw2ICs0NzQsMjQgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNsYXNzKiBrbGFzcykKICAgICAgICAg
Z19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX0JPWEVELAogICAgICAgICBHX1RZUEVfTk9ORSwgMSwK
ICAgICAgICAgV0VCS0lUX1RZUEVfQ09OU09MRV9NRVNTQUdFIHwgR19TSUdOQUxfVFlQRV9TVEFU
SUNfU0NPUEUpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViUGFnZTo6ZGlkLWFzc29jaWF0
ZS1mb3JtLWNvbnRyb2xzOgorICAgICAqIEB3ZWJfcGFnZTogdGhlICNXZWJLaXRXZWJQYWdlIG9u
IHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqCisgICAgICogRW1taXRlZCBhZnRl
ciBmb3JtIGVsZW1lbnRzIChvciBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudHMpIGFyZSBhc3NvY2lh
dGVkIHRvIGEgcGFydGljdWxhciB3ZWIKKyAgICAgKiBwYWdlLiBVc2VmdWwgdG8gaW1wbGVtZW50
IGZvcm0gYXV0b2ZpbGxpbmcgd2l0aCB3ZWIgcGFnZXMgd2hlcmUgZm9ybSBmaWVsZHMgYXJlIGR5
bmFtaWNhbGx5CisgICAgICogYWRkZWQgKGFzIG1hbnkgSlMgZnJhbWV3b3JrcykgZG8uCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4xNgorICAgICAqLworICAgIHNpZ25hbHNbRElEX0FTU09DSUFU
RV9GT1JNX0NPTlRST0xTXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgImRpZC1hc3NvY2lhdGUt
Zm9ybS1jb250cm9scyIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsIDAsIDAsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9WT0lEX19WT0lELAorICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CiB9CiAKIFdl
YlBhZ2UqIHdlYmtpdFdlYlBhZ2VHZXRQYWdlKFdlYktpdFdlYlBhZ2UgKndlYlBhZ2UpCkBAIC01
OTIsNiArNjExLDExIEBAIHZvaWQgd2Via2l0V2ViUGFnZURpZFJlY2VpdmVNZXNzYWdlKFdlYktp
dFdlYlBhZ2UqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogfQogCit2b2lkIHdlYmtpdFdlYlBhZ2VEaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHMoV2ViS2l0V2ViUGFnZSogcGFnZSkKK3sKKyAgICBnX3NpZ25hbF9lbWl0KHBhZ2UsIHNp
Z25hbHNbRElEX0FTU09DSUFURV9GT1JNX0NPTlRST0xTXSwgMCk7Cit9CisKIC8qKgogICogd2Vi
a2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1lbnQ6CiAgKiBAd2ViX3BhZ2U6IGEgI1dlYktpdFdl
YlBhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKaW5kZXgg
OGRjZDQyYTlkYmMzMTRkNzg0YmFhZDM0YWM5ZTc4ZjZlZTk0Yzc4My4uMmYxOTFhNDYwMWNkM2Fj
MWI3ZGU4ZTI4NjliMDFhMDBmZDU0MTc5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2VQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2VQcml2YXRlLmgKQEAgLTI2LDYgKzI2LDcgQEAKIAogV2ViS2l0V2ViUGFnZSogd2Vi
a2l0V2ViUGFnZUNyZWF0ZShXZWJLaXQ6OldlYlBhZ2UqKTsKIHZvaWQgd2Via2l0V2ViUGFnZURp
ZFJlY2VpdmVNZXNzYWdlKFdlYktpdFdlYlBhZ2UqLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2VOYW1l
LCBBUEk6OkRpY3Rpb25hcnkmIG1lc3NhZ2UpOwordm9pZCB3ZWJraXRXZWJQYWdlRGlkQXNzb2Np
YXRlRm9ybUNvbnRyb2xzKFdlYktpdFdlYlBhZ2UqKTsKIFdlYktpdDo6V2ViUGFnZSogd2Via2l0
V2ViUGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSopOwogCiAjZW5kaWYgLy8gV2ViS2l0V2ViUGFn
ZVByaXZhdGVfaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDkyYzEwYzQxZDdiYjhmOTNhNjNmMmZlZGU5M2UyYmE1MTFlZmVlZDIuLmJhNzBhZTNj
MDA0NWIyM2JiNzI4Y2VhYjJlMTliNTY2NTJmMjdlNzUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0yNyAg
U2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBOZXcgQVBJIHRvIG5vdGlmeSBhYm91dCBkeW5hbWljYWxseSBhZGRlZCBmb3JtcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDUwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVz
dCBjYXNlIHRvIHZlcmlmeSB0aGF0IGRpbmFtaWNhbGx5IGFkZGVkIGZvcm1zIGNvcnJlY3RseSB0
cmlnZ2VyIHRoZQorICAgICAgICAiZGlkLWFzc29jaWF0ZS1mb3JtLWNvbnRyb2xzIiBzaWduYWwg
ZnJvbSBXZWJQYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3Rr
L1Rlc3RXZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKGRpZEFzc29jaWF0ZUZvcm1Db250cm9s
c0NhbGxiYWNrKToKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25EaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHMpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6CisgICAgICAgIChEZWxheWVkU2ln
bmFsOjpEZWxheWVkU2lnbmFsKToKKyAgICAgICAgKGVtaXREaWRBc3NvY2lhdGVGb3JtQ29udHJv
bHMpOgorICAgICAgICAoZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2spOgorICAgICAg
ICAocGFnZUNyZWF0ZWRDYWxsYmFjayk6CisKIDIwMTYtMTAtMjYgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gSlNDIHRlc3Qgd2FzbS55YW1s
L3dhc20vanMtYXBpL3Rlc3RfYmFzaWNfYXBpLmpzLmRlZmF1bHQtd2FzbSBhbmQgd2FzbS55YW1s
L3dhc20vanMtYXBpL3Rlc3RfTW9kdWxlLmpzLmRlZmF1bHQtd2FzbSBmYWlsIHdpdGggRXhjZXB0
aW9uOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV2ViQXNzZW1ibHkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0
ZW5zaW9ucy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdl
YkV4dGVuc2lvbnMuY3BwCmluZGV4IGI0MWU1ZWI4MmFmNjlmOGQ5NzM0ZWFkYjAxYTkwMTVkMmIw
YzVmYTMuLmY2YTk1YjM3ODVlMDRhYzhiNTg4NGM2NDA3MGFmY2RjMmNkYjdiNTEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9u
cy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJF
eHRlbnNpb25zLmNwcApAQCAtMjEyLDYgKzIxMiw1MCBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zdGFs
bE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dAogICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsIHBlcm1p
c3Npb25SZXF1ZXN0U2lnbmFsSUQpOwogfQogCitzdGF0aWMgdm9pZCBkaWRBc3NvY2lhdGVGb3Jt
Q29udHJvbHNDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hh
ciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgR1ZhcmlhbnQqIHJlc3VsdCwgV2ViVmlld1Rl
c3QqIHRlc3QpCit7CisgICAgdW5zaWduZWQgbnVtRm9ybXM7CisgICAgZ192YXJpYW50X2dldChy
ZXN1bHQsICIodSkiLCAmbnVtRm9ybXMpOworICAgIGdfYXNzZXJ0X2NtcGludChudW1Gb3Jtcywg
PT0sIDEpOworCisgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKK30KKwor
c3RhdGljIHZvaWQgdGVzdFdlYkV4dGVuc2lvbkRpZEFzc29jaWF0ZUZvcm1Db250cm9scyhXZWJW
aWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICBHVW5pcXVlUHRyPGNoYXI+IGV4
dGVuc2lvbkJ1c05hbWUoZ19zdHJkdXBfcHJpbnRmKCJvcmcud2Via2l0Lmd0ay5XZWJFeHRlbnNp
b25UZXN0JXUiLCBUZXN0OjpzX3dlYkV4dGVuc2lvbklEKSk7CisgICAgR1JlZlB0cjxHREJ1c1By
b3h5PiBwcm94eSA9IGFkb3B0R1JlZihidXMtPmNyZWF0ZVByb3h5KGV4dGVuc2lvbkJ1c05hbWUu
Z2V0KCksCisgICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsICJvcmcu
d2Via2l0Lmd0ay5XZWJFeHRlbnNpb25UZXN0IiwgdGVzdC0+bV9tYWluTG9vcCkpOworICAgIEdE
QnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IGdfZGJ1c19wcm94eV9nZXRfY29ubmVjdGlvbihw
cm94eS5nZXQoKSk7CisgICAgZ3VpbnQgaWQgPSBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfc3Vi
c2NyaWJlKGNvbm5lY3Rpb24sCisgICAgICAgIDAsCisgICAgICAgICJvcmcud2Via2l0Lmd0ay5X
ZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIkRpZEFzc29jaWF0ZUZvcm1Db250cm9scyIsCisg
ICAgICAgICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIDAsCisg
ICAgICAgIEdfREJVU19TSUdOQUxfRkxBR1NfTk9ORSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxHREJ1c1NpZ25hbENhbGxiYWNrPihkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNDYWxsYmFjayks
CisgICAgICAgIHRlc3QsCisgICAgICAgIDApOworICAgIGdfYXNzZXJ0KGlkKTsKKworICAgIHRl
c3QtPmxvYWRIdG1sKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48dGl0bGU+V2ViS2l0R1RLKyBXZWIg
RXh0ZW5zaW9ucyBUZXN0PC90aXRsZT48L2hlYWQ+PGRpdiBpZD1cInBsYWNlaG9sZGVyXCIvPiIs
IDApOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGFkZEZvcm1TY3JpcHQgPQorICAgICAgICAidmFyIGlucHV0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudChcImlucHV0XCIpOyIKKyAgICAgICAgImlucHV0LnR5cGUgPSBcInBhc3N3
b3JkXCI7IgorICAgICAgICAidmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9y
bVwiKTsiCisgICAgICAgICJmb3JtLmFwcGVuZENoaWxkKGlucHV0KTsiCisgICAgICAgICJ2YXIg
cGxhY2Vob2xkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInBsYWNlaG9sZGVyXCIpOyIK
KyAgICAgICAgInBsYWNlaG9sZGVyLmFwcGVuZENoaWxkKGZvcm0pOyI7CisgICAgdGVzdC0+cnVu
SmF2YVNjcmlwdEFuZFdhaXRVbnRpbEZpbmlzaGVkKGFkZEZvcm1TY3JpcHQsIDApOworCisgICAg
Z19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3ApOworCisgICAgZ19kYnVzX2Nvbm5lY3Rp
b25fc2lnbmFsX3Vuc3Vic2NyaWJlKGNvbm5lY3Rpb24sIGlkKTsKK30KKwogdm9pZCBiZWZvcmVB
bGwoKQogewogICAgIGJ1cyA9IG5ldyBXZWJLaXRUZXN0QnVzKCk7CkBAIC0yMjQsNiArMjY4LDcg
QEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVu
c2lvbiIsICJ3aW5kb3ctb2JqZWN0LWNsZWFyZWQiLCB0ZXN0V2ViRXh0ZW5zaW9uV2luZG93T2Jq
ZWN0Q2xlYXJlZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwg
Imlzb2xhdGVkLXdvcmxkIiwgdGVzdFdlYkV4dGVuc2lvbklzb2xhdGVkV29ybGQpOwogICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiaW5zdGFsbC1taXNzaW5nLXBsdWdpbnMt
cGVybWlzc2lvbi1yZXF1ZXN0IiwgdGVzdEluc3RhbGxNaXNzaW5nUGx1Z2luc1Blcm1pc3Npb25S
ZXF1ZXN0KTsKKyAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiZG9j
dW1lbnQtbG9hZGVkLXNpZ25hbCIsIHRlc3RXZWJFeHRlbnNpb25EaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHMpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBmZTZm
ZmNhZTg2MTYyMDA3ZjFlYTUyM2M2OWJmMWMxN2Q4ODMyYzhjLi4zY2U1ZWY2ZTM2Y2Q5ZTYxZmJj
ZDVlOTBhN2M5YzgzZGU5YjQ4ODU5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC01MSw2ICs1MSw5
IEBAIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIiAgPG1ldGhv
ZCBuYW1lPSdSZW1vdmVBVlBsdWdpbnNGcm9tR1NUUmVnaXN0cnknPiIKICAgICAiICA8L21ldGhv
ZD4iCiAgICAgIiAgPHNpZ25hbCBuYW1lPSdEb2N1bWVudExvYWRlZCcvPiIKKyAgICAiICA8c2ln
bmFsIG5hbWU9J0RpZEFzc29jaWF0ZUZvcm1Db250cm9scyc+IgorICAgICIgICA8YXJnIHR5cGU9
J3UnIG5hbWU9J251bUZvcm1zJyBkaXJlY3Rpb249J291dCcvPiIKKyAgICAiICA8L3NpZ25hbD4i
CiAgICAgIiAgPHNpZ25hbCBuYW1lPSdVUklDaGFuZ2VkJz4iCiAgICAgIiAgIDxhcmcgdHlwZT0n
cycgbmFtZT0ndXJpJyBkaXJlY3Rpb249J291dCcvPiIKICAgICAiICA8L3NpZ25hbD4iCkBAIC02
MSw2ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiB0eXBl
ZGVmIGVudW0gewogICAgIERvY3VtZW50TG9hZGVkU2lnbmFsLAogICAgIFVSSUNoYW5nZWRTaWdu
YWwsCisgICAgRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzU2lnbmFsLAogfSBEZWxheWVkU2lnbmFs
VHlwZTsKIAogc3RydWN0IERlbGF5ZWRTaWduYWwgewpAQCAtNzUsOCArNzksMTUgQEAgc3RydWN0
IERlbGF5ZWRTaWduYWwgewogICAgIHsKICAgICB9CiAKKyAgICBEZWxheWVkU2lnbmFsKERlbGF5
ZWRTaWduYWxUeXBlIHR5cGUsIHVuc2lnbmVkIG51bUZvcm1zKQorICAgICAgICA6IHR5cGUodHlw
ZSkKKyAgICAgICAgLCBudW1Gb3JtcyhudW1Gb3JtcykKKyAgICB7CisgICAgfQorCiAgICAgRGVs
YXllZFNpZ25hbFR5cGUgdHlwZTsKICAgICBDU3RyaW5nIHVyaTsKKyAgICB1bnNpZ25lZCBudW1G
b3JtcyB7IDAgfTsKIH07CiAKIERlcXVlPERlbGF5ZWRTaWduYWw+IGRlbGF5ZWRTaWduYWxzUXVl
dWU7CkBAIC0yMzgsNiArMjQ5LDM0IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdlU2VudENh
bGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIFdlYktpdENvbnNvbGVNZXNzCiAgICAgd2Vi
a2l0X2RvbV9kb21fd2luZG93X3dlYmtpdF9tZXNzYWdlX2hhbmRsZXJzX3Bvc3RfbWVzc2FnZSh3
aW5kb3cuZ2V0KCksICJjb25zb2xlIiwgbWVzc2FnZVN0cmluZy5nZXQoKSk7CiB9CiAKKworc3Rh
dGljIHZvaWQgZW1pdERpZEFzc29jaWF0ZUZvcm1Db250cm9scyhHREJ1c0Nvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIHVuc2lnbmVkIG51bUZvcm1zKQoreworICAgIGJvb2wgb2sgPSBnX2RidXNfY29u
bmVjdGlvbl9lbWl0X3NpZ25hbCgKKyAgICAgICAgY29ubmVjdGlvbiwKKyAgICAgICAgMCwKKyAg
ICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIm9yZy53
ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLAorICAgICAgICAiRGlkQXNzb2NpYXRlRm9ybUNv
bnRyb2xzIiwKKyAgICAgICAgZ192YXJpYW50X25ldygiKHUpIiwgbnVtRm9ybXMpLAorICAgICAg
ICAwKTsKKyAgICBnX2Fzc2VydChvayk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZEFzc29jaWF0ZUZv
cm1Db250cm9sc0NhbGxiYWNrKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIEdQYXJhbVNwZWMqIHBz
cGVjLCBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBncG9pbnRlciBkYXRh
ID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpFQ1QoZXh0ZW5zaW9uKSwgImRidXMtY29ubmVjdGlv
biIpOworCisgICAgV2ViS2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdl
X2dldF9kb21fZG9jdW1lbnQod2ViUGFnZSk7CisgICAgR1JlZlB0cjxXZWJLaXRET01IVE1MQ29s
bGVjdGlvbj4gZm9ybXMgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9kb2N1bWVudF9nZXRfZm9ybXMo
ZG9jdW1lbnQpKTsKKyAgICB1bnNpZ25lZCBudW1Gb3JtcyA9IHdlYmtpdF9kb21faHRtbF9jb2xs
ZWN0aW9uX2dldF9sZW5ndGgoZm9ybXMuZ2V0KCkpOworCisgICAgaWYgKGRhdGEpCisgICAgICAg
IGVtaXREaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoR19EQlVTX0NPTk5FQ1RJT04oZGF0YSksIG51
bUZvcm1zKTsKKyAgICBlbHNlCisgICAgICAgIGRlbGF5ZWRTaWduYWxzUXVldWUuYXBwZW5kKERl
bGF5ZWRTaWduYWwoRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzU2lnbmFsLCBudW1Gb3JtcykpOwor
fQorCiBzdGF0aWMgdm9pZCBwYWdlQ3JlYXRlZENhbGxiYWNrKFdlYktpdFdlYkV4dGVuc2lvbiog
ZXh0ZW5zaW9uLCBXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBncG9pbnRlcikKIHsKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlBhZ2UsICJkb2N1bWVudC1sb2FkZWQiLCBHX0NBTExCQUNLKGRvY3Vt
ZW50TG9hZGVkQ2FsbGJhY2spLCBleHRlbnNpb24pOwpAQCAtMjQ1LDYgKzI4NCw3IEBAIHN0YXRp
YyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24s
IFdlYktpdFdlYlBhZ2UqIHdlCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAic2VuZC1y
ZXF1ZXN0IiwgR19DQUxMQkFDSyhzZW5kUmVxdWVzdENhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAg
Z19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiY29udGV4dC1tZW51IiwgR19DQUxMQkFDSyhjb250
ZXh0TWVudUNhbGxiYWNrKSwgbnVsbHB0cik7CiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdl
LCAiY29uc29sZS1tZXNzYWdlLXNlbnQiLCBHX0NBTExCQUNLKGNvbnNvbGVNZXNzYWdlU2VudENh
bGxiYWNrKSwgbnVsbHB0cik7CisgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJQYWdlLCAiZGlkLWFz
c29jaWF0ZS1mb3JtLWNvbnRyb2xzIiwgR19DQUxMQkFDSyhkaWRBc3NvY2lhdGVGb3JtQ29udHJv
bHNDYWxsYmFjayksIGV4dGVuc2lvbik7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxs
YmFjayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNp
emVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVl
UmVmKikKQEAgLTM2Myw2ICs0MDMsOSBAQCBzdGF0aWMgdm9pZCBidXNBY3F1aXJlZENhbGxiYWNr
KEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgY2hhciogbmFtZSwgZwogICAgICAg
ICBjYXNlIFVSSUNoYW5nZWRTaWduYWw6CiAgICAgICAgICAgICBlbWl0VVJJQ2hhbmdlZChjb25u
ZWN0aW9uLCBkZWxheWVkU2lnbmFsLnVyaS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzU2lnbmFsOgorICAgICAgICAgICAg
ZW1pdERpZEFzc29jaWF0ZUZvcm1Db250cm9scyhjb25uZWN0aW9uLCBkZWxheWVkU2lnbmFsLm51
bUZvcm1zKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293022</attachid>
            <date>2016-10-27 08:48:13 -0700</date>
            <delta_ts>2016-11-08 01:39:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164050-20161027174247.patch</filename>
            <type>text/plain</type>
            <size>12610</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDliNzk5Mzk3NWVjM2Rj
NmVlNWMzNzI5MjhmZmUzMWYxM2NhNTBmZi4uOTk3NTc0NzU3NmQ1OWU2ZWM3MWYwOWNhMWRjNWM5
MmZhNmQwYzQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE5l
dyBBUEkgdG8gbm90aWZ5IGFib3V0IGR5bmFtaWNhbGx5IGFkZGVkIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5ldyBBUEkgZXhwb3J0
cyB0aGUgV2ViQ29yZSBldmVudCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMgdGhyb3VnaCB0aGUg
d2ViIGV4dGVuc2lvbgorICAgICAgICBtZWNoYW5pc20uIFRoaXMgd2lsbCBoZWxwIGNsaWVudHMg
KG1haW5seSB3ZWIgYnJvd3NlcnMpIHRvIGltcGxlbWVudCByb2J1c3QgYXV0byBmaWxsaW5nCisg
ICAgICAgIG1lY2hhbmlzbXMuIEl0IGRlYWxzIG5pY2VseSB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0
ZWQgZm9ybXMgKGFuZCBmb3JtIGNvbnRyb2xzKSBhcyBtYW55IEpTCisgICAgICAgIGZyYW1ld29y
a3MgZG8gbm93YWRheXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6IEFkZGVkIGEgRm9ybUNsaWVudCBpbXBsZW1lbnRhdGlv
biBvZgorICAgICAgICBBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50LgorICAgICAgICAo
d2Via2l0V2ViUGFnZUZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOiBFbWl0IHRoZSBuZXcgc2lnbmFs
LgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOiBBZGRlZCB0aGUgbmV3IHNp
Z25hbCAiZm9ybXMtY29udHJvbHMtYXNzb2NpYXRlZCIuCisgICAgICAgICh3ZWJraXRXZWJQYWdl
Q3JlYXRlKTogU2V0IHRoZSBXZWJQYWdlIGFzIGEgRm9ybUNsaWVudC4KKwogMjAxNi0xMC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgSURCS2V5
UGF0aCB3aXRoIGEgV1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5j
cHAKaW5kZXggMDBkNzZhOTM0ODUwYzJkY2U4YjU0MTcyNWE5MWQwZmJhODhlZDQyMi4uNzA4MmYw
MjIyMDgzNDZkMGEwOWJlNDg1NTcwMzU2OWQzMjEyY2YxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYktpdENvbnNv
bGVNZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dERPTUVsZW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RnJhbWVQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0TWFyc2hhbC5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKQEAg
LTYwLDYgKzYxLDcgQEAgZW51bSB7CiAgICAgU0VORF9SRVFVRVNULAogICAgIENPTlRFWFRfTUVO
VSwKICAgICBDT05TT0xFX01FU1NBR0VfU0VOVCwKKyAgICBGT1JNX0NPTlRST0xTX0FTU09DSUFU
RUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTI5NSw2ICsyOTcsMTEgQEAgc3RhdGljIHZv
aWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiwgdWludDYKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VGb3Jt
Q29udHJvbHNBc3NvY2lhdGVkKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIEdQdHJBcnJheSogZm9y
bUVsZW1lbnRzKQoreworICAgIGdfc2lnbmFsX2VtaXQod2ViUGFnZSwgc2lnbmFsc1tGT1JNX0NP
TlRST0xTX0FTU09DSUFURURdLCAwLCBmb3JtRWxlbWVudHMpOworfQorCiBjbGFzcyBQYWdlQ29u
dGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNv
bnRleHRNZW51Q2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQ29udGV4dE1lbnVD
bGllbnQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKQEAgLTM0MCw2ICszNDcsMjggQEAgcHJpdmF0
ZToKICAgICBXZWJLaXRXZWJQYWdlKiBtX3dlYlBhZ2U7CiB9OwogCitjbGFzcyBGb3JtQ2xpZW50
IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IEZvcm1DbGllbnQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKKyAgICAg
ICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHMoV2ViUGFnZSosIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
RWxlbWVudD4+JiBlbGVtZW50cykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdSZWZQdHI8R1B0
ckFycmF5PiBmb3JtRWxlbWVudHMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfc2l6ZWRfbmV3KGVs
ZW1lbnRzLnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgZ19wdHJfYXJyYXlfYWRkKGZvcm1FbGVtZW50cy5n
ZXQoKSwgV2ViS2l0OjpraXQoZWxlbWVudHNbaV0uZ2V0KCkpKTsKKworICAgICAgICB3ZWJraXRX
ZWJQYWdlRm9ybUNvbnRyb2xzQXNzb2NpYXRlZChtX3dlYlBhZ2UsIGZvcm1FbGVtZW50cy5nZXQo
KSk7CisgICAgfQorCisgICAgYm9vbCBzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKFdlYlBhZ2Uq
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0V2ViUGFn
ZSogbV93ZWJQYWdlOworfTsKKwogc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZUdldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbVNwZWMpCiB7CiAgICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJf
UEFHRShvYmplY3QpOwpAQCAtNDczLDYgKzUwMiwyNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRXZWJQYWdlQ2xhc3MqIGtsYXNzKQogICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfVk9JRF9fQk9YRUQsCiAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAg
ICAgICBXRUJLSVRfVFlQRV9DT05TT0xFX01FU1NBR0UgfCBHX1NJR05BTF9UWVBFX1NUQVRJQ19T
Q09QRSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJQYWdlOjpmb3JtLWNvbnRyb2xzLWFz
c29jaWF0ZWQ6CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ugb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGVsZW1lbnRzOiBhICNHUHRyQXJyYXkgb2Yg
I1dlYktpdERPTUVsZW1lbnQgd2l0aCB0aGUgYXNzb2NpYXRlZCBET00gZWxlbWVudHMgaW4gZm9y
bXMKKyAgICAgKgorICAgICAqIEVtbWl0ZWQgYWZ0ZXIgZm9ybSBlbGVtZW50cyAob3IgZm9ybSBh
c3NvY2lhdGVkIGVsZW1lbnRzKSBhcmUgYXNzb2NpYXRlZCB0byBhIHBhcnRpY3VsYXIgd2ViCisg
ICAgICogcGFnZS4gVXNlZnVsIHRvIGltcGxlbWVudCBmb3JtIGF1dG9maWxsaW5nIHdpdGggd2Vi
IHBhZ2VzIHdoZXJlIGZvcm0gZmllbGRzIGFyZSBkeW5hbWljYWxseQorICAgICAqIGFkZGVkIChh
cyBtYW55IEpTIGZyYW1ld29ya3MpIGRvLgorICAgICAqCisgICAgICogU2luY2U6IDIuMTYKKyAg
ICAgKi8KKyAgICBzaWduYWxzW0ZPUk1fQ09OVFJPTFNfQVNTT0NJQVRFRF0gPSBnX3NpZ25hbF9u
ZXcoCisgICAgICAgICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQiLAorICAgICAgICBHX1RZUEVf
RlJPTV9DTEFTUyhrbGFzcyksCisgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAgICAw
LCAwLCBudWxscHRyLAorICAgICAgICBnX2NjbG9zdXJlX21hcnNoYWxfVk9JRF9fQk9YRUQsCisg
ICAgICAgIEdfVFlQRV9OT05FLCAxLAorICAgICAgICBHX1RZUEVfUFRSX0FSUkFZKTsKIH0KIAog
V2ViUGFnZSogd2Via2l0V2ViUGFnZUdldFBhZ2UoV2ViS2l0V2ViUGFnZSAqd2ViUGFnZSkKQEAg
LTU0NSw2ICs1OTQsNyBAQCBXZWJLaXRXZWJQYWdlKiB3ZWJraXRXZWJQYWdlQ3JlYXRlKFdlYlBh
Z2UqIHdlYlBhZ2UpCiAKICAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZUNvbnRleHRNZW51
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZUNvbnRleHRNZW51Q2xpZW50PihwYWdlKSk7CiAg
ICAgd2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVVSUNsaWVudChzdGQ6Om1ha2VfdW5pcXVlPFBh
Z2VVSUNsaWVudD4ocGFnZSkpOworICAgIHdlYlBhZ2UtPnNldEluamVjdGVkQnVuZGxlRm9ybUNs
aWVudChzdGQ6Om1ha2VfdW5pcXVlPEZvcm1DbGllbnQ+KHBhZ2UpKTsKIAogICAgIHJldHVybiBw
YWdlOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDkyYzEwYzQxZDdiYjhmOTNhNjNmMmZlZGU5M2UyYmE1MTFlZmVlZDIuLjRlNjRlZWE1Y2Nk
ODUyNTQ3NjhjMDM0NzUwMWY0MDZhZTI1MDVlYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNi0xMC0yNyAgU2Vy
Z2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBO
ZXcgQVBJIHRvIG5vdGlmeSBhYm91dCBkeW5hbWljYWxseSBhZGRlZCBmb3JtcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MDUwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYSBuZXcgdGVzdCBj
YXNlIHRvIHZlcmlmeSB0aGF0IGRpbmFtaWNhbGx5IGFkZGVkIGZvcm1zIGNvcnJlY3RseSB0cmln
Z2VyIHRoZQorICAgICAgICAiZm9ybS1jb250cm9scy1hc3NvY2lhdGVkIiBzaWduYWwgZnJvbSBX
ZWJQYWdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RX
ZWJFeHRlbnNpb25zLmNwcDoKKyAgICAgICAgKGRpZEFzc29jaWF0ZUZvcm1Db250cm9sc0NhbGxi
YWNrKToKKyAgICAgICAgKHRlc3RXZWJFeHRlbnNpb25Gb3JtQ29udHJvbHNBc3NvY2lhdGVkKToK
KyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwOgorICAgICAgICAoRGVsYXllZFNpZ25hbDo6RGVs
YXllZFNpZ25hbCk6CisgICAgICAgIChlbWl0Rm9ybUNvbnRyb2xzQXNzb2NpYXRlZCk6CisgICAg
ICAgIChmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2spOgorICAgICAgICAocGFnZUNyZWF0
ZWRDYWxsYmFjayk6CisKIDIwMTYtMTAtMjYgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CiAKICAgICAgICAgW0dUS10gSlNDIHRlc3Qgd2FzbS55YW1sL3dhc20vanMtYXBp
L3Rlc3RfYmFzaWNfYXBpLmpzLmRlZmF1bHQtd2FzbSBhbmQgd2FzbS55YW1sL3dhc20vanMtYXBp
L3Rlc3RfTW9kdWxlLmpzLmRlZmF1bHQtd2FzbSBmYWlsIHdpdGggRXhjZXB0aW9uOiBSZWZlcmVu
Y2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogV2ViQXNzZW1ibHkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMu
Y3BwCmluZGV4IGI0MWU1ZWI4MmFmNjlmOGQ5NzM0ZWFkYjAxYTkwMTVkMmIwYzVmYTMuLjRlOTVl
NDFlMTYyOWEwZGIzMWUwMzY4YTJhZGVlYzc4YjIxOWY2MTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNw
cApAQCAtMjEyLDYgKzIxMiw1MCBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVn
aW5zUGVybWlzc2lvblJlcXVlc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdAogICAgIGdfc2ln
bmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsIHBlcm1pc3Npb25SZXF1ZXN0
U2lnbmFsSUQpOwogfQogCitzdGF0aWMgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNDYWxs
YmFjayhHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNo
YXIqLCBjb25zdCBjaGFyKiwgR1ZhcmlhbnQqIHJlc3VsdCwgV2ViVmlld1Rlc3QqIHRlc3QpCit7
CisgICAgdW5zaWduZWQgbnVtRm9ybXM7CisgICAgZ192YXJpYW50X2dldChyZXN1bHQsICIodSki
LCAmbnVtRm9ybXMpOworICAgIGdfYXNzZXJ0X2NtcGludChudW1Gb3JtcywgPT0sIDEpOworCisg
ICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBleHRlbnNpb25CdXNOYW1l
KGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgVGVz
dDo6c193ZWJFeHRlbnNpb25JRCkpOworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBh
ZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eShleHRlbnNpb25CdXNOYW1lLmdldCgpLAorICAgICAg
ICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLCAib3JnLndlYmtpdC5ndGsuV2Vi
RXh0ZW5zaW9uVGVzdCIsIHRlc3QtPm1fbWFpbkxvb3ApKTsKKyAgICBHREJ1c0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24gPSBnX2RidXNfcHJveHlfZ2V0X2Nvbm5lY3Rpb24ocHJveHkuZ2V0KCkpOwor
ICAgIGd1aW50IGlkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25uZWN0
aW9uLAorICAgICAgICAwLAorICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVz
dCIsCisgICAgICAgICJGb3JtQ29udHJvbHNBc3NvY2lhdGVkIiwKKyAgICAgICAgIi9vcmcvd2Vi
a2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgMCwKKyAgICAgICAgR19EQlVTX1NJ
R05BTF9GTEFHU19OT05FLAorICAgICAgICByZWludGVycHJldF9jYXN0PEdEQnVzU2lnbmFsQ2Fs
bGJhY2s+KGRpZEFzc29jaWF0ZUZvcm1Db250cm9sc0NhbGxiYWNrKSwKKyAgICAgICAgdGVzdCwK
KyAgICAgICAgMCk7CisgICAgZ19hc3NlcnQoaWQpOworCisgICAgdGVzdC0+bG9hZEh0bWwoIjwh
RE9DVFlQRSBodG1sPjxoZWFkPjx0aXRsZT5XZWJLaXRHVEsrIFdlYiBFeHRlbnNpb25zIFRlc3Q8
L3RpdGxlPjwvaGVhZD48ZGl2IGlkPVwicGxhY2Vob2xkZXJcIi8+IiwgMCk7CisgICAgdGVzdC0+
d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogYWRkRm9y
bVNjcmlwdCA9CisgICAgICAgICJ2YXIgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwi
aW5wdXRcIik7IgorICAgICAgICAiaW5wdXQudHlwZSA9IFwicGFzc3dvcmRcIjsiCisgICAgICAg
ICJ2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJmb3JtXCIpOyIKKyAgICAgICAg
ImZvcm0uYXBwZW5kQ2hpbGQoaW5wdXQpOyIKKyAgICAgICAgInZhciBwbGFjZWhvbGRlciA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKFwicGxhY2Vob2xkZXJcIik7IgorICAgICAgICAicGxhY2Vo
b2xkZXIuYXBwZW5kQ2hpbGQoZm9ybSk7IjsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoYWRkRm9ybVNjcmlwdCwgMCk7CisKKyAgICBnX21haW5fbG9vcF9ydW4o
dGVzdC0+bV9tYWluTG9vcCk7CisKKyAgICBnX2RidXNfY29ubmVjdGlvbl9zaWduYWxfdW5zdWJz
Y3JpYmUoY29ubmVjdGlvbiwgaWQpOworfQorCiB2b2lkIGJlZm9yZUFsbCgpCiB7CiAgICAgYnVz
ID0gbmV3IFdlYktpdFRlc3RCdXMoKTsKQEAgLTIyNCw2ICsyNjgsNyBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgIndpbmRvdy1v
YmplY3QtY2xlYXJlZCIsIHRlc3RXZWJFeHRlbnNpb25XaW5kb3dPYmplY3RDbGVhcmVkKTsKICAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAiaXNvbGF0ZWQtd29ybGQi
LCB0ZXN0V2ViRXh0ZW5zaW9uSXNvbGF0ZWRXb3JsZCk7CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgi
V2ViS2l0V2ViVmlldyIsICJpbnN0YWxsLW1pc3NpbmctcGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVl
c3QiLCB0ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QpOworICAgIFdl
YlZpZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJmb3JtLWNvbnRyb2xzLWFzc29j
aWF0ZWQtc2lnbmFsIiwgdGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOwog
fQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mkd0ay9XZWJFeHRlbnNpb25UZXN0LmNwcAppbmRleCBmZTZmZmNhZTg2MTYy
MDA3ZjFlYTUyM2M2OWJmMWMxN2Q4ODMyYzhjLi4yOTQyOTBjM2YxNjZlZDM3ZThiZTNhNjYyZTFm
YjM5YjcyZjgzYzZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCkBAIC01MSw2ICs1MSw5IEBAIHN0YXRp
YyBjb25zdCBjaGFyIGludHJvc3BlY3Rpb25YTUxbXSA9CiAgICAgIiAgPG1ldGhvZCBuYW1lPSdS
ZW1vdmVBVlBsdWdpbnNGcm9tR1NUUmVnaXN0cnknPiIKICAgICAiICA8L21ldGhvZD4iCiAgICAg
IiAgPHNpZ25hbCBuYW1lPSdEb2N1bWVudExvYWRlZCcvPiIKKyAgICAiICA8c2lnbmFsIG5hbWU9
J0Zvcm1Db250cm9sc0Fzc29jaWF0ZWQnPiIKKyAgICAiICAgPGFyZyB0eXBlPSd1JyBuYW1lPSdu
dW1Gb3JtcycgZGlyZWN0aW9uPSdvdXQnLz4iCisgICAgIiAgPC9zaWduYWw+IgogICAgICIgIDxz
aWduYWwgbmFtZT0nVVJJQ2hhbmdlZCc+IgogICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J3Vy
aScgZGlyZWN0aW9uPSdvdXQnLz4iCiAgICAgIiAgPC9zaWduYWw+IgpAQCAtNjEsNiArNjQsNyBA
QCBzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQogdHlwZWRlZiBlbnVtIHsK
ICAgICBEb2N1bWVudExvYWRlZFNpZ25hbCwKICAgICBVUklDaGFuZ2VkU2lnbmFsLAorICAgIEZv
cm1Db250cm9sc0Fzc29jaWF0ZWRTaWduYWwsCiB9IERlbGF5ZWRTaWduYWxUeXBlOwogCiBzdHJ1
Y3QgRGVsYXllZFNpZ25hbCB7CkBAIC03NSw4ICs3OSwxNSBAQCBzdHJ1Y3QgRGVsYXllZFNpZ25h
bCB7CiAgICAgewogICAgIH0KIAorICAgIERlbGF5ZWRTaWduYWwoRGVsYXllZFNpZ25hbFR5cGUg
dHlwZSwgdW5zaWduZWQgbnVtRm9ybXMpCisgICAgICAgIDogdHlwZSh0eXBlKQorICAgICAgICAs
IG51bUZvcm1zKG51bUZvcm1zKQorICAgIHsKKyAgICB9CisKICAgICBEZWxheWVkU2lnbmFsVHlw
ZSB0eXBlOwogICAgIENTdHJpbmcgdXJpOworICAgIHVuc2lnbmVkIG51bUZvcm1zIHsgMCB9Owog
fTsKIAogRGVxdWU8RGVsYXllZFNpZ25hbD4gZGVsYXllZFNpZ25hbHNRdWV1ZTsKQEAgLTIzOCw2
ICsyNDksMjkgQEAgc3RhdGljIHZvaWQgY29uc29sZU1lc3NhZ2VTZW50Q2FsbGJhY2soV2ViS2l0
V2ViUGFnZSogd2ViUGFnZSwgV2ViS2l0Q29uc29sZU1lc3MKICAgICB3ZWJraXRfZG9tX2RvbV93
aW5kb3dfd2Via2l0X21lc3NhZ2VfaGFuZGxlcnNfcG9zdF9tZXNzYWdlKHdpbmRvdy5nZXQoKSwg
ImNvbnNvbGUiLCBtZXNzYWdlU3RyaW5nLmdldCgpKTsKIH0KIAorCitzdGF0aWMgdm9pZCBlbWl0
Rm9ybUNvbnRyb2xzQXNzb2NpYXRlZChHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVuc2ln
bmVkIG51bUZvcm1zKQoreworICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3Np
Z25hbCgKKyAgICAgICAgY29ubmVjdGlvbiwKKyAgICAgICAgMCwKKyAgICAgICAgIi9vcmcvd2Vi
a2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4
dGVuc2lvblRlc3QiLAorICAgICAgICAiRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCIsCisgICAgICAg
IGdfdmFyaWFudF9uZXcoIih1KSIsIG51bUZvcm1zKSwKKyAgICAgICAgMCk7CisgICAgZ19hc3Nl
cnQob2spOworfQorCitzdGF0aWMgdm9pZCBmb3JtQ29udHJvbHNBc3NvY2lhdGVkQ2FsbGJhY2so
V2ViS2l0V2ViUGFnZSogd2ViUGFnZSwgR1B0ckFycmF5KiBmb3JtRWxlbWVudHMsIFdlYktpdFdl
YkV4dGVuc2lvbiogZXh0ZW5zaW9uKQoreworICAgIGdwb2ludGVyIGRhdGEgPSBnX29iamVjdF9n
ZXRfZGF0YShHX09CSkVDVChleHRlbnNpb24pLCAiZGJ1cy1jb25uZWN0aW9uIik7CisgICAgaWYg
KGRhdGEpCisgICAgICAgIGVtaXRGb3JtQ29udHJvbHNBc3NvY2lhdGVkKEdfREJVU19DT05ORUNU
SU9OKGRhdGEpLCBmb3JtRWxlbWVudHMtPmxlbik7CisgICAgZWxzZQorICAgICAgICBkZWxheWVk
U2lnbmFsc1F1ZXVlLmFwcGVuZChEZWxheWVkU2lnbmFsKEZvcm1Db250cm9sc0Fzc29jaWF0ZWRT
aWduYWwsIGZvcm1FbGVtZW50cy0+bGVuKSk7Cit9CisKIHN0YXRpYyB2b2lkIHBhZ2VDcmVhdGVk
Q2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdlYlBhZ2UqIHdl
YlBhZ2UsIGdwb2ludGVyKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFnZSwgImRvY3Vt
ZW50LWxvYWRlZCIsIEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxsYmFjayksIGV4dGVuc2lv
bik7CkBAIC0yNDUsNiArMjc5LDcgQEAgc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRDYWxsYmFjayhX
ZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0V2ViUGFnZSogd2UKICAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNLKHNlbmRSZXF1
ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJj
b250ZXh0LW1lbnUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51Q2FsbGJhY2spLCBudWxscHRyKTsK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJjb25zb2xlLW1lc3NhZ2Utc2VudCIsIEdf
Q0FMTEJBQ0soY29uc29sZU1lc3NhZ2VTZW50Q2FsbGJhY2spLCBudWxscHRyKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYlBhZ2UsICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQiLCBHX0NBTExC
QUNLKGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxsYmFjayksIGV4dGVuc2lvbik7CiB9CiAKIHN0
YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxsYmFjayhKU0NvbnRleHRSZWYganNDb250ZXh0LCBKU09i
amVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikKQEAgLTM2Myw2ICszOTgsOSBAQCBzdGF0aWMg
dm9pZCBidXNBY3F1aXJlZENhbGxiYWNrKEdEQnVzQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29u
c3QgY2hhciogbmFtZSwgZwogICAgICAgICBjYXNlIFVSSUNoYW5nZWRTaWduYWw6CiAgICAgICAg
ICAgICBlbWl0VVJJQ2hhbmdlZChjb25uZWN0aW9uLCBkZWxheWVkU2lnbmFsLnVyaS5kYXRhKCkp
OwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRm9ybUNvbnRyb2xzQXNzb2NpYXRl
ZFNpZ25hbDoKKyAgICAgICAgICAgIGVtaXRGb3JtQ29udHJvbHNBc3NvY2lhdGVkKGNvbm5lY3Rp
b24sIGRlbGF5ZWRTaWduYWwubnVtRm9ybXMpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICB9CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294147</attachid>
            <date>2016-11-08 01:39:44 -0800</date>
            <delta_ts>2016-11-08 09:26:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164050-20161108103354.patch</filename>
            <type>text/plain</type>
            <size>14632</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDliNzk5Mzk3NWVjM2Rj
NmVlNWMzNzI5MjhmZmUzMWYxM2NhNTBmZi4uOTk3NTc0NzU3NmQ1OWU2ZWM3MWYwOWNhMWRjNWM5
MmZhNmQwYzQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE5l
dyBBUEkgdG8gbm90aWZ5IGFib3V0IGR5bmFtaWNhbGx5IGFkZGVkIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIG5ldyBBUEkgZXhwb3J0
cyB0aGUgV2ViQ29yZSBldmVudCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMgdGhyb3VnaCB0aGUg
d2ViIGV4dGVuc2lvbgorICAgICAgICBtZWNoYW5pc20uIFRoaXMgd2lsbCBoZWxwIGNsaWVudHMg
KG1haW5seSB3ZWIgYnJvd3NlcnMpIHRvIGltcGxlbWVudCByb2J1c3QgYXV0byBmaWxsaW5nCisg
ICAgICAgIG1lY2hhbmlzbXMuIEl0IGRlYWxzIG5pY2VseSB3aXRoIGR5bmFtaWNhbGx5IGNyZWF0
ZWQgZm9ybXMgKGFuZCBmb3JtIGNvbnRyb2xzKSBhcyBtYW55IEpTCisgICAgICAgIGZyYW1ld29y
a3MgZG8gbm93YWRheXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6IEFkZGVkIGEgRm9ybUNsaWVudCBpbXBsZW1lbnRhdGlv
biBvZgorICAgICAgICBBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50LgorICAgICAgICAo
d2Via2l0V2ViUGFnZUZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOiBFbWl0IHRoZSBuZXcgc2lnbmFs
LgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOiBBZGRlZCB0aGUgbmV3IHNp
Z25hbCAiZm9ybXMtY29udHJvbHMtYXNzb2NpYXRlZCIuCisgICAgICAgICh3ZWJraXRXZWJQYWdl
Q3JlYXRlKTogU2V0IHRoZSBXZWJQYWdlIGFzIGEgRm9ybUNsaWVudC4KKwogMjAxNi0xMC0yNiAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2UgSURCS2V5
UGF0aCB3aXRoIGEgV1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5j
cHAKaW5kZXggMDBkNzZhOTM0ODUwYzJkY2U4YjU0MTcyNWE5MWQwZmJhODhlZDQyMi4uYTQ2Yzcy
ZTliYTI5NTM5MjA1YmRjNTFkM2QyZmUwMTM4NGMwMzJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9X
ZWJLaXRXZWJQYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYktpdENvbnNv
bGVNZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktp
dERPTUVsZW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RnJhbWVQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0TWFyc2hhbC5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKQEAg
LTYwLDYgKzYxLDcgQEAgZW51bSB7CiAgICAgU0VORF9SRVFVRVNULAogICAgIENPTlRFWFRfTUVO
VSwKICAgICBDT05TT0xFX01FU1NBR0VfU0VOVCwKKyAgICBGT1JNX0NPTlRST0xTX0FTU09DSUFU
RUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTI5NSw2ICsyOTcsMTEgQEAgc3RhdGljIHZv
aWQgZGlkRmFpbExvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiwgdWludDYKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VGb3Jt
Q29udHJvbHNBc3NvY2lhdGVkKFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIEdQdHJBcnJheSogZm9y
bUVsZW1lbnRzKQoreworICAgIGdfc2lnbmFsX2VtaXQod2ViUGFnZSwgc2lnbmFsc1tGT1JNX0NP
TlRST0xTX0FTU09DSUFURURdLCAwLCBmb3JtRWxlbWVudHMpOworfQorCiBjbGFzcyBQYWdlQ29u
dGV4dE1lbnVDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbmplY3RlZEJ1bmRsZTo6UGFnZUNv
bnRleHRNZW51Q2xpZW50IHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlQ29udGV4dE1lbnVD
bGllbnQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKQEAgLTM0MCw2ICszNDcsMjggQEAgcHJpdmF0
ZToKICAgICBXZWJLaXRXZWJQYWdlKiBtX3dlYlBhZ2U7CiB9OwogCitjbGFzcyBGb3JtQ2xpZW50
IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQgeworcHVibGlj
OgorICAgIGV4cGxpY2l0IEZvcm1DbGllbnQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKKyAgICAg
ICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHMoV2ViUGFnZSosIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6
RWxlbWVudD4+JiBlbGVtZW50cykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdSZWZQdHI8R1B0
ckFycmF5PiBmb3JtRWxlbWVudHMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfc2l6ZWRfbmV3KGVs
ZW1lbnRzLnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRz
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgZ19wdHJfYXJyYXlfYWRkKGZvcm1FbGVtZW50cy5n
ZXQoKSwgV2ViS2l0OjpraXQoZWxlbWVudHNbaV0uZ2V0KCkpKTsKKworICAgICAgICB3ZWJraXRX
ZWJQYWdlRm9ybUNvbnRyb2xzQXNzb2NpYXRlZChtX3dlYlBhZ2UsIGZvcm1FbGVtZW50cy5nZXQo
KSk7CisgICAgfQorCisgICAgYm9vbCBzaG91bGROb3RpZnlPbkZvcm1DaGFuZ2VzKFdlYlBhZ2Uq
KSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisKK3ByaXZhdGU6CisgICAgV2ViS2l0V2ViUGFn
ZSogbV93ZWJQYWdlOworfTsKKwogc3RhdGljIHZvaWQgd2Via2l0V2ViUGFnZUdldFByb3BlcnR5
KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcElkLCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwYXJhbVNwZWMpCiB7CiAgICAgV2ViS2l0V2ViUGFnZSogd2ViUGFnZSA9IFdFQktJVF9XRUJf
UEFHRShvYmplY3QpOwpAQCAtNDczLDYgKzUwMiwzMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3BhZ2VfY2xhc3NfaW5pdChXZWJLaXRXZWJQYWdlQ2xhc3MqIGtsYXNzKQogICAgICAgICBnX2Nj
bG9zdXJlX21hcnNoYWxfVk9JRF9fQk9YRUQsCiAgICAgICAgIEdfVFlQRV9OT05FLCAxLAogICAg
ICAgICBXRUJLSVRfVFlQRV9DT05TT0xFX01FU1NBR0UgfCBHX1NJR05BTF9UWVBFX1NUQVRJQ19T
Q09QRSk7CisKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJQYWdlOjpmb3JtLWNvbnRyb2xzLWFz
c29jaWF0ZWQ6CisgICAgICogQHdlYl9wYWdlOiB0aGUgI1dlYktpdFdlYlBhZ2Ugb24gd2hpY2gg
dGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGVsZW1lbnRzOiAoZWxlbWVudC10eXBlIFdl
YktpdC5ET01FbGVtZW50KSAodHJhbnNmZXIgbm9uZSk6IGEgI0dQdHJBcnJheSBvZgorICAgICAq
ICNXZWJLaXRET01FbGVtZW50IHdpdGggdGhlIGxpc3Qgb2YgZm9ybXMgaW4gdGhlIHBhZ2UKKyAg
ICAgKgorICAgICAqIEVtaXR0ZWQgYWZ0ZXIgZm9ybSBlbGVtZW50cyAob3IgZm9ybSBhc3NvY2lh
dGVkIGVsZW1lbnRzKSBhcmUgYXNzb2NpYXRlZCB0byBhIHBhcnRpY3VsYXIgd2ViCisgICAgICog
cGFnZS4gVXNlZnVsIHRvIGltcGxlbWVudCBmb3JtIGF1dG9maWxsaW5nIHdpdGggd2ViIHBhZ2Vz
IHdoZXJlIGZvcm0gZmllbGRzIGFyZSBkeW5hbWljYWxseQorICAgICAqIGFkZGVkIChhcyBtYW55
IEpTIGZyYW1ld29ya3MpIGRvLiBUaGlzIG1pZ2h0IGJlIGVtaXR0ZWQgbXVsdGlwbGUgdGltZXMg
Zm9yIHRoZSBzYW1lIHdlYiBwYWdlLgorICAgICAqCisgICAgICogTm90ZSB0aGF0IHRoaXMgc2ln
bmFsIGNvdWxkIGJlIGFsc28gZW1pdHRlZCB3aGVuIGZvcm0gY29udHJvbHMgYXJlIG1vdmVkIGJl
dHdlZW4gZm9ybXMuIEluCisgICAgICogdGhvc2UgY2FzZXMgdGhlIEBlbGVtZW50cyBhcnJheSBj
YXJyaWVzIHRoZSBsaXN0IG9mIHRob3NlIGVsZW1lbnRzIHdoaWNoIG1hdmUgbW92ZWQuCisgICAg
ICoKKyAgICAgKiBTaW5jZTogMi4xNgorICAgICAqLworICAgIHNpZ25hbHNbRk9STV9DT05UUk9M
U19BU1NPQ0lBVEVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgImZvcm0tY29udHJvbHMtYXNz
b2NpYXRlZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAgICAgR19T
SUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsIDAsIG51bGxwdHIsCisgICAgICAgIGdfY2Nsb3N1
cmVfbWFyc2hhbF9WT0lEX19CT1hFRCwKKyAgICAgICAgR19UWVBFX05PTkUsIDEsCisgICAgICAg
IEdfVFlQRV9QVFJfQVJSQVkpOwogfQogCiBXZWJQYWdlKiB3ZWJraXRXZWJQYWdlR2V0UGFnZShX
ZWJLaXRXZWJQYWdlICp3ZWJQYWdlKQpAQCAtNTQ1LDYgKzU5OCw3IEBAIFdlYktpdFdlYlBhZ2Uq
IHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIAogICAgIHdlYlBhZ2UtPnNl
dEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQYWdlQ29u
dGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKICAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1bmRsZVVJ
Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7CisgICAgd2ViUGFn
ZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9ybUNsaWVu
dD4ocGFnZSkpOwogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJjMTBjNDFkN2JiOGY5M2E2M2YyZmVkZTkz
ZTJiYTUxMWVmZWVkMi4uNGU2NGVlYTVjY2Q4NTI1NDc2OGMwMzQ3NTAxZjQwNmFlMjUwNWVjOSAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDE2LTEwLTI3ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2Fs
aWEuY29tPgorCisgICAgICAgIFtHVEtdIE5ldyBBUEkgdG8gbm90aWZ5IGFib3V0IGR5bmFtaWNh
bGx5IGFkZGVkIGZvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjQwNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQgZGluYW1pY2FsbHkg
YWRkZWQgZm9ybXMgY29ycmVjdGx5IHRyaWdnZXIgdGhlCisgICAgICAgICJmb3JtLWNvbnRyb2xz
LWFzc29jaWF0ZWQiIHNpZ25hbCBmcm9tIFdlYlBhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgorICAgICAgICAoZGlk
QXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2spOgorICAgICAgICAodGVzdFdlYkV4dGVuc2lv
bkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOgorICAgICAgICAoYmVmb3JlQWxsKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHA6Cisg
ICAgICAgIChEZWxheWVkU2lnbmFsOjpEZWxheWVkU2lnbmFsKToKKyAgICAgICAgKGVtaXRGb3Jt
Q29udHJvbHNBc3NvY2lhdGVkKToKKyAgICAgICAgKGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxs
YmFjayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKwogMjAxNi0xMC0yNiAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBKU0Mg
dGVzdCB3YXNtLnlhbWwvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMuZGVmYXVsdC13YXNt
IGFuZCB3YXNtLnlhbWwvd2FzbS9qcy1hcGkvdGVzdF9Nb2R1bGUuanMuZGVmYXVsdC13YXNtIGZh
aWwgd2l0aCBFeGNlcHRpb246IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBX
ZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
R3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggYjQxZTVlYjgyYWY2OWY4ZDk3MzRl
YWRiMDFhOTAxNWQyYjBjNWZhMy4uYjhhMzcyYzI3ZmI3ZWExNjVlZWIwYThmZTliMDYwYzJkYzcz
N2Y0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyR3RrL1Rl
c3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC0yNyw2ICsyNywxMCBAQCBzdGF0aWMgY29u
c3QgY2hhciogd2ViRXh0ZW5zaW9uc1VzZXJEYXRhID0gIldlYiBFeHRlbnNpb25zIHVzZXIgZGF0
YSI7CiBzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzOwogc3RhdGljIEdVbmlxdWVQdHI8Y2hhcj4g
c2NyaXB0RGlhbG9nUmVzdWx0OwogCisjZGVmaW5lIElOUFVUX0lEICJpbnB1dC1pZCIKKyNkZWZp
bmUgRk9STV9JRCAiZm9ybS1pZCIKKyNkZWZpbmUgRk9STTJfSUQgImZvcm0yLWlkIgorCiBzdGF0
aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uR2V0VGl0bGUoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25z
dHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFkPjx0aXRsZT5XZWJL
aXRHVEsrIFdlYiBFeHRlbnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9keT48L2JvZHk+PC9o
dG1sPiIsIDApOwpAQCAtMjEyLDYgKzIxNiw2MyBAQCBzdGF0aWMgdm9pZCB0ZXN0SW5zdGFsbE1p
c3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdAog
ICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZpZXcsIHBlcm1pc3Np
b25SZXF1ZXN0U2lnbmFsSUQpOwogfQogCitzdGF0aWMgdm9pZCBkaWRBc3NvY2lhdGVGb3JtQ29u
dHJvbHNDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgR1ZhcmlhbnQqIHJlc3VsdCwgV2ViVmlld1Rlc3Qq
IHRlc3QpCit7CisgICAgY29uc3QgY2hhciogZm9ybUlkczsKKyAgICBnX3ZhcmlhbnRfZ2V0KHJl
c3VsdCwgIigmcykiLCAmZm9ybUlkcyk7CisgICAgZ19hc3NlcnQoIWdfc3RyY21wMChmb3JtSWRz
LCBGT1JNX0lEIEZPUk0yX0lEKSB8fCAhZ19zdHJjbXAwKGZvcm1JZHMsIEZPUk0yX0lEIEZPUk1f
SUQpKTsKKworICAgIGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7Cit9CisKK3N0
YXRpYyB2b2lkIHRlc3RXZWJFeHRlbnNpb25Gb3JtQ29udHJvbHNBc3NvY2lhdGVkKFdlYlZpZXdU
ZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXh0ZW5z
aW9uQnVzTmFtZShnX3N0cmR1cF9wcmludGYoIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lvblRl
c3QldSIsIFRlc3Q6OnNfd2ViRXh0ZW5zaW9uSUQpKTsKKyAgICBHUmVmUHRyPEdEQnVzUHJveHk+
IHByb3h5ID0gYWRvcHRHUmVmKGJ1cy0+Y3JlYXRlUHJveHkoZXh0ZW5zaW9uQnVzTmFtZS5nZXQo
KSwKKyAgICAgICAgIi9vcmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwgIm9yZy53ZWJr
aXQuZ3RrLldlYkV4dGVuc2lvblRlc3QiLCB0ZXN0LT5tX21haW5Mb29wKSk7CisgICAgR0RCdXND
b25uZWN0aW9uKiBjb25uZWN0aW9uID0gZ19kYnVzX3Byb3h5X2dldF9jb25uZWN0aW9uKHByb3h5
LmdldCgpKTsKKyAgICBndWludCBpZCA9IGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF9zdWJzY3Jp
YmUoY29ubmVjdGlvbiwKKyAgICAgICAgMCwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4
dGVuc2lvblRlc3QiLAorICAgICAgICAiRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCIsCisgICAgICAg
ICIvb3JnL3dlYmtpdC9ndGsvV2ViRXh0ZW5zaW9uVGVzdCIsCisgICAgICAgIDAsCisgICAgICAg
IEdfREJVU19TSUdOQUxfRkxBR1NfTk9ORSwKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHREJ1
c1NpZ25hbENhbGxiYWNrPihkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNDYWxsYmFjayksCisgICAg
ICAgIHRlc3QsCisgICAgICAgIDApOworICAgIGdfYXNzZXJ0KGlkKTsKKworICAgIHRlc3QtPmxv
YWRIdG1sKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48dGl0bGU+V2ViS2l0R1RLKyBXZWIgRXh0ZW5z
aW9ucyBUZXN0PC90aXRsZT48L2hlYWQ+PGRpdiBpZD1cInBsYWNlaG9sZGVyXCIvPiIsIDApOwor
ICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGFkZEZvcm1TY3JpcHQgPQorICAgICAgICAidmFyIGlucHV0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudChcImlucHV0XCIpOyIKKyAgICAgICAgImlucHV0LmlkID0gXCIiIElOUFVUX0lEICJc
IjsiCisgICAgICAgICJpbnB1dC50eXBlID0gXCJwYXNzd29yZFwiOyIKKyAgICAgICAgInZhciBm
b3JtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImZvcm1cIik7IgorICAgICAgICAiZm9ybS5p
ZCA9IFwiIiBGT1JNX0lEICJcIjsiCisgICAgICAgICJmb3JtLmFwcGVuZENoaWxkKGlucHV0KTsi
CisgICAgICAgICJ2YXIgZm9ybTIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKTsi
CisgICAgICAgICJmb3JtMi5pZCA9IFwiIiBGT1JNMl9JRCAiXCI7IgorICAgICAgICAidmFyIHBs
YWNlaG9sZGVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJwbGFjZWhvbGRlclwiKTsiCisg
ICAgICAgICJwbGFjZWhvbGRlci5hcHBlbmRDaGlsZChmb3JtKTsiCisgICAgICAgICJwbGFjZWhv
bGRlci5hcHBlbmRDaGlsZChmb3JtMik7IjsKKyAgICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2Fp
dFVudGlsRmluaXNoZWQoYWRkRm9ybVNjcmlwdCwgMCk7CisKKyAgICBnX21haW5fbG9vcF9ydW4o
dGVzdC0+bV9tYWluTG9vcCk7CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogbW92ZUZvcm1FbGVt
ZW50U2NyaXB0ID0KKyAgICAgICAgInZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
XCIiIEZPUk1fSUQgIlwiKTsiCisgICAgICAgICJ2YXIgZm9ybTIgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZChcIiIgRk9STTJfSUQgIlwiKTsiCisgICAgICAgICJ2YXIgaW5wdXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChcIiIgSU5QVVRfSUQgIlwiKTsiCisgICAgICAgICJmb3JtLnJlbW92
ZUNoaWxkKGlucHV0KTsiCisgICAgICAgICJmb3JtMi5hcHBlbmRDaGlsZChpbnB1dCk7IjsKKyAg
ICB0ZXN0LT5ydW5KYXZhU2NyaXB0QW5kV2FpdFVudGlsRmluaXNoZWQobW92ZUZvcm1FbGVtZW50
U2NyaXB0LCAwKTsKKworICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShj
b25uZWN0aW9uLCBpZCk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBidXMgPSBuZXcg
V2ViS2l0VGVzdEJ1cygpOwpAQCAtMjI0LDYgKzI4NSw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVjdC1j
bGVhcmVkIiwgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRlc3RX
ZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImluc3RhbGwtbWlzc2luZy1wbHVnaW5zLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCk7CisgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImZvcm0tY29udHJvbHMtYXNzb2NpYXRlZC1z
aWduYWwiLCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCk7CiB9CiAKIHZv
aWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGZlNmZmY2FlODYxNjIwMDdmMWVh
NTIzYzY5YmYxYzE3ZDg4MzJjOGMuLmYzZjlhNjk5N2Y0ZjFiMGM2ODM0ZDBlNmI4ZDkyYmNiMDBj
NjFjZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9X
ZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTUxLDYgKzUxLDkgQEAgc3RhdGljIGNvbnN0
IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICA8bWV0aG9kIG5hbWU9J1JlbW92ZUFW
UGx1Z2luc0Zyb21HU1RSZWdpc3RyeSc+IgogICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2ln
bmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+IgorICAgICIgIDxzaWduYWwgbmFtZT0nRm9ybUNv
bnRyb2xzQXNzb2NpYXRlZCc+IgorICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2Zvcm1JZHMn
IGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvc2lnbmFsPiIKICAgICAiICA8c2lnbmFsIG5h
bWU9J1VSSUNoYW5nZWQnPiIKICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1cmknIGRpcmVj
dGlvbj0nb3V0Jy8+IgogICAgICIgIDwvc2lnbmFsPiIKQEAgLTYxLDYgKzY0LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KIHR5cGVkZWYgZW51bSB7CiAgICAgRG9j
dW1lbnRMb2FkZWRTaWduYWwsCiAgICAgVVJJQ2hhbmdlZFNpZ25hbCwKKyAgICBGb3JtQ29udHJv
bHNBc3NvY2lhdGVkU2lnbmFsLAogfSBEZWxheWVkU2lnbmFsVHlwZTsKIAogc3RydWN0IERlbGF5
ZWRTaWduYWwgewpAQCAtNjksMTQgKzczLDE0IEBAIHN0cnVjdCBEZWxheWVkU2lnbmFsIHsKICAg
ICB7CiAgICAgfQogCi0gICAgRGVsYXllZFNpZ25hbChEZWxheWVkU2lnbmFsVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiB1cmkpCisgICAgRGVsYXllZFNpZ25hbChEZWxheWVkU2lnbmFsVHlwZSB0eXBl
LCBjb25zdCBjaGFyKiBzdHIpCiAgICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHVyaSh1
cmkpCisgICAgICAgICwgc3RyKHN0cikKICAgICB7CiAgICAgfQogCiAgICAgRGVsYXllZFNpZ25h
bFR5cGUgdHlwZTsKLSAgICBDU3RyaW5nIHVyaTsKKyAgICBDU3RyaW5nIHN0cjsKIH07CiAKIERl
cXVlPERlbGF5ZWRTaWduYWw+IGRlbGF5ZWRTaWduYWxzUXVldWU7CkBAIC0yMzgsNiArMjQyLDM2
IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdlU2VudENhbGxiYWNrKFdlYktpdFdlYlBhZ2Uq
IHdlYlBhZ2UsIFdlYktpdENvbnNvbGVNZXNzCiAgICAgd2Via2l0X2RvbV9kb21fd2luZG93X3dl
YmtpdF9tZXNzYWdlX2hhbmRsZXJzX3Bvc3RfbWVzc2FnZSh3aW5kb3cuZ2V0KCksICJjb25zb2xl
IiwgbWVzc2FnZVN0cmluZy5nZXQoKSk7CiB9CiAKKworc3RhdGljIHZvaWQgZW1pdEZvcm1Db250
cm9sc0Fzc29jaWF0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBm
b3JtSWRzKQoreworICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCgK
KyAgICAgICAgY29ubmVjdGlvbiwKKyAgICAgICAgMCwKKyAgICAgICAgIi9vcmcvd2Via2l0L2d0
ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4dGVuc2lv
blRlc3QiLAorICAgICAgICAiRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCIsCisgICAgICAgIGdfdmFy
aWFudF9uZXcoIihzKSIsIGZvcm1JZHMpLAorICAgICAgICAwKTsKKyAgICBnX2Fzc2VydChvayk7
Cit9CisKK3N0YXRpYyB2b2lkIGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxsYmFjayhXZWJLaXRX
ZWJQYWdlKiB3ZWJQYWdlLCBHUHRyQXJyYXkqIGZvcm1FbGVtZW50cywgV2ViS2l0V2ViRXh0ZW5z
aW9uKiBleHRlbnNpb24pCit7CisgICAgR1N0cmluZyogZm9ybUlkc0J1aWxkZXIgPSBnX3N0cmlu
Z19uZXcobnVsbHB0cik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb3JtRWxlbWVudHMtPmxl
bjsgKytpKSB7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRUxFTUVOVChnX3B0cl9h
cnJheV9pbmRleChmb3JtRWxlbWVudHMsIGkpKSk7CisgICAgICAgIGF1dG8gZG9tRWxlbWVudCA9
IFdFQktJVF9ET01fRUxFTUVOVChnX3B0cl9hcnJheV9pbmRleChmb3JtRWxlbWVudHMsIGkpKTsK
KyAgICAgICAgZ19zdHJpbmdfYXBwZW5kKGZvcm1JZHNCdWlsZGVyLCB3ZWJraXRfZG9tX2VsZW1l
bnRfZ2V0X2lkKGRvbUVsZW1lbnQpKTsKKyAgICB9CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBmb3Jt
SWRzKGdfc3RyaW5nX2ZyZWUoZm9ybUlkc0J1aWxkZXIsIGZhbHNlKSk7CisgICAgZ3BvaW50ZXIg
ZGF0YSA9IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGV4dGVuc2lvbiksICJkYnVzLWNvbm5l
Y3Rpb24iKTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgZW1pdEZvcm1Db250cm9sc0Fzc29jaWF0
ZWQoR19EQlVTX0NPTk5FQ1RJT04oZGF0YSksIGZvcm1JZHMuZ2V0KCkpOworICAgIGVsc2UKKyAg
ICAgICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25hbChGb3JtQ29udHJv
bHNBc3NvY2lhdGVkU2lnbmFsLCBmb3JtSWRzLmdldCgpKSk7Cit9CisKIHN0YXRpYyB2b2lkIHBh
Z2VDcmVhdGVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIFdlYktpdFdl
YlBhZ2UqIHdlYlBhZ2UsIGdwb2ludGVyKQogewogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2ViUGFn
ZSwgImRvY3VtZW50LWxvYWRlZCIsIEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2FkZWRDYWxsYmFjayks
IGV4dGVuc2lvbik7CkBAIC0yNDUsNiArMjc5LDcgQEAgc3RhdGljIHZvaWQgcGFnZUNyZWF0ZWRD
YWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0V2ViUGFnZSogd2UK
ICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3QiLCBHX0NBTExCQUNL
KHNlbmRSZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdl
YlBhZ2UsICJjb250ZXh0LW1lbnUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51Q2FsbGJhY2spLCBu
dWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJjb25zb2xlLW1lc3NhZ2Ut
c2VudCIsIEdfQ0FMTEJBQ0soY29uc29sZU1lc3NhZ2VTZW50Q2FsbGJhY2spLCBudWxscHRyKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJmb3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQi
LCBHX0NBTExCQUNLKGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxsYmFjayksIGV4dGVuc2lvbik7
CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxsYmFjayhKU0NvbnRleHRSZWYganNDb250
ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikKQEAgLTM2MSw3ICszOTYsMTAg
QEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l
Y3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICAgICAgICAgIGVtaXREb2N1bWVudExvYWRl
ZChjb25uZWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFVSSUNoYW5n
ZWRTaWduYWw6Ci0gICAgICAgICAgICBlbWl0VVJJQ2hhbmdlZChjb25uZWN0aW9uLCBkZWxheWVk
U2lnbmFsLnVyaS5kYXRhKCkpOworICAgICAgICAgICAgZW1pdFVSSUNoYW5nZWQoY29ubmVjdGlv
biwgZGVsYXllZFNpZ25hbC5zdHIuZGF0YSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEZvcm1Db250cm9sc0Fzc29jaWF0ZWRTaWduYWw6CisgICAgICAgICAgICBlbWl0Rm9y
bUNvbnRyb2xzQXNzb2NpYXRlZChjb25uZWN0aW9uLCBkZWxheWVkU2lnbmFsLnN0ci5kYXRhKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294165</attachid>
            <date>2016-11-08 09:26:10 -0800</date>
            <delta_ts>2016-11-08 09:28:35 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164050-20161108182019.patch</filename>
            <type>text/plain</type>
            <size>14473</size>
            <attacher name="Sergio Villar Senin">svillar</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDliNzk5Mzk3NWVjM2Rj
NmVlNWMzNzI5MjhmZmUzMWYxM2NhNTBmZi4uZWY3ZDNkODg0YjZiYzU1NDEyM2EwOTI4MjRkOGJj
ZTQ5NTlkZjUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTI3ICBTZXJn
aW8gVmlsbGFyIFNlbmluICA8c3ZpbGxhckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE5l
dyBBUEkgdG8gbm90aWZ5IGFib3V0IGR5bmFtaWNhbGx5IGFkZGVkIGZvcm1zCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQwNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lhIENhbXBvcy4KKworICAgICAgICBUaGlzIG5ldyBBUEkg
ZXhwb3J0cyB0aGUgV2ViQ29yZSBldmVudCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMgdGhyb3Vn
aCB0aGUgd2ViIGV4dGVuc2lvbgorICAgICAgICBtZWNoYW5pc20uIFRoaXMgd2lsbCBoZWxwIGNs
aWVudHMgKG1haW5seSB3ZWIgYnJvd3NlcnMpIHRvIGltcGxlbWVudCByb2J1c3QgYXV0byBmaWxs
aW5nCisgICAgICAgIG1lY2hhbmlzbXMuIEl0IGRlYWxzIG5pY2VseSB3aXRoIGR5bmFtaWNhbGx5
IGNyZWF0ZWQgZm9ybXMgKGFuZCBmb3JtIGNvbnRyb2xzKSBhcyBtYW55IEpTCisgICAgICAgIGZy
YW1ld29ya3MgZG8gbm93YWRheXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6IEFkZGVkIGEgRm9ybUNsaWVudCBpbXBsZW1l
bnRhdGlvbiBvZgorICAgICAgICBBUEk6OkluamVjdGVkQnVuZGxlOjpGb3JtQ2xpZW50LgorICAg
ICAgICAod2Via2l0V2ViUGFnZUZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOiBFbWl0IHRoZSBuZXcg
c2lnbmFsLgorICAgICAgICAod2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQpOiBBZGRlZCB0aGUg
bmV3IHNpZ25hbCAiZm9ybXMtY29udHJvbHMtYXNzb2NpYXRlZCIuCisgICAgICAgICh3ZWJraXRX
ZWJQYWdlQ3JlYXRlKTogU2V0IHRoZSBXZWJQYWdlIGFzIGEgRm9ybUNsaWVudC4KKwogMjAxNi0x
MC0yNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFJlcGxhY2Ug
SURCS2V5UGF0aCB3aXRoIGEgV1RGOjpWYXJpYW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2Vi
UGFnZS5jcHAKaW5kZXggMDBkNzZhOTM0ODUwYzJkY2U4YjU0MTcyNWE5MWQwZmJhODhlZDQyMi4u
NmY3NmY4ODU2Yjk5ZDhlZTRjZDhlYjY2YzQ0Njg0ZWZlOWM5MTRmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2d0ay9XZWJLaXRXZWJQYWdlLmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYktp
dENvbnNvbGVNZXNzYWdlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdENvbnRleHRNZW51UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdERPTURvY3VtZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUg
IldlYktpdERPTUVsZW1lbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViS2l0RnJhbWVQcml2YXRl
LmgiCiAjaW5jbHVkZSAiV2ViS2l0TWFyc2hhbC5oIgogI2luY2x1ZGUgIldlYktpdFByaXZhdGUu
aCIKQEAgLTYwLDYgKzYxLDcgQEAgZW51bSB7CiAgICAgU0VORF9SRVFVRVNULAogICAgIENPTlRF
WFRfTUVOVSwKICAgICBDT05TT0xFX01FU1NBR0VfU0VOVCwKKyAgICBGT1JNX0NPTlRST0xTX0FT
U09DSUFURUQsCiAKICAgICBMQVNUX1NJR05BTAogfTsKQEAgLTM0MCw2ICszNDIsMjggQEAgcHJp
dmF0ZToKICAgICBXZWJLaXRXZWJQYWdlKiBtX3dlYlBhZ2U7CiB9OwogCitjbGFzcyBGb3JtQ2xp
ZW50IGZpbmFsIDogcHVibGljIEFQSTo6SW5qZWN0ZWRCdW5kbGU6OkZvcm1DbGllbnQgeworcHVi
bGljOgorICAgIGV4cGxpY2l0IEZvcm1DbGllbnQoV2ViS2l0V2ViUGFnZSogd2ViUGFnZSkKKyAg
ICAgICAgOiBtX3dlYlBhZ2Uod2ViUGFnZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBkaWRB
c3NvY2lhdGVGb3JtQ29udHJvbHMoV2ViUGFnZSosIGNvbnN0IFZlY3RvcjxSZWZQdHI8RWxlbWVu
dD4+JiBlbGVtZW50cykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIEdSZWZQdHI8R1B0ckFycmF5
PiBmb3JtRWxlbWVudHMgPSBhZG9wdEdSZWYoZ19wdHJfYXJyYXlfc2l6ZWRfbmV3KGVsZW1lbnRz
LnNpemUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVsZW1lbnRzLnNpemUo
KTsgKytpKQorICAgICAgICAgICAgZ19wdHJfYXJyYXlfYWRkKGZvcm1FbGVtZW50cy5nZXQoKSwg
V2ViS2l0OjpraXQoZWxlbWVudHNbaV0uZ2V0KCkpKTsKKworICAgICAgICBnX3NpZ25hbF9lbWl0
KG1fd2ViUGFnZSwgc2lnbmFsc1tGT1JNX0NPTlRST0xTX0FTU09DSUFURURdLCAwLCBmb3JtRWxl
bWVudHMuZ2V0KCkpOworICAgIH0KKworICAgIGJvb2wgc2hvdWxkTm90aWZ5T25Gb3JtQ2hhbmdl
cyhXZWJQYWdlKikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQorCitwcml2YXRlOgorICAgIFdl
YktpdFdlYlBhZ2UqIG1fd2ViUGFnZTsKK307CisKIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlBhZ2VH
ZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BJZCwgR1ZhbHVlKiB2YWx1ZSwg
R1BhcmFtU3BlYyogcGFyYW1TcGVjKQogewogICAgIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UgPSBX
RUJLSVRfV0VCX1BBR0Uob2JqZWN0KTsKQEAgLTQ3Myw2ICs0OTcsMzMgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9wYWdlX2NsYXNzX2luaXQoV2ViS2l0V2ViUGFnZUNsYXNzKiBrbGFzcykKICAg
ICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX0JPWEVELAogICAgICAgICBHX1RZUEVfTk9O
RSwgMSwKICAgICAgICAgV0VCS0lUX1RZUEVfQ09OU09MRV9NRVNTQUdFIHwgR19TSUdOQUxfVFlQ
RV9TVEFUSUNfU0NPUEUpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViUGFnZTo6Zm9ybS1j
b250cm9scy1hc3NvY2lhdGVkOgorICAgICAqIEB3ZWJfcGFnZTogdGhlICNXZWJLaXRXZWJQYWdl
IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1pdHRlZAorICAgICAqIEBlbGVtZW50czogKGVsZW1l
bnQtdHlwZSBXZWJLaXQuRE9NRWxlbWVudCkgKHRyYW5zZmVyIG5vbmUpOiBhICNHUHRyQXJyYXkg
b2YKKyAgICAgKiAgICAgI1dlYktpdERPTUVsZW1lbnQgd2l0aCB0aGUgbGlzdCBvZiBmb3JtcyBp
biB0aGUgcGFnZQorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciBmb3JtIGVsZW1lbnRzIChv
ciBmb3JtIGFzc29jaWF0ZWQgZWxlbWVudHMpIGFyZSBhc3NvY2lhdGVkIHRvIGEgcGFydGljdWxh
ciB3ZWIKKyAgICAgKiBwYWdlLiBVc2VmdWwgdG8gaW1wbGVtZW50IGZvcm0gYXV0b2ZpbGxpbmcg
d2l0aCB3ZWIgcGFnZXMgd2hlcmUgZm9ybSBmaWVsZHMgYXJlIGR5bmFtaWNhbGx5CisgICAgICog
YWRkZWQgKGFzIG1hbnkgSlMgZnJhbWV3b3JrcyBkbykuIFRoaXMgbWlnaHQgYmUgZW1pdHRlZCBt
dWx0aXBsZSB0aW1lcyBmb3IgdGhlIHNhbWUgd2ViIHBhZ2UuCisgICAgICoKKyAgICAgKiBOb3Rl
IHRoYXQgdGhpcyBzaWduYWwgY291bGQgYmUgYWxzbyBlbWl0dGVkIHdoZW4gZm9ybSBjb250cm9s
cyBhcmUgbW92ZWQgYmV0d2VlbiBmb3Jtcy4gSW4KKyAgICAgKiB0aG9zZSBjYXNlcyB0aGUgQGVs
ZW1lbnRzIGFycmF5IGNhcnJpZXMgdGhlIGxpc3Qgb2YgdGhvc2UgZWxlbWVudHMgd2hpY2ggaGF2
ZSBtb3ZlZC4KKyAgICAgKgorICAgICAqIEluIGFueSBjYXNlIHRoZSBtZW1iZXJzIG9mIHRoZSBA
ZWxlbWVudHMgYXJyYXkgd2lsbCBiZSBhbGl2ZSBkdXJpbmcgc2lnbmFsIGVtaXNzaW9uIHNvCisg
ICAgICogY2xpZW50cyBzaG91bGQgdGFrZSBhIHJlZmVyZW5jZSB0byBrZWVwIHRoZW0gYWxpdmUu
CisgICAgICoKKyAgICAgKiBTaW5jZTogMi4xNgorICAgICAqLworICAgIHNpZ25hbHNbRk9STV9D
T05UUk9MU19BU1NPQ0lBVEVEXSA9IGdfc2lnbmFsX25ldygKKyAgICAgICAgImZvcm0tY29udHJv
bHMtYXNzb2NpYXRlZCIsCisgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKGtsYXNzKSwKKyAgICAg
ICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgIDAsIDAsIG51bGxwdHIsCisgICAgICAgIGdf
Y2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19CT1hFRCwKKyAgICAgICAgR19UWVBFX05PTkUsIDEsCisg
ICAgICAgIEdfVFlQRV9QVFJfQVJSQVkpOwogfQogCiBXZWJQYWdlKiB3ZWJraXRXZWJQYWdlR2V0
UGFnZShXZWJLaXRXZWJQYWdlICp3ZWJQYWdlKQpAQCAtNTQ1LDYgKzU5Niw3IEBAIFdlYktpdFdl
YlBhZ2UqIHdlYmtpdFdlYlBhZ2VDcmVhdGUoV2ViUGFnZSogd2ViUGFnZSkKIAogICAgIHdlYlBh
Z2UtPnNldEluamVjdGVkQnVuZGxlQ29udGV4dE1lbnVDbGllbnQoc3RkOjptYWtlX3VuaXF1ZTxQ
YWdlQ29udGV4dE1lbnVDbGllbnQ+KHBhZ2UpKTsKICAgICB3ZWJQYWdlLT5zZXRJbmplY3RlZEJ1
bmRsZVVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8UGFnZVVJQ2xpZW50PihwYWdlKSk7CisgICAg
d2ViUGFnZS0+c2V0SW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8Rm9y
bUNsaWVudD4ocGFnZSkpOwogCiAgICAgcmV0dXJuIHBhZ2U7CiB9CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOTJjMTBjNDFkN2JiOGY5M2E2M2Yy
ZmVkZTkzZTJiYTUxMWVmZWVkMi4uNmM5ZmNhODRjOTY5YjM5NzI2ZDk3NDY4MjVjM2Q0NDM4ZmYy
YzZlOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDE2LTEwLTI3ICBTZXJnaW8gVmlsbGFyIFNlbmluICA8c3ZpbGxh
ckBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIE5ldyBBUEkgdG8gbm90aWZ5IGFib3V0IGR5
bmFtaWNhbGx5IGFkZGVkIGZvcm1zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjQwNTAKKworICAgICAgICBSZXZpZXdlZCBieSBDYXJsb3MgR2FyY2lh
IENhbXBvcy4KKworICAgICAgICBBZGRlZCBhIG5ldyB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQg
ZGluYW1pY2FsbHkgYWRkZWQgZm9ybXMgY29ycmVjdGx5IHRyaWdnZXIgdGhlCisgICAgICAgICJm
b3JtLWNvbnRyb2xzLWFzc29jaWF0ZWQiIHNpZ25hbCBmcm9tIFdlYlBhZ2UuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwOgor
ICAgICAgICAoZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzQ2FsbGJhY2spOgorICAgICAgICAodGVz
dFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQpOgorICAgICAgICAoYmVmb3JlQWxs
KToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJHdGsvV2ViRXh0ZW5zaW9u
VGVzdC5jcHA6CisgICAgICAgIChEZWxheWVkU2lnbmFsOjpEZWxheWVkU2lnbmFsKToKKyAgICAg
ICAgKGVtaXRGb3JtQ29udHJvbHNBc3NvY2lhdGVkKToKKyAgICAgICAgKGZvcm1Db250cm9sc0Fz
c29jaWF0ZWRDYWxsYmFjayk6CisgICAgICAgIChwYWdlQ3JlYXRlZENhbGxiYWNrKToKKwogMjAx
Ni0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAg
ICBbR1RLXSBKU0MgdGVzdCB3YXNtLnlhbWwvd2FzbS9qcy1hcGkvdGVzdF9iYXNpY19hcGkuanMu
ZGVmYXVsdC13YXNtIGFuZCB3YXNtLnlhbWwvd2FzbS9qcy1hcGkvdGVzdF9Nb2R1bGUuanMuZGVm
YXVsdC13YXNtIGZhaWwgd2l0aCBFeGNlcHRpb246IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5k
IHZhcmlhYmxlOiBXZWJBc3NlbWJseQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucy5jcHAKaW5kZXggYjQxZTVlYjgy
YWY2OWY4ZDk3MzRlYWRiMDFhOTAxNWQyYjBjNWZhMy4uZmE0YWIyZDZjYjFhMjY2MmE3NDQ2MmFh
NWEyOTkxZTIwYjgwODUzMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1Rlc3RXZWJFeHRlbnNpb25zLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJHdGsvVGVzdFdlYkV4dGVuc2lvbnMuY3BwCkBAIC0yNyw2ICsyNywxMCBA
QCBzdGF0aWMgY29uc3QgY2hhciogd2ViRXh0ZW5zaW9uc1VzZXJEYXRhID0gIldlYiBFeHRlbnNp
b25zIHVzZXIgZGF0YSI7CiBzdGF0aWMgV2ViS2l0VGVzdEJ1cyogYnVzOwogc3RhdGljIEdVbmlx
dWVQdHI8Y2hhcj4gc2NyaXB0RGlhbG9nUmVzdWx0OwogCisjZGVmaW5lIElOUFVUX0lEICJpbnB1
dC1pZCIKKyNkZWZpbmUgRk9STV9JRCAiZm9ybS1pZCIKKyNkZWZpbmUgRk9STTJfSUQgImZvcm0y
LWlkIgorCiBzdGF0aWMgdm9pZCB0ZXN0V2ViRXh0ZW5zaW9uR2V0VGl0bGUoV2ViVmlld1Rlc3Qq
IHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgdGVzdC0+bG9hZEh0bWwoIjxodG1sPjxoZWFk
Pjx0aXRsZT5XZWJLaXRHVEsrIFdlYiBFeHRlbnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48Ym9k
eT48L2JvZHk+PC9odG1sPiIsIDApOwpAQCAtMjEyLDYgKzIxNiw2NSBAQCBzdGF0aWMgdm9pZCB0
ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5zUGVybWlzc2lvblJlcXVlc3QoV2ViVmlld1Rlc3QqIHRl
c3QsIGdjb25zdAogICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCh0ZXN0LT5tX3dlYlZp
ZXcsIHBlcm1pc3Npb25SZXF1ZXN0U2lnbmFsSUQpOwogfQogCitzdGF0aWMgdm9pZCBkaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHNDYWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgR1ZhcmlhbnQqIHJlc3VsdCwg
V2ViVmlld1Rlc3QqIHRlc3QpCit7CisgICAgY29uc3QgY2hhciogZm9ybUlkczsKKyAgICBnX3Zh
cmlhbnRfZ2V0KHJlc3VsdCwgIigmcykiLCAmZm9ybUlkcyk7CisgICAgZ19hc3NlcnQoIWdfc3Ry
Y21wMChmb3JtSWRzLCBGT1JNX0lEIEZPUk0yX0lEKSB8fCAhZ19zdHJjbXAwKGZvcm1JZHMsIElO
UFVUX0lEKSk7CisKKyAgICB0ZXN0LT5xdWl0TWFpbkxvb3AoKTsKK30KKworc3RhdGljIHZvaWQg
dGVzdFdlYkV4dGVuc2lvbkZvcm1Db250cm9sc0Fzc29jaWF0ZWQoV2ViVmlld1Rlc3QqIHRlc3Qs
IGdjb25zdHBvaW50ZXIpCit7CisgICAgR1VuaXF1ZVB0cjxjaGFyPiBleHRlbnNpb25CdXNOYW1l
KGdfc3RyZHVwX3ByaW50Zigib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5zaW9uVGVzdCV1IiwgVGVz
dDo6c193ZWJFeHRlbnNpb25JRCkpOworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gcHJveHkgPSBh
ZG9wdEdSZWYoYnVzLT5jcmVhdGVQcm94eShleHRlbnNpb25CdXNOYW1lLmdldCgpLAorICAgICAg
ICAiL29yZy93ZWJraXQvZ3RrL1dlYkV4dGVuc2lvblRlc3QiLCAib3JnLndlYmtpdC5ndGsuV2Vi
RXh0ZW5zaW9uVGVzdCIsIHRlc3QtPm1fbWFpbkxvb3ApKTsKKyAgICBHREJ1c0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24gPSBnX2RidXNfcHJveHlfZ2V0X2Nvbm5lY3Rpb24ocHJveHkuZ2V0KCkpOwor
ICAgIGd1aW50IGlkID0gZ19kYnVzX2Nvbm5lY3Rpb25fc2lnbmFsX3N1YnNjcmliZShjb25uZWN0
aW9uLAorICAgICAgICBudWxscHRyLAorICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViRXh0ZW5z
aW9uVGVzdCIsCisgICAgICAgICJGb3JtQ29udHJvbHNBc3NvY2lhdGVkIiwKKyAgICAgICAgIi9v
cmcvd2Via2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAg
ICAgR19EQlVTX1NJR05BTF9GTEFHU19OT05FLAorICAgICAgICByZWludGVycHJldF9jYXN0PEdE
QnVzU2lnbmFsQ2FsbGJhY2s+KGRpZEFzc29jaWF0ZUZvcm1Db250cm9sc0NhbGxiYWNrKSwKKyAg
ICAgICAgdGVzdCwKKyAgICAgICAgbnVsbHB0cik7CisgICAgZ19hc3NlcnQoaWQpOworCisgICAg
dGVzdC0+bG9hZEh0bWwoIjwhRE9DVFlQRSBodG1sPjxoZWFkPjx0aXRsZT5XZWJLaXRHVEsrIFdl
YiBFeHRlbnNpb25zIFRlc3Q8L3RpdGxlPjwvaGVhZD48ZGl2IGlkPVwicGxhY2Vob2xkZXJcIi8+
IiwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBzdGF0aWMg
Y29uc3QgY2hhciogYWRkRm9ybVNjcmlwdCA9CisgICAgICAgICJ2YXIgaW5wdXQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KFwiaW5wdXRcIik7IgorICAgICAgICAiaW5wdXQuaWQgPSBcIiIgSU5Q
VVRfSUQgIlwiOyIKKyAgICAgICAgImlucHV0LnR5cGUgPSBcInBhc3N3b3JkXCI7IgorICAgICAg
ICAidmFyIGZvcm0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZm9ybVwiKTsiCisgICAgICAg
ICJmb3JtLmlkID0gXCIiIEZPUk1fSUQgIlwiOyIKKyAgICAgICAgImZvcm0uYXBwZW5kQ2hpbGQo
aW5wdXQpOyIKKyAgICAgICAgInZhciBmb3JtMiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJm
b3JtXCIpOyIKKyAgICAgICAgImZvcm0yLmlkID0gXCIiIEZPUk0yX0lEICJcIjsiCisgICAgICAg
ICJ2YXIgcGxhY2Vob2xkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInBsYWNlaG9sZGVy
XCIpOyIKKyAgICAgICAgInBsYWNlaG9sZGVyLmFwcGVuZENoaWxkKGZvcm0pOyIKKyAgICAgICAg
InBsYWNlaG9sZGVyLmFwcGVuZENoaWxkKGZvcm0yKTsiOworCisgICAgd2Via2l0X3dlYl92aWV3
X3J1bl9qYXZhc2NyaXB0KHRlc3QtPm1fd2ViVmlldywgYWRkRm9ybVNjcmlwdCwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cik7CisgICAgZ19tYWluX2xvb3BfcnVuKHRlc3QtPm1fbWFpbkxvb3Ap
OworCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIG1vdmVGb3JtRWxlbWVudFNjcmlwdCA9CisgICAg
ICAgICJ2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiIiBGT1JNX0lEICJcIik7
IgorICAgICAgICAidmFyIGZvcm0yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCIiIEZPUk0y
X0lEICJcIik7IgorICAgICAgICAidmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
XCIiIElOUFVUX0lEICJcIik7IgorICAgICAgICAiZm9ybS5yZW1vdmVDaGlsZChpbnB1dCk7Igor
ICAgICAgICAiZm9ybTIuYXBwZW5kQ2hpbGQoaW5wdXQpOyI7CisKKyAgICB3ZWJraXRfd2ViX3Zp
ZXdfcnVuX2phdmFzY3JpcHQodGVzdC0+bV93ZWJWaWV3LCBtb3ZlRm9ybUVsZW1lbnRTY3JpcHQs
IG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpOworICAgIGdfbWFpbl9sb29wX3J1bih0ZXN0LT5t
X21haW5Mb29wKTsKKworICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmliZShj
b25uZWN0aW9uLCBpZCk7Cit9CisKIHZvaWQgYmVmb3JlQWxsKCkKIHsKICAgICBidXMgPSBuZXcg
V2ViS2l0VGVzdEJ1cygpOwpAQCAtMjI0LDYgKzI4Nyw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJFeHRlbnNpb24iLCAid2luZG93LW9iamVjdC1j
bGVhcmVkIiwgdGVzdFdlYkV4dGVuc2lvbldpbmRvd09iamVjdENsZWFyZWQpOwogICAgIFdlYlZp
ZXdUZXN0OjphZGQoIldlYktpdFdlYkV4dGVuc2lvbiIsICJpc29sYXRlZC13b3JsZCIsIHRlc3RX
ZWJFeHRlbnNpb25Jc29sYXRlZFdvcmxkKTsKICAgICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImluc3RhbGwtbWlzc2luZy1wbHVnaW5zLXBlcm1pc3Npb24tcmVxdWVzdCIsIHRl
c3RJbnN0YWxsTWlzc2luZ1BsdWdpbnNQZXJtaXNzaW9uUmVxdWVzdCk7CisgICAgV2ViVmlld1Rl
c3Q6OmFkZCgiV2ViS2l0V2ViRXh0ZW5zaW9uIiwgImZvcm0tY29udHJvbHMtYXNzb2NpYXRlZC1z
aWduYWwiLCB0ZXN0V2ViRXh0ZW5zaW9uRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCk7CiB9CiAKIHZv
aWQgYWZ0ZXJBbGwoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyR3RrL1dlYkV4dGVuc2lvblRlc3QuY3BwCmluZGV4IGZlNmZmY2FlODYxNjIwMDdmMWVh
NTIzYzY5YmYxYzE3ZDg4MzJjOGMuLmY2MzJiYzM3MWViMGFkYjFlYjkyMmIxM2Q0Mjk5OTdlY2U0
NTZiY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mkd0ay9X
ZWJFeHRlbnNpb25UZXN0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJHdGsvV2ViRXh0ZW5zaW9uVGVzdC5jcHAKQEAgLTUxLDYgKzUxLDkgQEAgc3RhdGljIGNvbnN0
IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KICAgICAiICA8bWV0aG9kIG5hbWU9J1JlbW92ZUFW
UGx1Z2luc0Zyb21HU1RSZWdpc3RyeSc+IgogICAgICIgIDwvbWV0aG9kPiIKICAgICAiICA8c2ln
bmFsIG5hbWU9J0RvY3VtZW50TG9hZGVkJy8+IgorICAgICIgIDxzaWduYWwgbmFtZT0nRm9ybUNv
bnRyb2xzQXNzb2NpYXRlZCc+IgorICAgICIgICA8YXJnIHR5cGU9J3MnIG5hbWU9J2Zvcm1JZHMn
IGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvc2lnbmFsPiIKICAgICAiICA8c2lnbmFsIG5h
bWU9J1VSSUNoYW5nZWQnPiIKICAgICAiICAgPGFyZyB0eXBlPSdzJyBuYW1lPSd1cmknIGRpcmVj
dGlvbj0nb3V0Jy8+IgogICAgICIgIDwvc2lnbmFsPiIKQEAgLTYxLDYgKzY0LDcgQEAgc3RhdGlj
IGNvbnN0IGNoYXIgaW50cm9zcGVjdGlvblhNTFtdID0KIHR5cGVkZWYgZW51bSB7CiAgICAgRG9j
dW1lbnRMb2FkZWRTaWduYWwsCiAgICAgVVJJQ2hhbmdlZFNpZ25hbCwKKyAgICBGb3JtQ29udHJv
bHNBc3NvY2lhdGVkU2lnbmFsLAogfSBEZWxheWVkU2lnbmFsVHlwZTsKIAogc3RydWN0IERlbGF5
ZWRTaWduYWwgewpAQCAtNjksMTQgKzczLDE0IEBAIHN0cnVjdCBEZWxheWVkU2lnbmFsIHsKICAg
ICB7CiAgICAgfQogCi0gICAgRGVsYXllZFNpZ25hbChEZWxheWVkU2lnbmFsVHlwZSB0eXBlLCBj
b25zdCBjaGFyKiB1cmkpCisgICAgRGVsYXllZFNpZ25hbChEZWxheWVkU2lnbmFsVHlwZSB0eXBl
LCBjb25zdCBjaGFyKiBzdHIpCiAgICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIHVyaSh1
cmkpCisgICAgICAgICwgc3RyKHN0cikKICAgICB7CiAgICAgfQogCiAgICAgRGVsYXllZFNpZ25h
bFR5cGUgdHlwZTsKLSAgICBDU3RyaW5nIHVyaTsKKyAgICBDU3RyaW5nIHN0cjsKIH07CiAKIERl
cXVlPERlbGF5ZWRTaWduYWw+IGRlbGF5ZWRTaWduYWxzUXVldWU7CkBAIC0yMzgsNiArMjQyLDM2
IEBAIHN0YXRpYyB2b2lkIGNvbnNvbGVNZXNzYWdlU2VudENhbGxiYWNrKFdlYktpdFdlYlBhZ2Uq
IHdlYlBhZ2UsIFdlYktpdENvbnNvbGVNZXNzCiAgICAgd2Via2l0X2RvbV9kb21fd2luZG93X3dl
YmtpdF9tZXNzYWdlX2hhbmRsZXJzX3Bvc3RfbWVzc2FnZSh3aW5kb3cuZ2V0KCksICJjb25zb2xl
IiwgbWVzc2FnZVN0cmluZy5nZXQoKSk7CiB9CiAKKworc3RhdGljIHZvaWQgZW1pdEZvcm1Db250
cm9sc0Fzc29jaWF0ZWQoR0RCdXNDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBjaGFyKiBm
b3JtSWRzKQoreworICAgIGJvb2wgb2sgPSBnX2RidXNfY29ubmVjdGlvbl9lbWl0X3NpZ25hbCgK
KyAgICAgICAgY29ubmVjdGlvbiwKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgIi9vcmcvd2Vi
a2l0L2d0ay9XZWJFeHRlbnNpb25UZXN0IiwKKyAgICAgICAgIm9yZy53ZWJraXQuZ3RrLldlYkV4
dGVuc2lvblRlc3QiLAorICAgICAgICAiRm9ybUNvbnRyb2xzQXNzb2NpYXRlZCIsCisgICAgICAg
IGdfdmFyaWFudF9uZXcoIihzKSIsIGZvcm1JZHMpLAorICAgICAgICBudWxscHRyKTsKKyAgICBn
X2Fzc2VydChvayk7Cit9CisKK3N0YXRpYyB2b2lkIGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxs
YmFjayhXZWJLaXRXZWJQYWdlKiB3ZWJQYWdlLCBHUHRyQXJyYXkqIGZvcm1FbGVtZW50cywgV2Vi
S2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24pCit7CisgICAgR1N0cmluZyogZm9ybUlkc0J1aWxk
ZXIgPSBnX3N0cmluZ19uZXcobnVsbHB0cik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmb3Jt
RWxlbWVudHMtPmxlbjsgKytpKSB7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRUxF
TUVOVChnX3B0cl9hcnJheV9pbmRleChmb3JtRWxlbWVudHMsIGkpKSk7CisgICAgICAgIGF1dG8g
ZG9tRWxlbWVudCA9IFdFQktJVF9ET01fRUxFTUVOVChnX3B0cl9hcnJheV9pbmRleChmb3JtRWxl
bWVudHMsIGkpKTsKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kKGZvcm1JZHNCdWlsZGVyLCB3ZWJr
aXRfZG9tX2VsZW1lbnRfZ2V0X2lkKGRvbUVsZW1lbnQpKTsKKyAgICB9CisgICAgR1VuaXF1ZVB0
cjxjaGFyPiBmb3JtSWRzKGdfc3RyaW5nX2ZyZWUoZm9ybUlkc0J1aWxkZXIsIEZBTFNFKSk7Cisg
ICAgZ3BvaW50ZXIgZGF0YSA9IGdfb2JqZWN0X2dldF9kYXRhKEdfT0JKRUNUKGV4dGVuc2lvbiks
ICJkYnVzLWNvbm5lY3Rpb24iKTsKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgZW1pdEZvcm1Db250
cm9sc0Fzc29jaWF0ZWQoR19EQlVTX0NPTk5FQ1RJT04oZGF0YSksIGZvcm1JZHMuZ2V0KCkpOwor
ICAgIGVsc2UKKyAgICAgICAgZGVsYXllZFNpZ25hbHNRdWV1ZS5hcHBlbmQoRGVsYXllZFNpZ25h
bChGb3JtQ29udHJvbHNBc3NvY2lhdGVkU2lnbmFsLCBmb3JtSWRzLmdldCgpKSk7Cit9CisKIHN0
YXRpYyB2b2lkIHBhZ2VDcmVhdGVkQ2FsbGJhY2soV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNp
b24sIFdlYktpdFdlYlBhZ2UqIHdlYlBhZ2UsIGdwb2ludGVyKQogewogICAgIGdfc2lnbmFsX2Nv
bm5lY3Qod2ViUGFnZSwgImRvY3VtZW50LWxvYWRlZCIsIEdfQ0FMTEJBQ0soZG9jdW1lbnRMb2Fk
ZWRDYWxsYmFjayksIGV4dGVuc2lvbik7CkBAIC0yNDUsNiArMjc5LDcgQEAgc3RhdGljIHZvaWQg
cGFnZUNyZWF0ZWRDYWxsYmFjayhXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgV2ViS2l0
V2ViUGFnZSogd2UKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJzZW5kLXJlcXVlc3Qi
LCBHX0NBTExCQUNLKHNlbmRSZXF1ZXN0Q2FsbGJhY2spLCBudWxscHRyKTsKICAgICBnX3NpZ25h
bF9jb25uZWN0KHdlYlBhZ2UsICJjb250ZXh0LW1lbnUiLCBHX0NBTExCQUNLKGNvbnRleHRNZW51
Q2FsbGJhY2spLCBudWxscHRyKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJjb25z
b2xlLW1lc3NhZ2Utc2VudCIsIEdfQ0FMTEJBQ0soY29uc29sZU1lc3NhZ2VTZW50Q2FsbGJhY2sp
LCBudWxscHRyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYlBhZ2UsICJmb3JtLWNvbnRyb2xz
LWFzc29jaWF0ZWQiLCBHX0NBTExCQUNLKGZvcm1Db250cm9sc0Fzc29jaWF0ZWRDYWxsYmFjayks
IGV4dGVuc2lvbik7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGVjaG9DYWxsYmFjayhKU0NvbnRl
eHRSZWYganNDb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYsIHNpemVfdCBhcmd1bWVu
dENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKikKQEAgLTM2
MSw3ICszOTYsMTAgQEAgc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1c0Nvbm5l
Y3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGcKICAgICAgICAgICAgIGVtaXRE
b2N1bWVudExvYWRlZChjb25uZWN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBj
YXNlIFVSSUNoYW5nZWRTaWduYWw6Ci0gICAgICAgICAgICBlbWl0VVJJQ2hhbmdlZChjb25uZWN0
aW9uLCBkZWxheWVkU2lnbmFsLnVyaS5kYXRhKCkpOworICAgICAgICAgICAgZW1pdFVSSUNoYW5n
ZWQoY29ubmVjdGlvbiwgZGVsYXllZFNpZ25hbC5zdHIuZGF0YSgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEZvcm1Db250cm9sc0Fzc29jaWF0ZWRTaWduYWw6CisgICAgICAg
ICAgICBlbWl0Rm9ybUNvbnRyb2xzQXNzb2NpYXRlZChjb25uZWN0aW9uLCBkZWxheWVkU2lnbmFs
LnN0ci5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>