<?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>19898</bug_id>
          
          <creation_ts>2008-07-04 22:25:08 -0700</creation_ts>
          <short_desc>[Gtk] WebKitWebHistoryItem: Fixes and improvements</short_desc>
          <delta_ts>2009-03-11 04:18:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>24493</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>19939</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jan Alonzo">jmalonzo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>sandshrew</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>85198</commentid>
    <comment_count>0</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-04 22:25:08 -0700</bug_when>
    <thetext>Documentation and handling of RefPtr should be fixed. We&apos;re currently using the raw HistoryItem pointer which results to implicit conversions, hence messing up ref counting. There are also instances where Epiphany crashes when using the backforwardlist (due to WebKitWebHistoryItem&apos;s fault). And lastly, title and URI should be empty strings when initialised or assigned as NULL (rather than NULL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85199</commentid>
    <comment_count>1</comment_count>
      <attachid>22091</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-04 22:26:38 -0700</bug_when>
    <thetext>Created attachment 22091
Patch to fix issues in WebKitWebHistoryItem

The attached patch fixes the issues I mentioned above. Feedback appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85446</commentid>
    <comment_count>2</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2008-07-08 04:07:05 -0700</bug_when>
    <thetext>Looks pretty good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85831</commentid>
    <comment_count>3</comment_count>
      <attachid>22254</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-12 01:27:03 -0700</bug_when>
    <thetext>Created attachment 22254
updated documentation

This update improves the documentation on the previous patch, specifically documented when a return value should be freed or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85931</commentid>
    <comment_count>4</comment_count>
      <attachid>22254</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-15 03:16:38 -0700</bug_when>
    <thetext>Comment on attachment 22254
updated documentation

This patch needs a bit more work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85932</commentid>
    <comment_count>5</comment_count>
      <attachid>22254</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-15 03:17:46 -0700</bug_when>
    <thetext>Comment on attachment 22254
updated documentation

wrong review bit. should be none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86656</commentid>
    <comment_count>6</comment_count>
    <who name="Sven Neumann">webkit</who>
    <bug_when>2008-07-22 09:09:59 -0700</bug_when>
    <thetext>This looks like it might also fix bug #19939.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86657</commentid>
    <comment_count>7</comment_count>
    <who name="Sven Neumann">webkit</who>
    <bug_when>2008-07-22 09:18:24 -0700</bug_when>
    <thetext>There are some issues with the documentation changes in this patch though. The patch introduces documentation like this:

 * Return value: the title of the @webHistoryItem or %NULL if history item
 *               is %NULL. The string is owned by @webHistoryItem and must not
 *               be modified or freed.

It is not allowed to pass NULL for @webHistoryItem though. The changed documentation of the return value gives the impression that this would be allowed, but it isn&apos;t. There&apos;s a g_return_val_if_fail() check for this. It is correct that this assertion returns NULL. But by definition the behavior is undefined after such an assertion failed. It will only confuse users of the API to document this error case.

I very much welcome though that the patch makes it clearer who is responsible for freeing the returned strings.


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>86988</commentid>
    <comment_count>8</comment_count>
      <attachid>22492</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-25 19:30:08 -0700</bug_when>
    <thetext>Created attachment 22492
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87007</commentid>
    <comment_count>9</comment_count>
      <attachid>22492</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-07-26 15:56:18 -0700</bug_when>
    <thetext>Comment on attachment 22492
updated patch

&gt;-static void webkit_history_item_add(WebKitWebHistoryItem* webHistoryItem, WebCore::HistoryItem* historyItem)
&gt;+static void webkit_history_item_add(WebKitWebHistoryItem* webHistoryItem, RefPtr&lt;HistoryItem&gt; historyItem)
&gt; {
&gt;     g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem));
&gt;+    g_return_if_fail(historyItem != NULL);
&gt; 
&gt;     GHashTable* table = webkit_history_items();

You shouldn&apos;t use g_return_if_fail in static functions. That macro is meant to warn about errorneous use of the library. Use ASSERT instead.

&gt;-/* Helper function to create a new WebHistoryItem instance when needed */
&gt;-WebKitWebHistoryItem* webkit_web_history_item_new_with_core_item(WebCore::HistoryItem* item)
&gt;+/* Helper function to create a new WebHistoryItem instance if needed */
&gt;+WebKitWebHistoryItem* webkit_web_history_item_get_item(RefPtr&lt;HistoryItem&gt; item)
&gt; {
&gt;+    g_return_val_if_fail(item != NULL, NULL);
&gt;+
&gt;     WebKitWebHistoryItem* webHistoryItem = kit(item);
&gt; 
&gt;     if (!webHistoryItem) {

Dito.

&gt; WebKitWebHistoryItem* webkit_web_history_item_new_with_data(const gchar* uri, const gchar* title)
&gt; {
&gt;-    WebCore::KURL historyUri(uri);
&gt;-    WebCore::String historyTitle(title);
&gt;+    if (uri == NULL)
&gt;+        uri = &quot;&quot;;
&gt;+
&gt;+    if (title == NULL)
&gt;+        title = &quot;&quot;;
&gt;+
&gt;+    KURL historyUri(uri);
&gt;+    String historyTitle(title);

I would have written that title ? title: &quot;&quot; so it&apos;s shorter. But I suppose that&apos;s a matter of personal preference. :)

&gt;@@ -312,18 +322,23 @@ WebKitWebHistoryItem* webkit_web_history_item_new_with_data(const gchar* uri, co
&gt;  * @webHistoryItem: a #WebKitWebHistoryItem
&gt;  *
&gt;  * Returns the page title of @webHistoryItem
&gt;+ *
&gt;+ * Return value: the title of the @webHistoryItem or %NULL if history item
&gt;+ *               is %NULL. The string is owned by @webHistoryItem and must not
&gt;+ *               be modified or freed.
&gt;  */

As mentioned before, the wording suggests a NULL webHistoryItem were allowed which it isn&apos;t. NULL is just the _fail return value and not an expected value.

Also, while you are at fixing documentation, &quot;webHistoryItem&quot; is an internal identifier. The API argument is called &quot;web_history_item&quot;. I&apos;d appreciate if you could fix that where needed.

&gt;     return priv-&gt;alternateTitle;
&gt;@@ -358,15 +376,22 @@ G_CONST_RETURN gchar* webkit_web_history_item_get_alternate_title(WebKitWebHisto
&gt;  * @webHistoryItem: a #WebKitWebHistoryItem
&gt;  * @title: the alternate title for @this history item
&gt;  *
&gt;- * Sets an alternate title for @webHistoryItem
&gt;+ * Sets an alternate title for @webHistoryItem. If @title is NULL, this
&gt;+ * function will set the title to an empty string.
&gt;  */
&gt; void webkit_web_history_item_set_alternate_title(WebKitWebHistoryItem* webHistoryItem, const gchar* title)
&gt; {
&gt;     g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem));
&gt; 
&gt;-    WebCore::HistoryItem* item = core(webHistoryItem);
&gt;+    RefPtr&lt;HistoryItem&gt; item = core(webHistoryItem);
&gt;+
&gt;+    if (!item)
&gt;+        return;

What was the intention here? Silently failing is definitely wrong here.

&gt;  */
&gt; G_CONST_RETURN gchar* webkit_web_history_item_get_uri(WebKitWebHistoryItem* webHistoryItem)
&gt; {
&gt;     g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
&gt; 
&gt;-    WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
&gt;+    RefPtr&lt;HistoryItem&gt; item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
&gt;
&gt;     g_return_val_if_fail(item != NULL, NULL);
&gt; 
&gt;-    WebCore::String uri = item-&gt;urlString();
&gt;     WebKitWebHistoryItemPrivate* priv = webHistoryItem-&gt;priv;
&gt;     g_free(priv-&gt;uri);
&gt;+
&gt;+    String uri = item-&gt;urlString();
&gt;     priv-&gt;uri = g_strdup(uri.utf8().data());

That g_return_if_fail tests a condition after creating a HistoryItem pointer internally, which API users can&apos;t influence. Looks like an ASSERT is appropriate here. 

&gt; G_CONST_RETURN gchar* webkit_web_history_item_get_original_uri(WebKitWebHistoryItem* webHistoryItem)
&gt; {
&gt;     g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
&gt; 
&gt;-    WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
&gt;+    RefPtr&lt;HistoryItem&gt; item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
&gt; 
&gt;     g_return_val_if_fail(item != NULL, NULL);
&gt; 
&gt;-    WebCore::String originalUri = item-&gt;originalURLString();
&gt;     WebKitWebHistoryItemPrivate* priv = webHistoryItem-&gt;priv;
&gt;     g_free(priv-&gt;originalUri);

Same as above, wrong use of g_return_if_fail.

&gt;     return webHistoryItem-&gt;priv-&gt;originalUri;
&gt;@@ -424,13 +455,13 @@ G_CONST_RETURN gchar* webkit_web_history_item_get_original_uri(WebKitWebHistoryI
&gt;  *
&gt;  * Returns the last time @webHistoryItem was visited
&gt;  *
&gt;- * Return value: the time in seconds this @webHistoryItem was last visited
&gt;+ * Return value: the time in seconds this @webHistoryItem was last visited or 0 if @webHistoryItem is NULL
&gt;  */
&gt; gdouble webkit_web_history_item_get_last_visited_time(WebKitWebHistoryItem* webHistoryItem)

The history item being NULL is an undefined case of wrong API usage that should not be documented like an expected condition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>87071</commentid>
    <comment_count>10</comment_count>
      <attachid>22504</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-07-27 03:13:00 -0700</bug_when>
    <thetext>Created attachment 22504
updated patch based on christian and sven&apos;s comments

I&apos;ve updated the patch based on your comments. Pretty much everything said was taken into consideration. Thanks! =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>89545</commentid>
    <comment_count>11</comment_count>
      <attachid>22504</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-08-27 16:05:48 -0700</bug_when>
    <thetext>Comment on attachment 22504
updated patch based on christian and sven&apos;s comments

This just leads to unsafe access:
 53     WTF::RefPtr&lt;WebCore::HistoryItem&gt; core(WebKitWebHistoryItem*);


Returning a RefPtr is bad-news.  You end up churning the ref-count (the temporary RefPtr used for the return increments the ref count only to immediately decrement it again when it&apos;s destroyed).  Also things like this end up being wrong:

core(item).get()

If someone holds onto that pointer, it could have already gone away!   Cause the temporary RefPtr returned from core() could have been the only thing holding on to it.

If you already have a RefPtr, you should return:
const RefPtr&amp; which is safe, although really not any better than Class*

PassRefPtr is how we return or pass ref counted objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>113158</commentid>
    <comment_count>12</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-03-11 04:18:09 -0700</bug_when>
    <thetext>Most fixes are happening in bug #24493 so making this as duplicate of that bug.

Thanks.

*** This bug has been marked as a duplicate of 24493 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22091</attachid>
            <date>2008-07-04 22:26:38 -0700</date>
            <delta_ts>2008-07-12 01:27:03 -0700</delta_ts>
            <desc>Patch to fix issues in WebKitWebHistoryItem</desc>
            <filename>webkitgtk-historyitem-fixes.patch</filename>
            <type>text/plain</type>
            <size>17877</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggOWQzNGM0Zi4uOTVmOTNjNCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAwOC0wNy0wNCAg
SmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSBm
aXhlcyBhbmQgaW1wcm92ZW1lbnRzLgorCisgICAgICAgIC0gQ2FycnkgdGhlIFJlZlB0ciBhcm91
bmQgcmF0aGVyIHRoYW4gdGhlIHJhdyBIaXN0b3J5SXRlbSBwb2ludGVyLgorICAgICAgICAgIFRo
aXMgYXZvaWRzIGltcGxpY2l0IGNvbnZlcnNpb25zIHdoaWNoIG1lc3NlcyB1cCByZWYgY291bnRp
bmcKKyAgICAgICAgLSBJbXByb3ZlIGRvY3VtZW50YXRpb24gYW5kIGJlIGV4cGxpY2l0IGFzIHRv
IHdoZW4gYSB2YWx1ZSBpcyBOVUxMCisgICAgICAgICAgb3Igd2hlbiBhIHZhbHVlIGlzIGFuIGVt
cHR5IHN0cmluZworCisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuaDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcDoKKyAgICAgICAgKF9XZWJLaXRX
ZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOjp3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2Nv
bnRhaW5zX2l0ZW0pOgorICAgICAgICAoX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGU6
OndlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ29fdG9faXRlbSk6CisgICAgICAgIChfV2Vi
S2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZTo6d2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlz
dF9nZXRfZm9yd2FyZF9saXN0X3dpdGhfbGltaXQpOgorICAgICAgICAoX1dlYktpdFdlYkJhY2tG
b3J3YXJkTGlzdFByaXZhdGU6OndlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tf
bGlzdF93aXRoX2xpbWl0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwOgorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X2hpc3Rv
cnlfaXRlbV9hZGQpOiAtIFVzZQorICAgICAgICB0YXJnZXRJdGVtKCkgbWVtYmVyIG1ldGhvZCB0
byBnZXQgdGhlIGhpc3RvcnkgaXRlbSBhbmQgdXNlIHRoYXQgYXMKKyAgICAgICAgdGhlIGtleSBp
bnN0ZWFkIG9mIHRoZSBwb2ludGVyIHJldHVybiBieSBSZWZQdHIuZ2V0KCkuIFRoaXMgaXMKKyAg
ICAgICAgYmVjYXVzZSB0aGUgYWRkcmVzcyBvZiB0aGUgcG9pbnRlZSByZXR1cm5lZCBieSAuZ2V0
KCkgY2FuIGNoYW5nZQorICAgICAgICBvbiBhc3NpZ25tZW50CisgICAgICAgIChfV2ViS2l0V2Vi
SGlzdG9yeUl0ZW1Qcml2YXRlOjp3ZWJraXRfaGlzdG9yeV9pdGVtX3JlbW92ZSk6CisgICAgICAg
IChfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjp3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9u
ZXdfd2l0aF9jb3JlX2l0ZW0pOgorICAgICAgICAtIEluaXRpYWxpemUgdGl0bGUgYW5kIFVSSSBh
cyBhbiBlbXB0eSBzdHJpbmcgaWYgdGhleSBhcmUgc2V0IGFzCisgICAgICAgICAgTlVMTAorICAg
ICAgICAtIEZpeCByZWdyZXNzaW9uIHdoZXJlIHdlIGFyZSBub3QgcmVhbGx5IGdyYWJiaW5nIEhp
c3RvcnlJdGVtCisgICAgICAgICAgbWFraW5nIFdlYktpdFdlYkhpc3RvcnlJdGVtIGNhcnJ5aW5n
IGEgbnVsbCBIaXN0b3J5SXRlbQorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0
ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0
b3J5SXRlbVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEpOgor
ICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5
X2l0ZW1fZ2V0X3RpdGxlKToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6
OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9hbHRlcm5hdGVfdGl0bGUpOgorICAgICAgICAo
X1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0
X2FsdGVybmF0ZV90aXRsZSk6CisgICAgICAgIChfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRl
Ojp3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKToKKyAgICAgICAgKF9XZWJLaXRXZWJI
aXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9vcmlnaW5hbF91
cmkpOgorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fZ2V0X2xhc3RfdmlzaXRlZF90aW1lKToKKyAgICAgICAgKFdlYktpdDo6Y29y
ZSk6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwOgorCiAyMDA4LTA2LTE4ICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVA
Y29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFscCBUb2tlci4KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCBlZDgxYTFjLi41YzQ3YjBkIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oCkBAIC01MCw4ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
IFdlYkNvcmU6OlBhZ2UqIGNvcmUoV2ViS2l0V2ViVmlldyopOwogICAgIFdlYktpdFdlYlZpZXcq
IGtpdChXZWJDb3JlOjpQYWdlKik7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZShX
ZWJLaXRXZWJIaXN0b3J5SXRlbSopOwotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBraXQoV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qKTsKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRl
bT4gY29yZShXZWJLaXRXZWJIaXN0b3J5SXRlbSopOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVt
KiBraXQoV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KTsKIAogICAgIFdlYkNvcmU6
OkJhY2tGb3J3YXJkTGlzdCogY29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKIH0KQEAg
LTEwOCw3ICsxMDgsNyBAQCBleHRlcm4gIkMiIHsKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2luaXRf
d2l0aF93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVt
ZW50Kik7CiAKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKLSAgICB3ZWJraXRfd2ViX2hpc3Rv
cnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKyAgICB3
ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV1RGOjpSZWZQdHI8V2Vi
Q29yZTo6SGlzdG9yeUl0ZW0+KTsKIAogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtp
dHdlYmZyYW1lLmggb25jZSB0aGVpciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgogCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuY3BwIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcAppbmRleCA2YmQ3N2M4
Li4xMjI3Y2E3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJk
bGlzdC5jcHAKQEAgLTExOCwxMyArMTE4LDEzIEBAIGdib29sZWFuIHdlYmtpdF93ZWJfYmFja19m
b3J3YXJkX2xpc3RfY29udGFpbnNfaXRlbShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlCiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldBUkRfTElTVCh3
ZWJCYWNrRm9yd2FyZExpc3QpLCBGQUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBGQUxTRSk7CiAKLSAgICBX
ZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsK
KyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBjb3Jl
KHdlYkhpc3RvcnlJdGVtKTsKIAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGhpc3RvcnlJdGVt
ICE9IE5VTEwsIEZBTFNFKTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogYmFja0Zv
cndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3QpOwogCi0gICAgcmV0dXJuIChiYWNr
Rm9yd2FyZExpc3QtPmVuYWJsZWQoKSA/IGJhY2tGb3J3YXJkTGlzdC0+Y29udGFpbnNJdGVtKGhp
c3RvcnlJdGVtKSA6IEZBTFNFKTsKKyAgICByZXR1cm4gKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxl
ZCgpID8gYmFja0ZvcndhcmRMaXN0LT5jb250YWluc0l0ZW0oaGlzdG9yeUl0ZW0uZ2V0KCkpIDog
RkFMU0UpOwogfQogCiAvKioKQEAgLTEzOSwxMSArMTM5LDExIEBAIHZvaWQgd2Via2l0X3dlYl9i
YWNrX2ZvcndhcmRfbGlzdF9nb190b19pdGVtKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2Vi
QmFja0ZvCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9M
SVNUKHdlYkJhY2tGb3J3YXJkTGlzdCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pKTsKIAotICAgIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworICAgIFdURjo6UmVm
UHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0
ZW0pOwogICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29y
ZSh3ZWJCYWNrRm9yd2FyZExpc3QpOwogCiAgICAgaWYgKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxl
ZCgpICYmIGhpc3RvcnlJdGVtKQotICAgICAgICBiYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGhp
c3RvcnlJdGVtKTsKKyAgICAgICAgYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbShoaXN0b3J5SXRl
bS5nZXQoKSk7CiB9CiAKIC8qKgpAQCAtMTY5LDcgKzE2OSw3IEBAIEdMaXN0KiB3ZWJraXRfd2Vi
X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3Rfd2l0aF9saW1pdChXZWJLaXRXZWJC
YWNrRm9yCiAgICAgYmFja0ZvcndhcmRMaXN0LT5mb3J3YXJkTGlzdFdpdGhMaW1pdChsaW1pdCwg
aXRlbXMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsr
KSB7Ci0gICAgICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShpdGVtc1tpXS5nZXQoKSk7Cisg
ICAgICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IHdlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShpdGVtc1tpXSk7CiAgICAgICAgIGZvcndh
cmRJdGVtcyA9IGdfbGlzdF9wcmVwZW5kKGZvcndhcmRJdGVtcywgZ19vYmplY3RfcmVmKHdlYkhp
c3RvcnlJdGVtKSk7CiAgICAgfQogCkBAIC0xOTksNyArMTk5LDcgQEAgR0xpc3QqIHdlYmtpdF93
ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdF93aXRoX2xpbWl0KFdlYktpdFdlYkJh
Y2tGb3J3YXIKICAgICBiYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0V2l0aExpbWl0KGxpbWl0LCBp
dGVtcyk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyBpKysp
IHsKLSAgICAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKGl0ZW1zW2ldLmdldCgpKTsKKyAg
ICAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKGl0ZW1zW2ldKTsKICAgICAgICAgYmFja0l0
ZW1zID0gZ19saXN0X3ByZXBlbmQoYmFja0l0ZW1zLCBnX29iamVjdF9yZWYod2ViSGlzdG9yeUl0
ZW0pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhp
c3RvcnlpdGVtLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNw
cAppbmRleCBmMTczNGQzLi41Y2IxOGUzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
aGlzdG9yeWl0ZW0uY3BwCkBAIC0zMCwxMSArMzAsMTUgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgV2ViQ29yZTo6SGlzdG9y
eUl0ZW07Cit1c2luZyBXZWJDb3JlOjpLVVJMOwordXNpbmcgV2ViQ29yZTo6U3RyaW5nOwordXNp
bmcgV1RGOjpSZWZQdHI7CiAKIGV4dGVybiAiQyIgewogCiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZSB7Ci0gICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGhp
c3RvcnlJdGVtOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW07CiAKICAgICBn
Y2hhciogdGl0bGU7CiAgICAgZ2NoYXIqIGFsdGVybmF0ZVRpdGxlOwpAQCAtNjYsMjMgKzcwLDI2
IEBAIHN0YXRpYyBHSGFzaFRhYmxlKiB3ZWJraXRfaGlzdG9yeV9pdGVtcygpCiAgICAgcmV0dXJu
IGhpc3RvcnlJdGVtczsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQo
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtLCBXZWJDb3JlOjpIaXN0b3J5SXRl
bSogaGlzdG9yeUl0ZW0pCitzdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZChXZWJL
aXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlz
dG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllf
SVRFTSh3ZWJIaXN0b3J5SXRlbSkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaGlzdG9yeUl0ZW0g
IT0gTlVMTCk7CiAKICAgICBHSGFzaFRhYmxlKiB0YWJsZSA9IHdlYmtpdF9oaXN0b3J5X2l0ZW1z
KCk7CiAKLSAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KHRhYmxlLCBoaXN0b3J5SXRlbSwgZ19vYmpl
Y3RfcmVmKHdlYkhpc3RvcnlJdGVtKSk7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydCh0YWJsZSwg
aGlzdG9yeUl0ZW0tPnRhcmdldEl0ZW0oKSwgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJdGVtKSk7
CiB9CiAKLXN0YXRpYyB2b2lkIHdlYmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBoaXN0b3J5SXRlbSkKK3N0YXRpYyB2b2lkIHdlYmtpdF9oaXN0b3J5X2l0ZW1f
cmVtb3ZlKFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCiB7CisgICAgZ19yZXR1cm5f
aWZfZmFpbChoaXN0b3J5SXRlbSAhPSBOVUxMKTsKKwogICAgIEdIYXNoVGFibGUqIHRhYmxlID0g
d2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKLSAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlz
dG9yeUl0ZW0gPSAoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qKSBnX2hhc2hfdGFibGVfbG9va3VwKHRh
YmxlLCBoaXN0b3J5SXRlbSk7CisgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJ
dGVtID0gKFdlYktpdFdlYkhpc3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwg
aGlzdG9yeUl0ZW0tPnRhcmdldEl0ZW0oKSk7CiAKICAgICBnX3JldHVybl9pZl9mYWlsKHdlYkhp
c3RvcnlJdGVtICE9IE5VTEwpOwogCi0gICAgZ19oYXNoX3RhYmxlX3JlbW92ZSh0YWJsZSwgaGlz
dG9yeUl0ZW0pOworICAgIGdfaGFzaF90YWJsZV9yZW1vdmUodGFibGUsIGhpc3RvcnlJdGVtLT50
YXJnZXRJdGVtKCkpOwogICAgIGdfb2JqZWN0X3VucmVmKHdlYkhpc3RvcnlJdGVtKTsKIH0KIApA
QCAtMjUzLDEzICsyNjAsMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
Z2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKIH0KIAogLyogSGVs
cGVyIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBXZWJIaXN0b3J5SXRlbSBpbnN0YW5jZSB3aGVu
IG5lZWRlZCAqLwotV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVt
X25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKK1dlYktpdFdl
Ykhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0o
UmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0
ZW0gIT0gTlVMTCwgTlVMTCk7CisKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9y
eUl0ZW0gPSBraXQoaXRlbSk7CiAKICAgICBpZiAoIXdlYkhpc3RvcnlJdGVtKSB7CiAgICAgICAg
IHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oZ19vYmplY3RfbmV3KFdF
QktJVF9UWVBFX1dFQl9ISVNUT1JZX0lURU0sIE5VTEwpKTsKLSAgICAgICAgd2Via2l0X2hpc3Rv
cnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIGNvcmUod2ViSGlzdG9yeUl0ZW0pKTsKKyAgICAg
ICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnBy
aXY7CisgICAgICAgIHByaXYtPmhpc3RvcnlJdGVtID0gaXRlbTsKKyAgICAgICAgd2Via2l0X2hp
c3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKICAgICB9
CiAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CkBAIC0yNzgsOCArMjg5LDggQEAgV2ViS2l0
V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ldyh2b2lkKQogICAgIFdl
YktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9J
VEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBOVUxMKSk7CiAg
ICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnBy
aXY7CiAKLSAgICBwcml2LT5oaXN0b3J5SXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVh
dGUoKTsKLSAgICB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZCh3ZWJIaXN0b3J5SXRlbSwgcHJpdi0+
aGlzdG9yeUl0ZW0uZ2V0KCkpOworICAgIHByaXYtPmhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06
OmNyZWF0ZSgpOworICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBw
cml2LT5oaXN0b3J5SXRlbSk7CiAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CiB9CkBAIC0y
OTEsMTggKzMwMiwyNyBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5
X2l0ZW1fbmV3KHZvaWQpCiAgKgogICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0
ZW0gd2l0aCB0aGUgZ2l2ZW4gVVJJIGFuZCB0aXRsZQogICoKKyAqIElmIEB1cmkgaXMgTlVMTCwg
dGhlIGhpc3RvcnkgaXRlbSdzIHVyaSB3aWxsIGJlIGFuIGVtcHR5IHN0cmluZworICogSWYgQHRp
dGxlIGlzIE5VTEwsIHRoZSBoaXN0b3J5IGl0ZW0ncyB0aXRsZSB3aWxsIGJlIGFuIGVtcHR5IHN0
cmluZworICoKICAqIFJldHVybiB2YWx1ZTogdGhlIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0K
ICAqLwogV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193
aXRoX2RhdGEoY29uc3QgZ2NoYXIqIHVyaSwgY29uc3QgZ2NoYXIqIHRpdGxlKQogewotICAgIFdl
YkNvcmU6OktVUkwgaGlzdG9yeVVyaSh1cmkpOwotICAgIFdlYkNvcmU6OlN0cmluZyBoaXN0b3J5
VGl0bGUodGl0bGUpOworICAgIGlmICh1cmkgPT0gTlVMTCkKKyAgICAgICAgdXJpID0gIiI7CisK
KyAgICBpZiAodGl0bGUgPT0gTlVMTCkKKyAgICAgICAgdGl0bGUgPSAiIjsKKworICAgIEtVUkwg
aGlzdG9yeVVyaSh1cmkpOworICAgIFN0cmluZyBoaXN0b3J5VGl0bGUodGl0bGUpOwogCiAgICAg
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZ
X0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZX0lURU0sIE5VTEwpKTsK
ICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0b3J5SXRlbS0+
cHJpdjsKIAotICAgIHByaXYtPmhpc3RvcnlJdGVtID0gV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNy
ZWF0ZShoaXN0b3J5VXJpLCBoaXN0b3J5VGl0bGUsIDApOwotICAgIHdlYmtpdF9oaXN0b3J5X2l0
ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbS5nZXQoKSk7CisgICAgcHJp
di0+aGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKGhpc3RvcnlVcmksIGhpc3RvcnlU
aXRsZSwgMCk7CisgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHBy
aXYtPmhpc3RvcnlJdGVtKTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbTsKIH0KQEAgLTMx
MSwxOSArMzMxLDIwIEBAIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2hpc3Rvcnlf
aXRlbV9uZXdfd2l0aF9kYXRhKGNvbnN0IGdjaGFyKiB1cmksIGNvCiAgKiB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfdGl0bGU6CiAgKiBAd2ViSGlzdG9yeUl0ZW06IGEgI1dlYktpdFdlYkhp
c3RvcnlJdGVtCiAgKgotICogUmV0dXJucyB0aGUgcGFnZSB0aXRsZSBvZiBAd2ViSGlzdG9yeUl0
ZW0KKyAqIFJldHVybnMgdGhlIHBhZ2UgdGl0bGUgb2YgQHdlYkhpc3RvcnlJdGVtIG9yIE5VTEwg
aWYgQHdlYkhpc3RvcnlJdGVtIGlzIE5VTEwKICAqLwogY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX2dldF90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0
ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBp
dGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVt
ID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVt
ICE9IE5VTEwsIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2
ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIHRpdGxlID0gaXRl
bS0+dGl0bGUoKTsKICAgICBnX2ZyZWUocHJpdi0+dGl0bGUpOworCisgICAgU3RyaW5nIHRpdGxl
ID0gaXRlbS0+dGl0bGUoKTsKICAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxlLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHByaXYtPnRpdGxlOwpAQCAtMzM1LDE5ICszNTYsMjAg
QEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF90aXRsZShXZWJLaXRX
ZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUkKICAqCiAgKiBSZXR1cm5zIHRoZSBhbHRlcm5hdGUg
dGl0bGUgb2YgQHdlYkhpc3RvcnlJdGVtCiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgYWx0ZXJu
YXRlIHRpdGxlIG9mIEB3ZWJIaXN0b3J5SXRlbQorICogUmV0dXJuIHZhbHVlOiB0aGUgYWx0ZXJu
YXRlIHRpdGxlIG9mIEB3ZWJIaXN0b3J5SXRlbSBvciBOVUxMIGlmIEB3ZWJIaXN0b3J5SXRlbSBp
cyBOVUxMCiAgKi8KIGNvbnN0IGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfYWx0
ZXJuYXRlX3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0
b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3Jl
KHdlYkhpc3RvcnlJdGVtKTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKHdl
Ykhpc3RvcnlJdGVtKTsKIAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwg
TlVMTCk7CiAKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0
b3J5SXRlbS0+cHJpdjsKLSAgICBXZWJDb3JlOjpTdHJpbmcgYWx0ZXJuYXRlVGl0bGUgPSBpdGVt
LT5hbHRlcm5hdGVUaXRsZSgpOwogICAgIGdfZnJlZShwcml2LT5hbHRlcm5hdGVUaXRsZSk7CisK
KyAgICBTdHJpbmcgYWx0ZXJuYXRlVGl0bGUgPSBpdGVtLT5hbHRlcm5hdGVUaXRsZSgpOwogICAg
IHByaXYtPmFsdGVybmF0ZVRpdGxlID0gZ19zdHJkdXAoYWx0ZXJuYXRlVGl0bGUudXRmOCgpLmRh
dGEoKSk7CiAKICAgICByZXR1cm4gcHJpdi0+YWx0ZXJuYXRlVGl0bGU7CkBAIC0zNTksMTQgKzM4
MSwyMiBAQCBjb25zdCBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2FsdGVybmF0
ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogdwogICogQHRpdGxlOiB0aGUgYWx0ZXJuYXRl
IHRpdGxlIGZvciBAdGhpcyBoaXN0b3J5IGl0ZW0KICAqCiAgKiBTZXRzIGFuIGFsdGVybmF0ZSB0
aXRsZSBmb3IgQHdlYkhpc3RvcnlJdGVtCisgKgorICogSWYgQHRpdGxlIGlzIE5VTEwsIHRoaXMg
ZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHRpdGxlIHRvIGFuIGVtcHR5IHN0cmluZwogICovCiB2b2lk
IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX3NldF9hbHRlcm5hdGVfdGl0bGUoV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtLCBjb25zdCBnY2hhciogdGl0bGUpCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkp
OwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVt
KTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsK
KworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaXRlbS0+c2V0QWx0ZXJu
YXRlVGl0bGUoV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOworICAgIGlmICh0aXRs
ZSA9IE5VTEwpCisgICAgICAgIHRpdGxlID0gIiI7CisKKyAgICBpdGVtLT5zZXRBbHRlcm5hdGVU
aXRsZShTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JK
RUNUKHdlYkhpc3RvcnlJdGVtKSwgImFsdGVybmF0ZS10aXRsZSIpOwogfQogCkBAIC0zNzYsMTkg
KzQwNiwyMCBAQCB2b2lkIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX3NldF9hbHRlcm5hdGVfdGl0
bGUoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcgogICoKICAqIFJldHVybnMgdGhlIFVS
SSBvZiBAdGhpcwogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIFVSSSBvZiBAd2ViSGlzdG9yeUl0
ZW0KKyAqIFJldHVybiB2YWx1ZTogdGhlIFVSSSBvZiBAd2ViSGlzdG9yeUl0ZW0gb3IgTlVMTCBp
ZiBAd2ViSGlzdG9yeUl0ZW0gaXMgTlVMTAogICovCiBjb25zdCBnY2hhciogd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fZ2V0X3VyaShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0p
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0o
d2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVt
ID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOworICAgIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAhPSBOVUxMLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6OlN0
cmluZyB1cmkgPSBpdGVtLT51cmxTdHJpbmcoKTsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVBy
aXZhdGUqIHByaXYgPSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKICAgICBnX2ZyZWUocHJpdi0+dXJp
KTsKKworICAgIFN0cmluZyB1cmkgPSBpdGVtLT51cmxTdHJpbmcoKTsKICAgICBwcml2LT51cmkg
PSBnX3N0cmR1cCh1cmkudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gcHJpdi0+dXJpOwpA
QCAtNDAwLDE5ICs0MzEsMjAgQEAgY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVt
X2dldF91cmkoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGUKICAqCiAgKiBSZXR1
cm5zIHRoZSBvcmlnaW5hbCBVUkkgb2YgQHdlYkhpc3RvcnlJdGVtLgogICoKLSAqIFJldHVybiB2
YWx1ZTogdGhlIG9yaWdpbmFsIFVSSSBvZiBAd2ViSGlzdG9yeUlUZW0KKyAqIFJldHVybiB2YWx1
ZTogdGhlIG9yaWdpbmFsIFVSSSBvZiBAd2ViSGlzdG9yeUl0ZW0gb3IgTlVMTCBpZiBAd2ViSGlz
dG9yeUl0ZW0gaXMgTlVMTAogICovCiBjb25zdCBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0
ZW1fZ2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0p
CiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0o
d2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVt
ID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOworICAgIFJl
ZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAhPSBOVUxMLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6OlN0
cmluZyBvcmlnaW5hbFVyaSA9IGl0ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7CiAgICAgV2ViS2l0
V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CiAgICAg
Z19mcmVlKHByaXYtPm9yaWdpbmFsVXJpKTsKKworICAgIFN0cmluZyBvcmlnaW5hbFVyaSA9IGl0
ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7CiAgICAgcHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1
cChvcmlnaW5hbFVyaS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRl
bS0+cHJpdi0+b3JpZ2luYWxVcmk7CkBAIC00MjQsMTMgKzQ1NiwxMyBAQCBjb25zdCBnY2hhciog
d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJIaXN0b3J5
SXRlbSogd2ViSAogICoKICAqIFJldHVybnMgdGhlIGxhc3QgdGltZSBAd2ViSGlzdG9yeUl0ZW0g
d2FzIHZpc2l0ZWQKICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSB0aW1lIGluIHNlY29uZHMgdGhp
cyBAd2ViSGlzdG9yeUl0ZW0gd2FzIGxhc3QgdmlzaXRlZAorICogUmV0dXJuIHZhbHVlOiB0aGUg
dGltZSBpbiBzZWNvbmRzIHRoaXMgQHdlYkhpc3RvcnlJdGVtIHdhcyBsYXN0IHZpc2l0ZWQgb3Ig
MCBpZiBAd2ViSGlzdG9yeUl0ZW0gaXMgTlVMTAogICovCiBnZG91YmxlIHdlYmtpdF93ZWJfaGlz
dG9yeV9pdGVtX2dldF9sYXN0X3Zpc2l0ZWRfdGltZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
SGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9I
SVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCAwKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJ
dGVtKiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkp
OworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwog
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAhPSBOVUxMLCAwKTsKIApAQCAtNDM5LDI0
ICs0NzEsMjQgQEAgZ2RvdWJsZSB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfbGFzdF92aXNp
dGVkX3RpbWUoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkgKIAogfSAvKiBlbmQgZXh0ZXJuICJD
IiAqLwogCi1XZWJDb3JlOjpIaXN0b3J5SXRlbSogV2ViS2l0Ojpjb3JlKFdlYktpdFdlYkhpc3Rv
cnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gV2ViS2l0Ojpjb3Jl
KFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92
YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5V
TEwpOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9y
eUl0ZW0tPnByaXY7Ci0gICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGhpc3Rv
cnlJdGVtID0gcHJpdi0+aGlzdG9yeUl0ZW07CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0
b3J5SXRlbSA9IHByaXYtPmhpc3RvcnlJdGVtOwogCi0gICAgcmV0dXJuIGhpc3RvcnlJdGVtID8g
aGlzdG9yeUl0ZW0uZ2V0KCkgOiAwOworICAgIHJldHVybiBoaXN0b3J5SXRlbSA/IGhpc3RvcnlJ
dGVtIDogMDsKIH0KIAotV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIFdlYktpdDo6a2l0KFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSkKK1dlYktpdFdlYkhpc3RvcnlJdGVtKiBXZWJLaXQ6
OmtpdChSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtKQogewogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKGhpc3RvcnlJdGVtICE9IE5VTEwsIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtOwogICAgIEdIYXNoVGFibGUqIHRhYmxlID0gd2Via2l0
X2hpc3RvcnlfaXRlbXMoKTsKIAotICAgIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3Rv
cnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0pOworICAgIHdl
Ykhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1
cCh0YWJsZSwgaGlzdG9yeUl0ZW0tPnRhcmdldEl0ZW0oKSk7CiAgICAgcmV0dXJuIHdlYkhpc3Rv
cnlJdGVtOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDZhN2VhMWYu
LmYxMmFmMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0xNTE4LDcgKzE1
MTgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2l0ZW0o
V2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKGl0ZW0pLCBGQUxTRSk7CiAKICAgICAvLyBGSVhN
RTogVGhpcyBhbHdheXMgcmV0dXJucyBUUlVFCi0gICAgY29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0o
Y29yZShpdGVtKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CisgICAgY29yZSh3
ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShpdGVtKS5nZXQoKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRC
YWNrRm9yd2FyZCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22254</attachid>
            <date>2008-07-12 01:27:03 -0700</date>
            <delta_ts>2008-07-25 19:30:08 -0700</delta_ts>
            <desc>updated documentation</desc>
            <filename>webkitgtk-historyitem-fixes.patch</filename>
            <type>text/plain</type>
            <size>18627</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggODQxNDMxMS4uZTcyNDI3MSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OCBAQAorMjAwOC0wNy0xMiAg
SmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSBm
aXhlcyBhbmQgaW1wcm92ZW1lbnRzLgorCisgICAgICAgIC0gQ2FycnkgdGhlIFJlZlB0ciBhcm91
bmQgcmF0aGVyIHRoYW4gdGhlIHJhdyBIaXN0b3J5SXRlbSBwb2ludGVyLgorICAgICAgICAgIFRo
aXMgYXZvaWRzIGltcGxpY2l0IGNvbnZlcnNpb25zIHdoaWNoIG1lc3NlcyB1cCByZWYgY291bnRp
bmcKKyAgICAgICAgLSBGb2xsb3cgdGhlIEd0ayB3YXkgb2YgZG9jdW1lbnRpbmcgdGhpbmdzOiBk
b2N1bWVudCB3aGVuIGEgdmFsdWUKKyAgICAgICAgICByZXR1cm5zIE5VTEwgYW5kIHdoZW4gYSBy
ZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZyZWVkIG9yIG5vdC4KKworICAgICAgICAqIHdlYmtpdC93
ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZTo6d2Via2l0
X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKToKKyAgICAgICAgKF9XZWJLaXRX
ZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOjp3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dv
X3RvX2l0ZW0pOgorICAgICAgICAoX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGU6Ondl
YmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdF93aXRoX2xpbWl0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOjp3ZWJraXRfd2ViX2Jh
Y2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xpc3Rfd2l0aF9saW1pdCk6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5
SXRlbVByaXZhdGU6OndlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKToKKworICAgICAgICAtIFVzZSB0
YXJnZXRJdGVtKCkgbWVtYmVyIG1ldGhvZCB0byBnZXQgdGhlIGhpc3RvcnkgaXRlbSBhbmQgdXNl
IHRoYXQgYXMKKyAgICAgICAgICB0aGUga2V5IGluc3RlYWQgb2YgdGhlIHBvaW50ZXIgcmV0dXJu
IGJ5IFJlZlB0ci5nZXQoKS4gVGhpcyBpcworICAgICAgICAgIGJlY2F1c2UgdGhlIGFkZHJlc3Mg
b2YgdGhlIHBvaW50ZWUgcmV0dXJuZWQgYnkgLmdldCgpIGNhbiBjaGFuZ2UKKyAgICAgICAgICBv
biBhc3NpZ25tZW50CisKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6Ondl
YmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRl
bVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbSk6CisK
KyAgICAgICAgLSBJbml0aWFsaXplIHRpdGxlIGFuZCBVUkkgYXMgYW4gZW1wdHkgc3RyaW5nIGlm
IHRoZXkgYXJlIHNldCBhcworICAgICAgICAgIE5VTEwKKyAgICAgICAgLSBGaXggcmVncmVzc2lv
biB3aGVyZSB3ZSBhcmUgbm90IHJlYWxseSBncmFiYmluZyBIaXN0b3J5SXRlbQorICAgICAgICAg
IG1ha2luZyBXZWJLaXRXZWJIaXN0b3J5SXRlbSBjYXJyeWluZyBhIG51bGwgSGlzdG9yeUl0ZW0K
KworICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6Ondl
YmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEpOgorICAgICAgICAoX1dlYktpdFdl
Ykhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKToK
KyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9y
eV9pdGVtX2dldF9hbHRlcm5hdGVfdGl0bGUpOgorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRsZSk6
CisgICAgICAgIChfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjp3ZWJraXRfd2ViX2hpc3Rv
cnlfaXRlbV9nZXRfdXJpKToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6
OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9vcmlnaW5hbF91cmkpOgorICAgICAgICAoX1dl
YktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2xh
c3RfdmlzaXRlZF90aW1lKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJL
aXQ6OmtpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCiAyMDA4LTA3
LTA4ICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IENocmlzdGlhbiBEeXdhbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApp
bmRleCBlZDgxYTFjLi41YzQ3YjBkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC01
MCw4ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdlYkNvcmU6OlBhZ2UqIGNvcmUo
V2ViS2l0V2ViVmlldyopOwogICAgIFdlYktpdFdlYlZpZXcqIGtpdChXZWJDb3JlOjpQYWdlKik7
CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZShXZWJLaXRXZWJIaXN0b3J5SXRlbSop
OwotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBraXQoV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsK
KyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gY29yZShXZWJLaXRXZWJIaXN0
b3J5SXRlbSopOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBraXQoV1RGOjpSZWZQdHI8V2Vi
Q29yZTo6SGlzdG9yeUl0ZW0+KTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogY29y
ZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBleHRl
cm4gIkMiIHsKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmlldyhXZWJLaXRX
ZWJWaWV3KiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAKICAgICBXZWJLaXRX
ZWJIaXN0b3J5SXRlbSoKLSAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3Jl
X2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKyAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRl
bV9uZXdfd2l0aF9jb3JlX2l0ZW0oV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KTsK
IAogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIHdlYmtpdHdlYmZyYW1lLmggb25jZSB0aGVp
ciBBUEkgaGFzIGJlZW4gZGlzY3Vzc2VkLgogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2ViYmFja2ZvcndhcmRsaXN0LmNwcAppbmRleCA2YmQ3N2M4Li4xMjI3Y2E3IDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuY3BwCisrKyBiL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAKQEAgLTExOCwxMyAr
MTE4LDEzIEBAIGdib29sZWFuIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfY29udGFpbnNf
aXRlbShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIHdlCiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldBUkRfTElTVCh3ZWJCYWNrRm9yd2FyZExpc3QpLCBG
QUxTRSk7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pLCBGQUxTRSk7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSog
aGlzdG9yeUl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKKyAgICBXVEY6OlJlZlB0cjxXZWJD
b3JlOjpIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKIAog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGhpc3RvcnlJdGVtICE9IE5VTEwsIEZBTFNFKTsKIAog
ICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJC
YWNrRm9yd2FyZExpc3QpOwogCi0gICAgcmV0dXJuIChiYWNrRm9yd2FyZExpc3QtPmVuYWJsZWQo
KSA/IGJhY2tGb3J3YXJkTGlzdC0+Y29udGFpbnNJdGVtKGhpc3RvcnlJdGVtKSA6IEZBTFNFKTsK
KyAgICByZXR1cm4gKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpID8gYmFja0ZvcndhcmRMaXN0
LT5jb250YWluc0l0ZW0oaGlzdG9yeUl0ZW0uZ2V0KCkpIDogRkFMU0UpOwogfQogCiAvKioKQEAg
LTEzOSwxMSArMTM5LDExIEBAIHZvaWQgd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nb190
b19pdGVtKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2ViQmFja0ZvCiAgICAgZ19yZXR1cm5f
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdlYkJhY2tGb3J3YXJkTGlz
dCkpOwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2Vi
SGlzdG9yeUl0ZW0pKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSA9
IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJ
dGVtPiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogICAgIFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdCogYmFja0ZvcndhcmRMaXN0ID0gY29yZSh3ZWJCYWNrRm9yd2FyZExpc3Qp
OwogCiAgICAgaWYgKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgpICYmIGhpc3RvcnlJdGVtKQot
ICAgICAgICBiYWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGhpc3RvcnlJdGVtKTsKKyAgICAgICAg
YmFja0ZvcndhcmRMaXN0LT5nb1RvSXRlbShoaXN0b3J5SXRlbS5nZXQoKSk7CiB9CiAKIC8qKgpA
QCAtMTY5LDcgKzE2OSw3IEBAIEdMaXN0KiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dl
dF9mb3J3YXJkX2xpc3Rfd2l0aF9saW1pdChXZWJLaXRXZWJCYWNrRm9yCiAgICAgYmFja0Zvcndh
cmRMaXN0LT5mb3J3YXJkTGlzdFdpdGhMaW1pdChsaW1pdCwgaXRlbXMpOwogCiAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIFdlYktpdFdl
Ykhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25l
d193aXRoX2NvcmVfaXRlbShpdGVtc1tpXS5nZXQoKSk7CisgICAgICAgIFdlYktpdFdlYkhpc3Rv
cnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRo
X2NvcmVfaXRlbShpdGVtc1tpXSk7CiAgICAgICAgIGZvcndhcmRJdGVtcyA9IGdfbGlzdF9wcmVw
ZW5kKGZvcndhcmRJdGVtcywgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJdGVtKSk7CiAgICAgfQog
CkBAIC0xOTksNyArMTk5LDcgQEAgR0xpc3QqIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3Rf
Z2V0X2JhY2tfbGlzdF93aXRoX2xpbWl0KFdlYktpdFdlYkJhY2tGb3J3YXIKICAgICBiYWNrRm9y
d2FyZExpc3QtPmJhY2tMaXN0V2l0aExpbWl0KGxpbWl0LCBpdGVtcyk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3
X3dpdGhfY29yZV9pdGVtKGl0ZW1zW2ldLmdldCgpKTsKKyAgICAgICAgV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhf
Y29yZV9pdGVtKGl0ZW1zW2ldKTsKICAgICAgICAgYmFja0l0ZW1zID0gZ19saXN0X3ByZXBlbmQo
YmFja0l0ZW1zLCBnX29iamVjdF9yZWYod2ViSGlzdG9yeUl0ZW0pKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcAppbmRleCAzMTBhZmI0Li4zOGEw
YzhiIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5j
cHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCkBAIC0z
MCwxMSArMzAsMTUgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwordXNpbmcgV2ViQ29yZTo6SGlzdG9yeUl0ZW07Cit1c2luZyBXZWJDb3Jl
OjpLVVJMOwordXNpbmcgV2ViQ29yZTo6U3RyaW5nOwordXNpbmcgV1RGOjpSZWZQdHI7CiAKIGV4
dGVybiAiQyIgewogCiBzdHJ1Y3QgX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSB7Ci0gICAg
V1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtOworICAgIFJlZlB0
cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW07CiAKICAgICBnY2hhciogdGl0bGU7CiAgICAgZ2No
YXIqIGFsdGVybmF0ZVRpdGxlOwpAQCAtNjYsMjMgKzcwLDI2IEBAIHN0YXRpYyBHSGFzaFRhYmxl
KiB3ZWJraXRfaGlzdG9yeV9pdGVtcygpCiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtczsKIH0KIAot
c3RhdGljIHZvaWQgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQoV2ViS2l0V2ViSGlzdG9yeUl0ZW0q
IHdlYkhpc3RvcnlJdGVtLCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCitzdGF0
aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZChXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Vi
SGlzdG9yeUl0ZW0sIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCk7CiAKICAgICBHSGFz
aFRhYmxlKiB0YWJsZSA9IHdlYmtpdF9oaXN0b3J5X2l0ZW1zKCk7CiAKLSAgICBnX2hhc2hfdGFi
bGVfaW5zZXJ0KHRhYmxlLCBoaXN0b3J5SXRlbSwgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJdGVt
KSk7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydCh0YWJsZSwgaGlzdG9yeUl0ZW0tPnRhcmdldEl0
ZW0oKSwgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJdGVtKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHdl
YmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRl
bSkKK3N0YXRpYyB2b2lkIHdlYmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKFJlZlB0cjxIaXN0b3J5
SXRlbT4gaGlzdG9yeUl0ZW0pCiB7CisgICAgZ19yZXR1cm5faWZfZmFpbChoaXN0b3J5SXRlbSAh
PSBOVUxMKTsKKwogICAgIEdIYXNoVGFibGUqIHRhYmxlID0gd2Via2l0X2hpc3RvcnlfaXRlbXMo
KTsKLSAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSAoV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qKSBnX2hhc2hfdGFibGVfbG9va3VwKHRhYmxlLCBoaXN0b3J5SXRlbSk7Cisg
ICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3Rv
cnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0tPnRhcmdldEl0
ZW0oKSk7CiAKICAgICBnX3JldHVybl9pZl9mYWlsKHdlYkhpc3RvcnlJdGVtICE9IE5VTEwpOwog
Ci0gICAgZ19oYXNoX3RhYmxlX3JlbW92ZSh0YWJsZSwgaGlzdG9yeUl0ZW0pOworICAgIGdfaGFz
aF90YWJsZV9yZW1vdmUodGFibGUsIGhpc3RvcnlJdGVtLT50YXJnZXRJdGVtKCkpOwogICAgIGdf
b2JqZWN0X3VucmVmKHdlYkhpc3RvcnlJdGVtKTsKIH0KIApAQCAtMjUzLDEzICsyNjAsMTcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKIH0KIAogLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNyZWF0
ZSBhIG5ldyBXZWJIaXN0b3J5SXRlbSBpbnN0YW5jZSB3aGVuIG5lZWRlZCAqLwotV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShX
ZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKK1dlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiBp
dGVtKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7CisK
ICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSBraXQoaXRlbSk7CiAK
ICAgICBpZiAoIXdlYkhpc3RvcnlJdGVtKSB7CiAgICAgICAgIHdlYkhpc3RvcnlJdGVtID0gV0VC
S0lUX1dFQl9ISVNUT1JZX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZ
X0lURU0sIE5VTEwpKTsKLSAgICAgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9y
eUl0ZW0sIGNvcmUod2ViSGlzdG9yeUl0ZW0pKTsKKyAgICAgICAgV2ViS2l0V2ViSGlzdG9yeUl0
ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CisgICAgICAgIHByaXYtPmhp
c3RvcnlJdGVtID0gaXRlbTsKKyAgICAgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlz
dG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKICAgICB9CiAKICAgICByZXR1cm4gd2ViSGlz
dG9yeUl0ZW07CkBAIC0yNzgsOCArMjg5LDggQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX25ldyh2b2lkKQogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3
ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBOVUxMKSk7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0
ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CiAKLSAgICBwcml2LT5oaXN0
b3J5SXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpjcmVhdGUoKTsKLSAgICB3ZWJraXRfaGlz
dG9yeV9pdGVtX2FkZCh3ZWJIaXN0b3J5SXRlbSwgcHJpdi0+aGlzdG9yeUl0ZW0uZ2V0KCkpOwor
ICAgIHByaXYtPmhpc3RvcnlJdGVtID0gSGlzdG9yeUl0ZW06OmNyZWF0ZSgpOworICAgIHdlYmtp
dF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbSk7CiAK
ICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CiB9CkBAIC0yOTEsMTggKzMwMiwyNyBAQCBXZWJL
aXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3KHZvaWQpCiAgKgog
ICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0gd2l0aCB0aGUgZ2l2ZW4gVVJJ
IGFuZCB0aXRsZQogICoKKyAqIElmIEB1cmkgaXMgJU5VTEwsIHRoZSBoaXN0b3J5IGl0ZW0ncyB1
cmkgaXMgc2V0IHRvIGFuIGVtcHR5IHN0cmluZworICogSWYgQHRpdGxlIGlzICVOVUxMLCB0aGUg
aGlzdG9yeSBpdGVtJ3MgdGl0bGUgaXMgc2V0IHRvIGFuIGVtcHR5IHN0cmluZworICoKICAqIFJl
dHVybiB2YWx1ZTogdGhlIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KICAqLwogV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEoY29uc3Qg
Z2NoYXIqIHVyaSwgY29uc3QgZ2NoYXIqIHRpdGxlKQogewotICAgIFdlYkNvcmU6OktVUkwgaGlz
dG9yeVVyaSh1cmkpOwotICAgIFdlYkNvcmU6OlN0cmluZyBoaXN0b3J5VGl0bGUodGl0bGUpOwor
ICAgIGlmICh1cmkgPT0gTlVMTCkKKyAgICAgICAgdXJpID0gIiI7CisKKyAgICBpZiAodGl0bGUg
PT0gTlVMTCkKKyAgICAgICAgdGl0bGUgPSAiIjsKKworICAgIEtVUkwgaGlzdG9yeVVyaSh1cmkp
OworICAgIFN0cmluZyBoaXN0b3J5VGl0bGUodGl0bGUpOwogCiAgICAgV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZX0lURU0sIE5VTEwpKTsKICAgICBXZWJLaXRXZWJI
aXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKIAotICAgIHBy
aXYtPmhpc3RvcnlJdGVtID0gV2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNyZWF0ZShoaXN0b3J5VXJp
LCBoaXN0b3J5VGl0bGUsIDApOwotICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3Rv
cnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbS5nZXQoKSk7CisgICAgcHJpdi0+aGlzdG9yeUl0ZW0g
PSBIaXN0b3J5SXRlbTo6Y3JlYXRlKGhpc3RvcnlVcmksIGhpc3RvcnlUaXRsZSwgMCk7CisgICAg
d2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVt
KTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbTsKIH0KQEAgLTMxMiwxOCArMzMyLDIzIEBA
IFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9k
YXRhKGNvbnN0IGdjaGFyKiB1cmksIGNvCiAgKiBAd2ViSGlzdG9yeUl0ZW06IGEgI1dlYktpdFdl
Ykhpc3RvcnlJdGVtCiAgKgogICogUmV0dXJucyB0aGUgcGFnZSB0aXRsZSBvZiBAd2ViSGlzdG9y
eUl0ZW0KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSB0aXRsZSBvZiB0aGUgQHdlYkhpc3RvcnlJ
dGVtIG9yICVOVUxMIGlmIGhpc3RvcnkgaXRlbQorICogICAgICAgICAgICAgICBpcyAlTlVMTC4g
VGhlIHN0cmluZyBpcyBvd25lZCBieSBAd2ViSGlzdG9yeUl0ZW0gYW5kIG11c3Qgbm90CisgKiAg
ICAgICAgICAgICAgIGJlIG1vZGlmaWVkIG9yIGZyZWVkLgogICovCiBHX0NPTlNUX1JFVFVSTiBn
Y2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKKyAgICBSZWZQdHI8
SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKIAogICAgIGdfcmV0dXJu
X3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7CiAKICAgICBXZWJLaXRXZWJIaXN0b3J5
SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKLSAgICBXZWJDb3JlOjpT
dHJpbmcgdGl0bGUgPSBpdGVtLT50aXRsZSgpOwogICAgIGdfZnJlZShwcml2LT50aXRsZSk7CisK
KyAgICBTdHJpbmcgdGl0bGUgPSBpdGVtLT50aXRsZSgpOwogICAgIHByaXYtPnRpdGxlID0gZ19z
dHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gcHJpdi0+dGl0bGU7CkBA
IC0zMzUsMTkgKzM2MCwyMiBAQCBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fZ2V0X3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZQogICoKICAqIFJldHVy
bnMgdGhlIGFsdGVybmF0ZSB0aXRsZSBvZiBAd2ViSGlzdG9yeUl0ZW0KICAqCi0gKiBSZXR1cm4g
dmFsdWU6IHRoZSBhbHRlcm5hdGUgdGl0bGUgb2YgQHdlYkhpc3RvcnlJdGVtCisgKiBSZXR1cm4g
dmFsdWU6IHRoZSBhbHRlcm5hdGUgdGl0bGUgb2YgQHdlYkhpc3RvcnlJdGVtIG9yICVOVUxMIGlm
IGhpc3RvcnkKKyAqICAgICAgICAgICAgICAgaXRlbSBpcyAlTlVMTC4gVGhlIHN0cmluZyBpcyBv
d25lZCBieSBAd2ViSGlzdG9yeUl0ZW0gYW5kCisgKiAgICAgICAgICAgICAgIG11c3Qgbm90IGJl
IG1vZGlmaWVkIG9yIGZyZWVkLgogICovCiBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dl
Yl9oaXN0b3J5X2l0ZW1fZ2V0X2FsdGVybmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSog
d2ViSGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhp
c3RvcnlJdGVtKiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CisgICAgUmVmUHRyPEhpc3Rv
cnlJdGVtPiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChpdGVtICE9IE5VTEwsIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Q
cml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7Ci0gICAgV2ViQ29yZTo6U3RyaW5n
IGFsdGVybmF0ZVRpdGxlID0gaXRlbS0+YWx0ZXJuYXRlVGl0bGUoKTsKICAgICBnX2ZyZWUocHJp
di0+YWx0ZXJuYXRlVGl0bGUpOworCisgICAgU3RyaW5nIGFsdGVybmF0ZVRpdGxlID0gaXRlbS0+
YWx0ZXJuYXRlVGl0bGUoKTsKICAgICBwcml2LT5hbHRlcm5hdGVUaXRsZSA9IGdfc3RyZHVwKGFs
dGVybmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHByaXYtPmFsdGVybmF0
ZVRpdGxlOwpAQCAtMzU4LDE1ICszODYsMjIgQEAgR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX2dldF9hbHRlcm5hdGVfdGl0bGUoV2ViS2l0V2ViSGlzdG8KICAq
IEB3ZWJIaXN0b3J5SXRlbTogYSAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KICAqIEB0aXRsZTogdGhl
IGFsdGVybmF0ZSB0aXRsZSBmb3IgQHRoaXMgaGlzdG9yeSBpdGVtCiAgKgotICogU2V0cyBhbiBh
bHRlcm5hdGUgdGl0bGUgZm9yIEB3ZWJIaXN0b3J5SXRlbQorICogU2V0cyBhbiBhbHRlcm5hdGUg
dGl0bGUgZm9yIEB3ZWJIaXN0b3J5SXRlbS4gSWYgQHRpdGxlIGlzIE5VTEwsIHRoaXMKKyAqIGZ1
bmN0aW9uIHdpbGwgc2V0IHRoZSB0aXRsZSB0byBhbiBlbXB0eSBzdHJpbmcuCiAgKi8KIHZvaWQg
d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0
b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIGNvbnN0IGdjaGFyKiB0aXRsZSkKIHsKICAgICBnX3Jl
dHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7
CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0p
OworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwor
CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm47CiAKLSAgICBpdGVtLT5zZXRBbHRlcm5h
dGVUaXRsZShXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KHRpdGxlKSk7CisgICAgaWYgKHRpdGxl
ID0gTlVMTCkKKyAgICAgICAgdGl0bGUgPSAiIjsKKworICAgIGl0ZW0tPnNldEFsdGVybmF0ZVRp
dGxlKFN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpF
Q1Qod2ViSGlzdG9yeUl0ZW0pLCAiYWx0ZXJuYXRlLXRpdGxlIik7CiB9CiAKQEAgLTM3NCwyMSAr
NDA5LDI0IEBAIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRs
ZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yCiAgKiB3ZWJraXRfd2ViX2hpc3Rvcnlf
aXRlbV9nZXRfdXJpOgogICogQHdlYkhpc3RvcnlJdGVtOiBhICNXZWJLaXRXZWJIaXN0b3J5SXRl
bQogICoKLSAqIFJldHVybnMgdGhlIFVSSSBvZiBAdGhpcworICogUmV0dXJucyB0aGUgVVJJIG9m
IEB3ZWJIaXN0b3J5SXRlbQogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIFVSSSBvZiBAd2ViSGlz
dG9yeUl0ZW0KKyAqIFJldHVybiB2YWx1ZTogdGhlIFVSSSBvZiBAd2ViSGlzdG9yeUl0ZW0gb3Ig
JU5VTEwgaWYgaGlzdG9yeSBpdGVtIGlzICVOVUxMLgorICogICAgICAgICAgICAgICBUaGUgc3Ry
aW5nIGlzIG93bmVkIGJ5IEB3ZWJIaXN0b3J5SXRlbSBhbmQgbXVzdCBub3QgYmUKKyAqICAgICAg
ICAgICAgICAgbW9kaWZpZWQgb3IgZnJlZWQuCiAgKi8KIEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3
ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJI
aXN0b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJ
U1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVt
KSk7CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RP
UllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRl
bSAhPSBOVUxMLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6OlN0cmluZyB1cmkgPSBpdGVtLT51cmxT
dHJpbmcoKTsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0
b3J5SXRlbS0+cHJpdjsKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKKworICAgIFN0cmluZyB1cmkg
PSBpdGVtLT51cmxTdHJpbmcoKTsKICAgICBwcml2LT51cmkgPSBnX3N0cmR1cCh1cmkudXRmOCgp
LmRhdGEoKSk7CiAKICAgICByZXR1cm4gcHJpdi0+dXJpOwpAQCAtNDAwLDE5ICs0MzgsMjIgQEAg
R19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF91cmkoV2Vi
S2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkgKICAqCiAgKiBSZXR1cm5zIHRoZSBvcmlnaW5hbCBVUkkg
b2YgQHdlYkhpc3RvcnlJdGVtLgogICoKLSAqIFJldHVybiB2YWx1ZTogdGhlIG9yaWdpbmFsIFVS
SSBvZiBAd2ViSGlzdG9yeUlUZW0KKyAqIFJldHVybiB2YWx1ZTogdGhlIG9yaWdpbmFsIFVSSSBv
ZiBAd2ViSGlzdG9yeUlUZW0gb3IgJU5VTEwgaWYgaGlzdG9yeSBpdGVtCisgKiAgICAgICAgICAg
ICAgIGlzICVOVUxMLiBUaGUgc3RyaW5nIGlzIG93bmVkIGJ5IEB3ZWJIaXN0b3J5SXRlbSBhbmQg
bXVzdCBub3QKKyAqICAgICAgICAgICAgICAgYmUgbW9kaWZpZWQgb3IgZnJlZWQuCiAgKi8KIEdf
Q09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfb3JpZ2luYWxf
dXJpKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSks
IE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9X
RUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CisgICAgUmVmUHRyPEhpc3RvcnlJdGVt
PiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwog
CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAhPSBOVUxMLCBOVUxMKTsKIAotICAgIFdl
YkNvcmU6OlN0cmluZyBvcmlnaW5hbFVyaSA9IGl0ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7CiAg
ICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnBy
aXY7CiAgICAgZ19mcmVlKHByaXYtPm9yaWdpbmFsVXJpKTsKKworICAgIFN0cmluZyBvcmlnaW5h
bFVyaSA9IGl0ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7CiAgICAgcHJpdi0+b3JpZ2luYWxVcmkg
PSBnX3N0cmR1cChvcmlnaW5hbFVyaS51dGY4KCkuZGF0YSgpKTsKIAogICAgIHJldHVybiB3ZWJI
aXN0b3J5SXRlbS0+cHJpdi0+b3JpZ2luYWxVcmk7CkBAIC00MjQsMTMgKzQ2NSwxMyBAQCBHX0NP
TlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X29yaWdpbmFsX3Vy
aShXZWJLaXRXZWJIaXN0b3J5SQogICoKICAqIFJldHVybnMgdGhlIGxhc3QgdGltZSBAd2ViSGlz
dG9yeUl0ZW0gd2FzIHZpc2l0ZWQKICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSB0aW1lIGluIHNl
Y29uZHMgdGhpcyBAd2ViSGlzdG9yeUl0ZW0gd2FzIGxhc3QgdmlzaXRlZAorICogUmV0dXJuIHZh
bHVlOiB0aGUgdGltZSBpbiBzZWNvbmRzIHRoaXMgQHdlYkhpc3RvcnlJdGVtIHdhcyBsYXN0IHZp
c2l0ZWQgb3IgMCBpZiBAd2ViSGlzdG9yeUl0ZW0gaXMgTlVMTAogICovCiBnZG91YmxlIHdlYmtp
dF93ZWJfaGlzdG9yeV9pdGVtX2dldF9sYXN0X3Zpc2l0ZWRfdGltZShXZWJLaXRXZWJIaXN0b3J5
SXRlbSogd2ViSGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lU
X0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCAwKTsKIAotICAgIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0
b3J5SXRlbSkpOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNvcmUod2ViSGlzdG9y
eUl0ZW0pOwogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAhPSBOVUxMLCAwKTsKIApA
QCAtNDM5LDI0ICs0ODAsMjQgQEAgZ2RvdWJsZSB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRf
bGFzdF92aXNpdGVkX3RpbWUoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkgKIAogfSAvKiBlbmQg
ZXh0ZXJuICJDIiAqLwogCi1XZWJDb3JlOjpIaXN0b3J5SXRlbSogV2ViS2l0Ojpjb3JlKFdlYktp
dFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKK1JlZlB0cjxIaXN0b3J5SXRlbT4gV2Vi
S2l0Ojpjb3JlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5
SXRlbSksIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0g
d2ViSGlzdG9yeUl0ZW0tPnByaXY7Ci0gICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IGhpc3RvcnlJdGVtID0gcHJpdi0+aGlzdG9yeUl0ZW07CisgICAgUmVmUHRyPEhpc3RvcnlJ
dGVtPiBoaXN0b3J5SXRlbSA9IHByaXYtPmhpc3RvcnlJdGVtOwogCi0gICAgcmV0dXJuIGhpc3Rv
cnlJdGVtID8gaGlzdG9yeUl0ZW0uZ2V0KCkgOiAwOworICAgIHJldHVybiBoaXN0b3J5SXRlbSA/
IGhpc3RvcnlJdGVtIDogMDsKIH0KIAotV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIFdlYktpdDo6a2l0
KFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSkKK1dlYktpdFdlYkhpc3RvcnlJdGVt
KiBXZWJLaXQ6OmtpdChSZWZQdHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtKQogewogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKGhpc3RvcnlJdGVtICE9IE5VTEwsIE5VTEwpOwogCiAgICAgV2Vi
S2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtOwogICAgIEdIYXNoVGFibGUqIHRhYmxl
ID0gd2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKIAotICAgIHdlYkhpc3RvcnlJdGVtID0gKFdlYktp
dFdlYkhpc3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0p
OworICAgIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3RvcnlJdGVtKikgZ19oYXNoX3Rh
YmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0tPnRhcmdldEl0ZW0oKSk7CiAgICAgcmV0dXJu
IHdlYkhpc3RvcnlJdGVtOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4
IDZhN2VhMWYuLmYxMmFmMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0x
NTE4LDcgKzE1MTgsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3
YXJkX2l0ZW0oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0VwogICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKGl0ZW0pLCBGQUxTRSk7CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBhbHdheXMgcmV0dXJucyBUUlVFCi0gICAgY29yZSh3ZWJWaWV3KS0+
Z29Ub0l0ZW0oY29yZShpdGVtKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7Cisg
ICAgY29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShpdGVtKS5nZXQoKSwgRnJhbWVMb2FkVHlw
ZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22492</attachid>
            <date>2008-07-25 19:30:08 -0700</date>
            <delta_ts>2008-07-27 03:13:00 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>webkitgtk-historyitem-fixes.patch</filename>
            <type>text/plain</type>
            <size>18822</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggZjA1NzQ5Zi4uMWE4MDg0ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAwOC0wNy0yNSAg
SmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBXZWJL
aXRXZWJIaXN0b3J5SXRlbSBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgorCisgICAgICAgIC0gQ2Fy
cnkgdGhlIFJlZlB0ciBhcm91bmQgcmF0aGVyIHRoYW4gdGhlIHJhdyBIaXN0b3J5SXRlbSBwb2lu
dGVyLgorICAgICAgICAgIFRoaXMgYXZvaWRzIGltcGxpY2l0IGNvbnZlcnNpb25zIHdoaWNoIG1l
c3NlcyB1cCByZWYgY291bnRpbmcKKyAgICAgICAgLSBGb2xsb3cgdGhlIEd0ayB3YXkgb2YgZG9j
dW1lbnRpbmcgdGhpbmdzOiBkb2N1bWVudCB3aGVuIGEgdmFsdWUKKyAgICAgICAgICByZXR1cm5z
IE5VTEwgYW5kIHdoZW4gYSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZyZWVkIG9yIG5vdC4KKyAg
ICAgICAgLSBJbml0aWFsaXplIHRpdGxlIGFuZCBVUkkgYXMgYW4gZW1wdHkgc3RyaW5nIGlmIHRo
ZXkgYXJlIHNldCBhcworICAgICAgICAgIE5VTEwKKyAgICAgICAgLSBGaXggcmVncmVzc2lvbiB3
aGVyZSB3ZSBhcmUgbm90IHJlYWxseSBncmFiYmluZyBIaXN0b3J5SXRlbQorICAgICAgICAgIG1h
a2luZyBXZWJLaXRXZWJIaXN0b3J5SXRlbSBjYXJyeWluZyBhIG51bGwgSGlzdG9yeUl0ZW0KKwor
ICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtp
dHdlYmJhY2tmb3J3YXJkbGlzdC5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViQmFja0ZvcndhcmRM
aXN0UHJpdmF0ZTo6d2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKToK
KyAgICAgICAgKF9XZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOjp3ZWJraXRfd2ViX2Jh
Y2tfZm9yd2FyZF9saXN0X2dvX3RvX2l0ZW0pOgorICAgICAgICAoX1dlYktpdFdlYkJhY2tGb3J3
YXJkTGlzdFByaXZhdGU6OndlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRf
bGlzdF93aXRoX2xpbWl0KToKKyAgICAgICAgKF9XZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RQcml2
YXRlOjp3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xpc3Rfd2l0aF9saW1p
dCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcDoKKyAgICAgICAg
KF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKToK
KworICAgICAgICAtIFVzZSB0YXJnZXRJdGVtKCkgbWVtYmVyIG1ldGhvZCB0byBnZXQgdGhlIGhp
c3RvcnkgaXRlbSBhbmQgdXNlIHRoYXQgYXMKKyAgICAgICAgICB0aGUga2V5IGluc3RlYWQgb2Yg
dGhlIHBvaW50ZXIgcmV0dXJuIGJ5IFJlZlB0ci5nZXQoKS4gVGhpcyBpcworICAgICAgICAgIGJl
Y2F1c2UgdGhlIGFkZHJlc3Mgb2YgdGhlIHBvaW50ZWUgcmV0dXJuZWQgYnkgLmdldCgpIGNhbiBj
aGFuZ2UKKyAgICAgICAgICBvbiBhc3NpZ25tZW50CisKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0
b3J5SXRlbVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2Rpc3Bvc2UpOgorICAgICAg
ICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
Z2V0X2l0ZW0pOgorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fbmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVBy
aXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEpOgorICAgICAgICAo
X1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0
X3RpdGxlKToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX2dldF9hbHRlcm5hdGVfdGl0bGUpOgorICAgICAgICAoX1dlYktpdFdl
Ykhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0
ZV90aXRsZSk6CisgICAgICAgIChfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjp3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRl
bVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9vcmlnaW5hbF91cmkpOgorICAg
ICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0
ZW1fZ2V0X2xhc3RfdmlzaXRlZF90aW1lKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAg
ICAgIChXZWJLaXQ6OmtpdCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgor
CiAyMDA4LTA3LTE3ICBDaHJpc3RpYW4gRHl3YW4gIDxjaHJpc3RpYW5AdHdvdG9hc3RzLmRlPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAppbmRleCBlZDgxYTFjLi5mYjQyNDNmIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCkBAIC01MCw4ICs1MCw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIFdlYkNvcmU6OlBh
Z2UqIGNvcmUoV2ViS2l0V2ViVmlldyopOwogICAgIFdlYktpdFdlYlZpZXcqIGtpdChXZWJDb3Jl
OjpQYWdlKik7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZShXZWJLaXRXZWJIaXN0
b3J5SXRlbSopOwotICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBraXQoV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qKTsKKyAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gY29yZShXZWJL
aXRXZWJIaXN0b3J5SXRlbSopOworICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiBraXQoV1RGOjpS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+KTsKIAogICAgIFdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdCogY29yZShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqKTsKIH0KQEAgLTEwOCw3ICsxMDgs
NyBAQCBleHRlcm4gIkMiIHsKICAgICB3ZWJraXRfd2ViX2ZyYW1lX2luaXRfd2l0aF93ZWJfdmll
dyhXZWJLaXRXZWJWaWV3KiwgV2ViQ29yZTo6SFRNTEZyYW1lT3duZXJFbGVtZW50Kik7CiAKICAg
ICBXZWJLaXRXZWJIaXN0b3J5SXRlbSoKLSAgICB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdf
d2l0aF9jb3JlX2l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKyAgICB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfaXRlbShXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4pOwog
CiAgICAgLy8gRklYTUU6IE1vdmUgdGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWly
IEFQSSBoYXMgYmVlbiBkaXNjdXNzZWQuCiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJiYWNrZm9yd2FyZGxpc3QuY3BwCmluZGV4IDZiZDc3YzguLjQ2YWQ3YzggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAKKysrIGIvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcApAQCAtMTE4LDEzICsx
MTgsMTMgQEAgZ2Jvb2xlYW4gd2Via2l0X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19p
dGVtKFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogd2UKICAgICBnX3JldHVybl92YWxfaWZfZmFp
bChXRUJLSVRfSVNfV0VCX0JBQ0tfRk9SV0FSRF9MSVNUKHdlYkJhY2tGb3J3YXJkTGlzdCksIEZB
TFNFKTsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRF
TSh3ZWJIaXN0b3J5SXRlbSksIEZBTFNFKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBo
aXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworICAgIFdURjo6UmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCiAg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCwgRkFMU0UpOwogCiAg
ICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJh
Y2tGb3J3YXJkTGlzdCk7CiAKLSAgICByZXR1cm4gKGJhY2tGb3J3YXJkTGlzdC0+ZW5hYmxlZCgp
ID8gYmFja0ZvcndhcmRMaXN0LT5jb250YWluc0l0ZW0oaGlzdG9yeUl0ZW0pIDogRkFMU0UpOwor
ICAgIHJldHVybiAoYmFja0ZvcndhcmRMaXN0LT5lbmFibGVkKCkgPyBiYWNrRm9yd2FyZExpc3Qt
PmNvbnRhaW5zSXRlbShoaXN0b3J5SXRlbS5nZXQoKSkgOiBGQUxTRSk7CiB9CiAKIC8qKgpAQCAt
MTM5LDExICsxMzksMTEgQEAgdm9pZCB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dvX3Rv
X2l0ZW0oV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3ZWJCYWNrRm8KICAgICBnX3JldHVybl9p
Zl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJU1Qod2ViQmFja0ZvcndhcmRMaXN0
KSk7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJI
aXN0b3J5SXRlbSkpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0g
Y29yZSh3ZWJIaXN0b3J5SXRlbSk7CisgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0
ZW0+IGhpc3RvcnlJdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAgICAgV2ViQ29yZTo6QmFj
a0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QgPSBjb3JlKHdlYkJhY2tGb3J3YXJkTGlzdCk7
CiAKICAgICBpZiAoYmFja0ZvcndhcmRMaXN0LT5lbmFibGVkKCkgJiYgaGlzdG9yeUl0ZW0pCi0g
ICAgICAgIGJhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oaGlzdG9yeUl0ZW0pOworICAgICAgICBi
YWNrRm9yd2FyZExpc3QtPmdvVG9JdGVtKGhpc3RvcnlJdGVtLmdldCgpKTsKIH0KIAogLyoqCkBA
IC0xNjksNyArMTY5LDcgQEAgR0xpc3QqIHdlYmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0
X2ZvcndhcmRfbGlzdF93aXRoX2xpbWl0KFdlYktpdFdlYkJhY2tGb3IKICAgICBiYWNrRm9yd2Fy
ZExpc3QtPmZvcndhcmRMaXN0V2l0aExpbWl0KGxpbWl0LCBpdGVtcyk7CiAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3
X3dpdGhfY29yZV9pdGVtKGl0ZW1zW2ldLmdldCgpKTsKKyAgICAgICAgV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2l0ZW0o
aXRlbXNbaV0pOwogICAgICAgICBmb3J3YXJkSXRlbXMgPSBnX2xpc3RfcHJlcGVuZChmb3J3YXJk
SXRlbXMsIGdfb2JqZWN0X3JlZih3ZWJIaXN0b3J5SXRlbSkpOwogICAgIH0KIApAQCAtMTk5LDcg
KzE5OSw3IEBAIEdMaXN0KiB3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xp
c3Rfd2l0aF9saW1pdChXZWJLaXRXZWJCYWNrRm9yd2FyCiAgICAgYmFja0ZvcndhcmRMaXN0LT5i
YWNrTGlzdFdpdGhMaW1pdChsaW1pdCwgaXRlbXMpOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGl0ZW1zLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIFdlYktpdFdlYkhpc3RvcnlJdGVt
KiB3ZWJIaXN0b3J5SXRlbSA9IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVf
aXRlbShpdGVtc1tpXS5nZXQoKSk7CisgICAgICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJI
aXN0b3J5SXRlbSA9IHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9pdGVtKGl0ZW1zW2ldKTsK
ICAgICAgICAgYmFja0l0ZW1zID0gZ19saXN0X3ByZXBlbmQoYmFja0l0ZW1zLCBnX29iamVjdF9y
ZWYod2ViSGlzdG9yeUl0ZW0pKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
Ymhpc3RvcnlpdGVtLmNwcAppbmRleCAzMTBhZmI0Li5iOTAyZWRmIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCkBAIC0zMCwxMSArMzAsMTUgQEAKICNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcg
V2ViQ29yZTo6SGlzdG9yeUl0ZW07Cit1c2luZyBXZWJDb3JlOjpLVVJMOwordXNpbmcgV2ViQ29y
ZTo6U3RyaW5nOwordXNpbmcgV1RGOjpSZWZQdHI7CiAKIGV4dGVybiAiQyIgewogCiBzdHJ1Y3Qg
X1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSB7Ci0gICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6
SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9y
eUl0ZW07CiAKICAgICBnY2hhciogdGl0bGU7CiAgICAgZ2NoYXIqIGFsdGVybmF0ZVRpdGxlOwpA
QCAtNjYsMzQgKzcwLDI3IEBAIHN0YXRpYyBHSGFzaFRhYmxlKiB3ZWJraXRfaGlzdG9yeV9pdGVt
cygpCiAgICAgcmV0dXJuIGhpc3RvcnlJdGVtczsKIH0KIAotc3RhdGljIHZvaWQgd2Via2l0X2hp
c3RvcnlfaXRlbV9hZGQoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtLCBXZWJD
b3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCitzdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9y
eV9pdGVtX2FkZChXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIFJlZlB0cjxI
aXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoaGlzdG9yeUl0ZW0gIT0gTlVMTCk7CiAKICAgICBHSGFzaFRhYmxlKiB0YWJsZSA9IHdlYmtp
dF9oaXN0b3J5X2l0ZW1zKCk7CiAKLSAgICBnX2hhc2hfdGFibGVfaW5zZXJ0KHRhYmxlLCBoaXN0
b3J5SXRlbSwgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJdGVtKSk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHdlYmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5
SXRlbSkKLXsKLSAgICBHSGFzaFRhYmxlKiB0YWJsZSA9IHdlYmtpdF9oaXN0b3J5X2l0ZW1zKCk7
Ci0gICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhp
c3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0pOwotCi0g
ICAgZ19yZXR1cm5faWZfZmFpbCh3ZWJIaXN0b3J5SXRlbSAhPSBOVUxMKTsKLQotICAgIGdfaGFz
aF90YWJsZV9yZW1vdmUodGFibGUsIGhpc3RvcnlJdGVtKTsKLSAgICBnX29iamVjdF91bnJlZih3
ZWJIaXN0b3J5SXRlbSk7CisgICAgZ19oYXNoX3RhYmxlX2luc2VydCh0YWJsZSwgaGlzdG9yeUl0
ZW0tPnRhcmdldEl0ZW0oKSwgd2ViSGlzdG9yeUl0ZW0pOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX2hpc3RvcnlfaXRlbV9kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJL
aXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRF
TShvYmplY3QpOwogCi0gICAgd2Via2l0X2hpc3RvcnlfaXRlbV9yZW1vdmUoY29yZSh3ZWJIaXN0
b3J5SXRlbSkpOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBjb3JlKHdl
Ykhpc3RvcnlJdGVtKTsKIAotICAgIC8qIGRlc3Ryb3kgdGFibGUgaWYgZW1wdHkgKi8KICAgICBH
SGFzaFRhYmxlKiB0YWJsZSA9IHdlYmtpdF9oaXN0b3J5X2l0ZW1zKCk7CisKKyAgICBnX2hhc2hf
dGFibGVfcmVtb3ZlKHRhYmxlLCBoaXN0b3J5SXRlbS0+dGFyZ2V0SXRlbSgpKTsKKworICAgIC8q
IGRlc3Ryb3kgdGFibGUgaWYgZW1wdHkgKi8KICAgICBpZiAoIWdfaGFzaF90YWJsZV9zaXplKHRh
YmxlKSkKICAgICAgICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kodGFibGUpOwogCkBAIC0yNTIsMTQg
KzI0OSwxOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIH0KIH0KIAotLyogSGVscGVy
IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBXZWJIaXN0b3J5SXRlbSBpbnN0YW5jZSB3aGVuIG5l
ZWRlZCAqLwotV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25l
d193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKKy8qIEhlbHBlciBm
dW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgV2ViSGlzdG9yeUl0ZW0gaW5zdGFuY2UgaWYgbmVlZGVk
ICovCitXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2l0
ZW0oUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtKQogeworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KGl0ZW0gIT0gTlVMTCwgTlVMTCk7CisKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlz
dG9yeUl0ZW0gPSBraXQoaXRlbSk7CiAKICAgICBpZiAoIXdlYkhpc3RvcnlJdGVtKSB7CiAgICAg
ICAgIHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oZ19vYmplY3RfbmV3
KFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZX0lURU0sIE5VTEwpKTsKLSAgICAgICAgd2Via2l0X2hp
c3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIGNvcmUod2ViSGlzdG9yeUl0ZW0pKTsKKyAg
ICAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0t
PnByaXY7CisgICAgICAgIHByaXYtPmhpc3RvcnlJdGVtID0gaXRlbTsKKyAgICAgICAgd2Via2l0
X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKICAg
ICB9CiAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CkBAIC0yNzgsOCArMjc5LDggQEAgV2Vi
S2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ldyh2b2lkKQogICAg
IFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IFdFQktJVF9XRUJfSElTVE9S
WV9JVEVNKGdfb2JqZWN0X25ldyhXRUJLSVRfVFlQRV9XRUJfSElTVE9SWV9JVEVNLCBOVUxMKSk7
CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0t
PnByaXY7CiAKLSAgICBwcml2LT5oaXN0b3J5SXRlbSA9IFdlYkNvcmU6Okhpc3RvcnlJdGVtOjpj
cmVhdGUoKTsKLSAgICB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZCh3ZWJIaXN0b3J5SXRlbSwgcHJp
di0+aGlzdG9yeUl0ZW0uZ2V0KCkpOworICAgIHByaXYtPmhpc3RvcnlJdGVtID0gSGlzdG9yeUl0
ZW06OmNyZWF0ZSgpOworICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVt
LCBwcml2LT5oaXN0b3J5SXRlbSk7CiAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CiB9CkBA
IC0yOTEsMTggKzI5MiwyNyBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fbmV3KHZvaWQpCiAgKgogICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViSGlzdG9y
eUl0ZW0gd2l0aCB0aGUgZ2l2ZW4gVVJJIGFuZCB0aXRsZQogICoKKyAqIElmIEB1cmkgaXMgJU5V
TEwsIHRoZSBoaXN0b3J5IGl0ZW0ncyB1cmkgaXMgc2V0IHRvIGFuIGVtcHR5IHN0cmluZworICog
SWYgQHRpdGxlIGlzICVOVUxMLCB0aGUgaGlzdG9yeSBpdGVtJ3MgdGl0bGUgaXMgc2V0IHRvIGFu
IGVtcHR5IHN0cmluZworICoKICAqIFJldHVybiB2YWx1ZTogdGhlIG5ldyAjV2ViS2l0V2ViSGlz
dG9yeUl0ZW0KICAqLwogV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9p
dGVtX25ld193aXRoX2RhdGEoY29uc3QgZ2NoYXIqIHVyaSwgY29uc3QgZ2NoYXIqIHRpdGxlKQog
ewotICAgIFdlYkNvcmU6OktVUkwgaGlzdG9yeVVyaSh1cmkpOwotICAgIFdlYkNvcmU6OlN0cmlu
ZyBoaXN0b3J5VGl0bGUodGl0bGUpOworICAgIGlmICh1cmkgPT0gTlVMTCkKKyAgICAgICAgdXJp
ID0gIiI7CisKKyAgICBpZiAodGl0bGUgPT0gTlVMTCkKKyAgICAgICAgdGl0bGUgPSAiIjsKKwor
ICAgIEtVUkwgaGlzdG9yeVVyaSh1cmkpOworICAgIFN0cmluZyBoaXN0b3J5VGl0bGUodGl0bGUp
OwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dF
Ql9ISVNUT1JZX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZX0lURU0s
IE5VTEwpKTsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0
b3J5SXRlbS0+cHJpdjsKIAotICAgIHByaXYtPmhpc3RvcnlJdGVtID0gV2ViQ29yZTo6SGlzdG9y
eUl0ZW06OmNyZWF0ZShoaXN0b3J5VXJpLCBoaXN0b3J5VGl0bGUsIDApOwotICAgIHdlYmtpdF9o
aXN0b3J5X2l0ZW1fYWRkKHdlYkhpc3RvcnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbS5nZXQoKSk7
CisgICAgcHJpdi0+aGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKGhpc3RvcnlVcmks
IGhpc3RvcnlUaXRsZSwgMCk7CisgICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9y
eUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbTsK
IH0KQEAgLTMxMiwxOCArMzIyLDIzIEBAIFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJraXRfd2Vi
X2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9kYXRhKGNvbnN0IGdjaGFyKiB1cmksIGNvCiAgKiBAd2Vi
SGlzdG9yeUl0ZW06IGEgI1dlYktpdFdlYkhpc3RvcnlJdGVtCiAgKgogICogUmV0dXJucyB0aGUg
cGFnZSB0aXRsZSBvZiBAd2ViSGlzdG9yeUl0ZW0KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSB0
aXRsZSBvZiB0aGUgQHdlYkhpc3RvcnlJdGVtIG9yICVOVUxMIGlmIGhpc3RvcnkgaXRlbQorICog
ICAgICAgICAgICAgICBpcyAlTlVMTC4gVGhlIHN0cmluZyBpcyBvd25lZCBieSBAd2ViSGlzdG9y
eUl0ZW0gYW5kIG11c3Qgbm90CisgKiAgICAgICAgICAgICAgIGJlIG1vZGlmaWVkIG9yIGZyZWVk
LgogICovCiBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0
X3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRl
bSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKHdlYkhp
c3RvcnlJdGVtKTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKHdlYkhpc3Rv
cnlJdGVtKTsKIAogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVMTCk7
CiAKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0b3J5SXRl
bS0+cHJpdjsKLSAgICBXZWJDb3JlOjpTdHJpbmcgdGl0bGUgPSBpdGVtLT50aXRsZSgpOwogICAg
IGdfZnJlZShwcml2LT50aXRsZSk7CisKKyAgICBTdHJpbmcgdGl0bGUgPSBpdGVtLT50aXRsZSgp
OwogICAgIHByaXYtPnRpdGxlID0gZ19zdHJkdXAodGl0bGUudXRmOCgpLmRhdGEoKSk7CiAKICAg
ICByZXR1cm4gcHJpdi0+dGl0bGU7CkBAIC0zMzUsMTkgKzM1MCwyMiBAQCBHX0NPTlNUX1JFVFVS
TiBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKFdlYktpdFdlYkhpc3Rv
cnlJdGVtKiB3ZQogICoKICAqIFJldHVybnMgdGhlIGFsdGVybmF0ZSB0aXRsZSBvZiBAd2ViSGlz
dG9yeUl0ZW0KICAqCi0gKiBSZXR1cm4gdmFsdWU6IHRoZSBhbHRlcm5hdGUgdGl0bGUgb2YgQHdl
Ykhpc3RvcnlJdGVtCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBhbHRlcm5hdGUgdGl0bGUgb2YgQHdl
Ykhpc3RvcnlJdGVtIG9yICVOVUxMIGlmIGhpc3RvcnkKKyAqICAgICAgICAgICAgICAgaXRlbSBp
cyAlTlVMTC4gVGhlIHN0cmluZyBpcyBvd25lZCBieSBAd2ViSGlzdG9yeUl0ZW0gYW5kCisgKiAg
ICAgICAgICAgICAgIG11c3Qgbm90IGJlIG1vZGlmaWVkIG9yIGZyZWVkLgogICovCiBHX0NPTlNU
X1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2FsdGVybmF0ZV90aXRs
ZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBO
VUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5
SXRlbSk7CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRl
bSk7CiAKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChpdGVtICE9IE5VTEwsIE5VTEwpOwogCiAg
ICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnBy
aXY7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIGFsdGVybmF0ZVRpdGxlID0gaXRlbS0+YWx0ZXJuYXRl
VGl0bGUoKTsKICAgICBnX2ZyZWUocHJpdi0+YWx0ZXJuYXRlVGl0bGUpOworCisgICAgU3RyaW5n
IGFsdGVybmF0ZVRpdGxlID0gaXRlbS0+YWx0ZXJuYXRlVGl0bGUoKTsKICAgICBwcml2LT5hbHRl
cm5hdGVUaXRsZSA9IGdfc3RyZHVwKGFsdGVybmF0ZVRpdGxlLnV0ZjgoKS5kYXRhKCkpOwogCiAg
ICAgcmV0dXJuIHByaXYtPmFsdGVybmF0ZVRpdGxlOwpAQCAtMzU4LDE1ICszNzYsMjIgQEAgR19D
T05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9hbHRlcm5hdGVf
dGl0bGUoV2ViS2l0V2ViSGlzdG8KICAqIEB3ZWJIaXN0b3J5SXRlbTogYSAjV2ViS2l0V2ViSGlz
dG9yeUl0ZW0KICAqIEB0aXRsZTogdGhlIGFsdGVybmF0ZSB0aXRsZSBmb3IgQHRoaXMgaGlzdG9y
eSBpdGVtCiAgKgotICogU2V0cyBhbiBhbHRlcm5hdGUgdGl0bGUgZm9yIEB3ZWJIaXN0b3J5SXRl
bQorICogU2V0cyBhbiBhbHRlcm5hdGUgdGl0bGUgZm9yIEB3ZWJIaXN0b3J5SXRlbS4gSWYgQHRp
dGxlIGlzIE5VTEwsIHRoaXMKKyAqIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSB0aXRsZSB0byBhbiBl
bXB0eSBzdHJpbmcuCiAgKi8KIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVy
bmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0sIGNvbnN0IGdj
aGFyKiB0aXRsZSkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9S
WV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CiAKLSAgICBXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRl
bSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9
IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworCisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAodGl0bGUgPSBOVUxMKQorICAgICAgICB0aXRsZSA9ICIiOwogCi0gICAgaXRl
bS0+c2V0QWx0ZXJuYXRlVGl0bGUoV2ViQ29yZTo6U3RyaW5nOjpmcm9tVVRGOCh0aXRsZSkpOwor
ICAgIGl0ZW0tPnNldEFsdGVybmF0ZVRpdGxlKFN0cmluZzo6ZnJvbVVURjgodGl0bGUpKTsKICAg
ICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViSGlzdG9yeUl0ZW0pLCAiYWx0ZXJuYXRlLXRp
dGxlIik7CiB9CiAKQEAgLTM3NCwyMSArMzk5LDI0IEBAIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5
X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9y
CiAgKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpOgogICogQHdlYkhpc3RvcnlJdGVt
OiBhICNXZWJLaXRXZWJIaXN0b3J5SXRlbQogICoKLSAqIFJldHVybnMgdGhlIFVSSSBvZiBAdGhp
cworICogUmV0dXJucyB0aGUgVVJJIG9mIEB3ZWJIaXN0b3J5SXRlbQogICoKLSAqIFJldHVybiB2
YWx1ZTogdGhlIFVSSSBvZiBAd2ViSGlzdG9yeUl0ZW0KKyAqIFJldHVybiB2YWx1ZTogdGhlIFVS
SSBvZiBAd2ViSGlzdG9yeUl0ZW0gb3IgJU5VTEwgaWYgaGlzdG9yeSBpdGVtIGlzICVOVUxMLgor
ICogICAgICAgICAgICAgICBUaGUgc3RyaW5nIGlzIG93bmVkIGJ5IEB3ZWJIaXN0b3J5SXRlbSBh
bmQgbXVzdCBub3QgYmUKKyAqICAgICAgICAgICAgICAgbW9kaWZpZWQgb3IgZnJlZWQuCiAgKi8K
IEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfdXJpKFdl
YktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwp
OwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElT
VE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVt
ID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwogCiAgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAhPSBOVUxMLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6
OlN0cmluZyB1cmkgPSBpdGVtLT51cmxTdHJpbmcoKTsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRl
bVByaXZhdGUqIHByaXYgPSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKICAgICBnX2ZyZWUocHJpdi0+
dXJpKTsKKworICAgIFN0cmluZyB1cmkgPSBpdGVtLT51cmxTdHJpbmcoKTsKICAgICBwcml2LT51
cmkgPSBnX3N0cmR1cCh1cmkudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gcHJpdi0+dXJp
OwpAQCAtNDAwLDE5ICs0MjgsMjIgQEAgR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX2dldF91cmkoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkgKICAqCiAgKiBS
ZXR1cm5zIHRoZSBvcmlnaW5hbCBVUkkgb2YgQHdlYkhpc3RvcnlJdGVtLgogICoKLSAqIFJldHVy
biB2YWx1ZTogdGhlIG9yaWdpbmFsIFVSSSBvZiBAd2ViSGlzdG9yeUlUZW0KKyAqIFJldHVybiB2
YWx1ZTogdGhlIG9yaWdpbmFsIFVSSSBvZiBAd2ViSGlzdG9yeUl0ZW0gb3IgJU5VTEwgaWYgaGlz
dG9yeSBpdGVtCisgKiAgICAgICAgICAgICAgIGlzICVOVUxMLiBUaGUgc3RyaW5nIGlzIG93bmVk
IGJ5IEB3ZWJIaXN0b3J5SXRlbSBhbmQgbXVzdCBub3QKKyAqICAgICAgICAgICAgICAgYmUgbW9k
aWZpZWQgb3IgZnJlZWQuCiAgKi8KIEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfb3JpZ2luYWxfdXJpKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0
b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RP
UllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7
CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllf
SVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAh
PSBOVUxMLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6OlN0cmluZyBvcmlnaW5hbFVyaSA9IGl0ZW0t
Pm9yaWdpbmFsVVJMU3RyaW5nKCk7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBw
cml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7CiAgICAgZ19mcmVlKHByaXYtPm9yaWdpbmFsVXJp
KTsKKworICAgIFN0cmluZyBvcmlnaW5hbFVyaSA9IGl0ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7
CiAgICAgcHJpdi0+b3JpZ2luYWxVcmkgPSBnX3N0cmR1cChvcmlnaW5hbFVyaS51dGY4KCkuZGF0
YSgpKTsKIAogICAgIHJldHVybiB3ZWJIaXN0b3J5SXRlbS0+cHJpdi0+b3JpZ2luYWxVcmk7CkBA
IC00MjQsMTMgKzQ1NSwxMyBAQCBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fZ2V0X29yaWdpbmFsX3VyaShXZWJLaXRXZWJIaXN0b3J5SQogICoKICAqIFJldHVy
bnMgdGhlIGxhc3QgdGltZSBAd2ViSGlzdG9yeUl0ZW0gd2FzIHZpc2l0ZWQKICAqCi0gKiBSZXR1
cm4gdmFsdWU6IHRoZSB0aW1lIGluIHNlY29uZHMgdGhpcyBAd2ViSGlzdG9yeUl0ZW0gd2FzIGxh
c3QgdmlzaXRlZAorICogUmV0dXJuIHZhbHVlOiB0aGUgdGltZSBpbiBzZWNvbmRzIHRoaXMgQHdl
Ykhpc3RvcnlJdGVtIHdhcyBsYXN0IHZpc2l0ZWQgb3IgMCBpZiBAd2ViSGlzdG9yeUl0ZW0gaXMg
TlVMTAogICovCiBnZG91YmxlIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9sYXN0X3Zpc2l0
ZWRfdGltZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0
ZW0pLCAwKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZShXRUJLSVRf
V0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOworICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOwogCiAgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoaXRlbSAhPSBOVUxMLCAwKTsKIApAQCAtNDM5LDI0ICs0NzAsMjQgQEAgZ2RvdWJsZSB3ZWJr
aXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfbGFzdF92aXNpdGVkX3RpbWUoV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIHdlYkgKIAogfSAvKiBlbmQgZXh0ZXJuICJDIiAqLwogCi1XZWJDb3JlOjpIaXN0b3J5
SXRlbSogV2ViS2l0Ojpjb3JlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkK
K1JlZlB0cjxIaXN0b3J5SXRlbT4gV2ViS2l0Ojpjb3JlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3
ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VC
X0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViSGlz
dG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7Ci0gICAgV1RGOjpS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gcHJpdi0+aGlzdG9yeUl0
ZW07CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSA9IHByaXYtPmhpc3RvcnlJ
dGVtOwogCi0gICAgcmV0dXJuIGhpc3RvcnlJdGVtID8gaGlzdG9yeUl0ZW0uZ2V0KCkgOiAwOwor
ICAgIHJldHVybiBoaXN0b3J5SXRlbSA/IGhpc3RvcnlJdGVtIDogMDsKIH0KIAotV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qIFdlYktpdDo6a2l0KFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRl
bSkKK1dlYktpdFdlYkhpc3RvcnlJdGVtKiBXZWJLaXQ6OmtpdChSZWZQdHI8SGlzdG9yeUl0ZW0+
IGhpc3RvcnlJdGVtKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGhpc3RvcnlJdGVtICE9
IE5VTEwsIE5VTEwpOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVt
OwogICAgIEdIYXNoVGFibGUqIHRhYmxlID0gd2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKIAotICAg
IHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xv
b2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0pOworICAgIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdl
Ykhpc3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0tPnRh
cmdldEl0ZW0oKSk7CiAgICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtOwogfQogCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGI5ZWM2MTcuLmEyMGRjYjUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0xNTIxLDcgKzE1MjEsNyBAQCBnYm9vbGVhbiB3ZWJraXRf
d2ViX3ZpZXdfZ29fdG9fYmFja19mb3J3YXJkX2l0ZW0oV2ViS2l0V2ViVmlldyogd2ViVmlldywg
V2ViS2l0VwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9J
VEVNKGl0ZW0pLCBGQUxTRSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBhbHdheXMgcmV0dXJucyBU
UlVFCi0gICAgY29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShpdGVtKSwgRnJhbWVMb2FkVHlw
ZUluZGV4ZWRCYWNrRm9yd2FyZCk7CisgICAgY29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShp
dGVtKS5nZXQoKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiAgICAgcmV0dXJu
IFRSVUU7CiB9CiAK
</data>
<flag name="review"
          id="9921"
          type_id="1"
          status="-"
          setter="christian"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22504</attachid>
            <date>2008-07-27 03:13:00 -0700</date>
            <delta_ts>2008-08-27 16:05:48 -0700</delta_ts>
            <desc>updated patch based on christian and sven&apos;s comments</desc>
            <filename>webkitgtk-historyitem-fixes.patch</filename>
            <type>text/plain</type>
            <size>20010</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggODA4MGZmNi4uYjNmYzIzNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAwOC0wNy0yNyAg
SmFuIE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9hdHRhY2htZW50LmNnaT9pZD0yMjQ5MgorICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSBm
aXhlcyBhbmQgaW1wcm92ZW1lbnRzLgorCisgICAgICAgIC0gQ2FycnkgdGhlIFJlZlB0ciBhcm91
bmQgcmF0aGVyIHRoYW4gdGhlIHJhdyBIaXN0b3J5SXRlbSBwb2ludGVyLgorICAgICAgICAgIFRo
aXMgYXZvaWRzIGltcGxpY2l0IGNvbnZlcnNpb25zIHdoaWNoIG1lc3NlcyB1cCByZWYgY291bnRp
bmcKKyAgICAgICAgLSBGb2xsb3cgdGhlIEd0ayB3YXkgb2YgZG9jdW1lbnRpbmcgdGhpbmdzOiBk
b2N1bWVudCB3aGVuIGEgdmFsdWUKKyAgICAgICAgICByZXR1cm5zIE5VTEwgYW5kIHdoZW4gYSBy
ZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZyZWVkIG9yIG5vdC4KKyAgICAgICAgLSBJbml0aWFsaXpl
IHRpdGxlIGFuZCBVUkkgYXMgYW4gZW1wdHkgc3RyaW5nIGlmIHRoZXkgYXJlIHNldCBhcworICAg
ICAgICAgIE5VTEwKKyAgICAgICAgLSBGaXggcmVncmVzc2lvbiB3aGVyZSB3ZSBhcmUgbm90IHJl
YWxseSBncmFiYmluZyBIaXN0b3J5SXRlbQorICAgICAgICAgIG1ha2luZyBXZWJLaXRXZWJIaXN0
b3J5SXRlbSBjYXJyeWluZyBhIG51bGwgSGlzdG9yeUl0ZW0KKworICAgICAgICAqIHdlYmtpdC93
ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlz
dC5jcHA6CisgICAgICAgIChfV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZTo6d2Via2l0
X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9jb250YWluc19pdGVtKToKKyAgICAgICAgKF9XZWJLaXRX
ZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOjp3ZWJraXRfd2ViX2JhY2tfZm9yd2FyZF9saXN0X2dv
X3RvX2l0ZW0pOgorICAgICAgICAoX1dlYktpdFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGU6Ondl
YmtpdF93ZWJfYmFja19mb3J3YXJkX2xpc3RfZ2V0X2ZvcndhcmRfbGlzdF93aXRoX2xpbWl0KToK
KyAgICAgICAgKF9XZWJLaXRXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlOjp3ZWJraXRfd2ViX2Jh
Y2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xpc3Rfd2l0aF9saW1pdCk6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYmhpc3RvcnlpdGVtLmNwcDoKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5
SXRlbVByaXZhdGU6OndlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKToKKworICAgICAgICAtIFVzZSB0
YXJnZXRJdGVtKCkgbWVtYmVyIG1ldGhvZCB0byBnZXQgdGhlIGhpc3RvcnkgaXRlbSBhbmQgdXNl
IHRoYXQgYXMKKyAgICAgICAgICB0aGUga2V5IGluc3RlYWQgb2YgdGhlIHBvaW50ZXIgcmV0dXJu
IGJ5IFJlZlB0ci5nZXQoKS4gVGhpcyBpcworICAgICAgICAgIGJlY2F1c2UgdGhlIGFkZHJlc3Mg
b2YgdGhlIHBvaW50ZWUgcmV0dXJuZWQgYnkgLmdldCgpIGNhbiBjaGFuZ2UKKyAgICAgICAgICBv
biBhc3NpZ25tZW50CisKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6Ondl
YmtpdF93ZWJfaGlzdG9yeV9pdGVtX2Rpc3Bvc2UpOgorICAgICAgICAoX1dlYktpdFdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2l0ZW0pOgorICAgICAg
ICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
bmV3KToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF93ZWJf
aGlzdG9yeV9pdGVtX25ld193aXRoX2RhdGEpOgorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKToKKyAgICAgICAg
KF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dl
dF9hbHRlcm5hdGVfdGl0bGUpOgorICAgICAgICAoX1dlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0
ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fc2V0X2FsdGVybmF0ZV90aXRsZSk6CisgICAgICAg
IChfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlOjp3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9n
ZXRfdXJpKToKKyAgICAgICAgKF9XZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGU6OndlYmtpdF93
ZWJfaGlzdG9yeV9pdGVtX2dldF9vcmlnaW5hbF91cmkpOgorICAgICAgICAoX1dlYktpdFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZTo6d2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2xhc3RfdmlzaXRl
ZF90aW1lKToKKyAgICAgICAgKFdlYktpdDo6Y29yZSk6CisgICAgICAgIChXZWJLaXQ6OmtpdCk6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorCiAyMDA4LTA3LTI2ICBNYXJr
IFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4LiAgQ2hhbmdlcyB0
byBhY2NvbW1vZGF0ZSBuZXdseSBuYW1lZC9zaWduYXR1cmVkIGxvYWRpbmcgbWV0aG9kcyBpbiBX
ZWJDb3JlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCmluZGV4IGVkODFhMWMuLmZiNDI0M2Yg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKQEAgLTUwLDggKzUwLDggQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAgICAgV2ViQ29yZTo6UGFnZSogY29yZShXZWJLaXRXZWJWaWV3Kik7CiAgICAg
V2ViS2l0V2ViVmlldyoga2l0KFdlYkNvcmU6OlBhZ2UqKTsKIAotICAgIFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKiBjb3JlKFdlYktpdFdlYkhpc3RvcnlJdGVtKik7Ci0gICAgV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIGtpdChXZWJDb3JlOjpIaXN0b3J5SXRlbSopOworICAgIFdURjo6UmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPiBjb3JlKFdlYktpdFdlYkhpc3RvcnlJdGVtKik7CisgICAgV2ViS2l0
V2ViSGlzdG9yeUl0ZW0qIGtpdChXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4pOwog
CiAgICAgV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKFdlYktpdFdlYkJhY2tGb3J3YXJk
TGlzdCopOwogfQpAQCAtMTA4LDcgKzEwOCw3IEBAIGV4dGVybiAiQyIgewogICAgIHdlYmtpdF93
ZWJfZnJhbWVfaW5pdF93aXRoX3dlYl92aWV3KFdlYktpdFdlYlZpZXcqLCBXZWJDb3JlOjpIVE1M
RnJhbWVPd25lckVsZW1lbnQqKTsKIAogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtKgotICAgIHdl
YmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3J5
SXRlbSopOworICAgIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9pdGVtKFdURjo6UmVmUHRy
PFdlYkNvcmU6Okhpc3RvcnlJdGVtPik7CiAKICAgICAvLyBGSVhNRTogTW92ZSB0aGVzZSB0byB3
ZWJraXR3ZWJmcmFtZS5oIG9uY2UgdGhlaXIgQVBJIGhhcyBiZWVuIGRpc2N1c3NlZC4KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFja2ZvcndhcmRsaXN0LmNwcCBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5jcHAKaW5kZXggNmJk
NzdjOC4uNDZhZDdjOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViYmFj
a2ZvcndhcmRsaXN0LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJiYWNrZm9y
d2FyZGxpc3QuY3BwCkBAIC0xMTgsMTMgKzExOCwxMyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX2Jh
Y2tfZm9yd2FyZF9saXN0X2NvbnRhaW5zX2l0ZW0oV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiB3
ZQogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfQkFDS19GT1JXQVJEX0xJ
U1Qod2ViQmFja0ZvcndhcmRMaXN0KSwgRkFMU0UpOwogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSwgRkFMU0UpOwogCi0g
ICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGhpc3RvcnlJdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRl
bSk7CisgICAgV1RGOjpSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0g
Y29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChoaXN0b3J5
SXRlbSAhPSBOVUxMLCBGQUxTRSk7CiAKICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJh
Y2tGb3J3YXJkTGlzdCA9IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKIAotICAgIHJldHVybiAo
YmFja0ZvcndhcmRMaXN0LT5lbmFibGVkKCkgPyBiYWNrRm9yd2FyZExpc3QtPmNvbnRhaW5zSXRl
bShoaXN0b3J5SXRlbSkgOiBGQUxTRSk7CisgICAgcmV0dXJuIChiYWNrRm9yd2FyZExpc3QtPmVu
YWJsZWQoKSA/IGJhY2tGb3J3YXJkTGlzdC0+Y29udGFpbnNJdGVtKGhpc3RvcnlJdGVtLmdldCgp
KSA6IEZBTFNFKTsKIH0KIAogLyoqCkBAIC0xMzksMTEgKzEzOSwxMSBAQCB2b2lkIHdlYmtpdF93
ZWJfYmFja19mb3J3YXJkX2xpc3RfZ29fdG9faXRlbShXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3Qq
IHdlYkJhY2tGbwogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9CQUNLX0ZPUldB
UkRfTElTVCh3ZWJCYWNrRm9yd2FyZExpc3QpKTsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CiAKLSAgICBXZWJDb3JlOjpI
aXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0gPSBjb3JlKHdlYkhpc3RvcnlJdGVtKTsKKyAgICBXVEY6
OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW0gPSBjb3JlKHdlYkhpc3Rv
cnlJdGVtKTsKICAgICBXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdCA9
IGNvcmUod2ViQmFja0ZvcndhcmRMaXN0KTsKIAogICAgIGlmIChiYWNrRm9yd2FyZExpc3QtPmVu
YWJsZWQoKSAmJiBoaXN0b3J5SXRlbSkKLSAgICAgICAgYmFja0ZvcndhcmRMaXN0LT5nb1RvSXRl
bShoaXN0b3J5SXRlbSk7CisgICAgICAgIGJhY2tGb3J3YXJkTGlzdC0+Z29Ub0l0ZW0oaGlzdG9y
eUl0ZW0uZ2V0KCkpOwogfQogCiAvKioKQEAgLTE2OSw3ICsxNjksNyBAQCBHTGlzdCogd2Via2l0
X3dlYl9iYWNrX2ZvcndhcmRfbGlzdF9nZXRfZm9yd2FyZF9saXN0X3dpdGhfbGltaXQoV2ViS2l0
V2ViQmFja0ZvcgogICAgIGJhY2tGb3J3YXJkTGlzdC0+Zm9yd2FyZExpc3RXaXRoTGltaXQobGlt
aXQsIGl0ZW1zKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtcy5zaXplKCk7
IGkrKykgewotICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSB3
ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oaXRlbXNbaV0uZ2V0KCkp
OworICAgICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0ZW0gPSB3ZWJraXRf
d2ViX2hpc3RvcnlfaXRlbV9nZXRfaXRlbShpdGVtc1tpXSk7CiAgICAgICAgIGZvcndhcmRJdGVt
cyA9IGdfbGlzdF9wcmVwZW5kKGZvcndhcmRJdGVtcywgZ19vYmplY3RfcmVmKHdlYkhpc3RvcnlJ
dGVtKSk7CiAgICAgfQogCkBAIC0xOTksNyArMTk5LDcgQEAgR0xpc3QqIHdlYmtpdF93ZWJfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0X2JhY2tfbGlzdF93aXRoX2xpbWl0KFdlYktpdFdlYkJhY2tGb3J3
YXIKICAgICBiYWNrRm9yd2FyZExpc3QtPmJhY2tMaXN0V2l0aExpbWl0KGxpbWl0LCBpdGVtcyk7
CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgaXRlbXMuc2l6ZSgpOyBpKyspIHsKLSAg
ICAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9o
aXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9pdGVtKGl0ZW1zW2ldLmdldCgpKTsKKyAgICAgICAg
V2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtID0gd2Via2l0X3dlYl9oaXN0b3J5
X2l0ZW1fZ2V0X2l0ZW0oaXRlbXNbaV0pOwogICAgICAgICBiYWNrSXRlbXMgPSBnX2xpc3RfcHJl
cGVuZChiYWNrSXRlbXMsIGdfb2JqZWN0X3JlZih3ZWJIaXN0b3J5SXRlbSkpOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwIGIv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uY3BwCmluZGV4IDMxMGFmYjQu
LjQ1MTBmN2IgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmhpc3Rvcnlp
dGVtLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJoaXN0b3J5aXRlbS5jcHAK
QEAgLTMwLDExICszMCwxNSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Cit1c2luZyBXZWJDb3JlOjpIaXN0b3J5SXRlbTsKK3VzaW5nIFdl
YkNvcmU6OktVUkw7Cit1c2luZyBXZWJDb3JlOjpTdHJpbmc7Cit1c2luZyBXVEY6OlJlZlB0cjsK
IAogZXh0ZXJuICJDIiB7CiAKIHN0cnVjdCBfV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlIHsK
LSAgICBXVEY6OlJlZlB0cjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4gaGlzdG9yeUl0ZW07CisgICAg
UmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbTsKIAogICAgIGdjaGFyKiB0aXRsZTsKICAg
ICBnY2hhciogYWx0ZXJuYXRlVGl0bGU7CkBAIC02NiwzNCArNzAsMjcgQEAgc3RhdGljIEdIYXNo
VGFibGUqIHdlYmtpdF9oaXN0b3J5X2l0ZW1zKCkKICAgICByZXR1cm4gaGlzdG9yeUl0ZW1zOwog
fQogCi1zdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVtX2FkZChXZWJLaXRXZWJIaXN0b3J5
SXRlbSogd2ViSGlzdG9yeUl0ZW0sIFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBoaXN0b3J5SXRlbSkK
K3N0YXRpYyB2b2lkIHdlYmtpdF9oaXN0b3J5X2l0ZW1fYWRkKFdlYktpdFdlYkhpc3RvcnlJdGVt
KiB3ZWJIaXN0b3J5SXRlbSwgUmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSkKIHsKLSAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJ
dGVtKSk7CisgICAgQVNTRVJUKHdlYkhpc3RvcnlJdGVtKTsKKyAgICBBU1NFUlQoaGlzdG9yeUl0
ZW0pOwogCiAgICAgR0hhc2hUYWJsZSogdGFibGUgPSB3ZWJraXRfaGlzdG9yeV9pdGVtcygpOwog
Ci0gICAgZ19oYXNoX3RhYmxlX2luc2VydCh0YWJsZSwgaGlzdG9yeUl0ZW0sIGdfb2JqZWN0X3Jl
Zih3ZWJIaXN0b3J5SXRlbSkpOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRfaGlzdG9yeV9pdGVt
X3JlbW92ZShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCi17Ci0gICAgR0hhc2hU
YWJsZSogdGFibGUgPSB3ZWJraXRfaGlzdG9yeV9pdGVtcygpOwotICAgIFdlYktpdFdlYkhpc3Rv
cnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSA9IChXZWJLaXRXZWJIaXN0b3J5SXRlbSopIGdfaGFzaF90
YWJsZV9sb29rdXAodGFibGUsIGhpc3RvcnlJdGVtKTsKLQotICAgIGdfcmV0dXJuX2lmX2ZhaWwo
d2ViSGlzdG9yeUl0ZW0gIT0gTlVMTCk7Ci0KLSAgICBnX2hhc2hfdGFibGVfcmVtb3ZlKHRhYmxl
LCBoaXN0b3J5SXRlbSk7Ci0gICAgZ19vYmplY3RfdW5yZWYod2ViSGlzdG9yeUl0ZW0pOworICAg
IGdfaGFzaF90YWJsZV9pbnNlcnQodGFibGUsIGhpc3RvcnlJdGVtLT50YXJnZXRJdGVtKCksIHdl
Ykhpc3RvcnlJdGVtKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
ZGlzcG9zZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdl
Ykhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0ob2JqZWN0KTsKIAotICAgIHdl
YmtpdF9oaXN0b3J5X2l0ZW1fcmVtb3ZlKGNvcmUod2ViSGlzdG9yeUl0ZW0pKTsKKyAgICBSZWZQ
dHI8SGlzdG9yeUl0ZW0+IGhpc3RvcnlJdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAKLSAg
ICAvKiBkZXN0cm95IHRhYmxlIGlmIGVtcHR5ICovCiAgICAgR0hhc2hUYWJsZSogdGFibGUgPSB3
ZWJraXRfaGlzdG9yeV9pdGVtcygpOworCisgICAgZ19oYXNoX3RhYmxlX3JlbW92ZSh0YWJsZSwg
aGlzdG9yeUl0ZW0tPnRhcmdldEl0ZW0oKSk7CisKKyAgICAvKiBkZXN0cm95IHRhYmxlIGlmIGVt
cHR5ICovCiAgICAgaWYgKCFnX2hhc2hfdGFibGVfc2l6ZSh0YWJsZSkpCiAgICAgICAgIGdfaGFz
aF90YWJsZV9kZXN0cm95KHRhYmxlKTsKIApAQCAtMjUyLDE0ICsyNDksMTggQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwKICAgICB9CiB9CiAKLS8qIEhlbHBlciBmdW5jdGlvbiB0byBjcmVhdGUg
YSBuZXcgV2ViSGlzdG9yeUl0ZW0gaW5zdGFuY2Ugd2hlbiBuZWVkZWQgKi8KLVdlYktpdFdlYkhp
c3RvcnlJdGVtKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXdfd2l0aF9jb3JlX2l0ZW0oV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCisvKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGEg
bmV3IFdlYkhpc3RvcnlJdGVtIGluc3RhbmNlIGlmIG5lZWRlZCAqLworV2ViS2l0V2ViSGlzdG9y
eUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9pdGVtKFJlZlB0cjxIaXN0b3J5SXRl
bT4gaXRlbSkKIHsKKyAgICBBU1NFUlQoaXRlbSk7CisKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRl
bSogd2ViSGlzdG9yeUl0ZW0gPSBraXQoaXRlbSk7CiAKICAgICBpZiAoIXdlYkhpc3RvcnlJdGVt
KSB7CiAgICAgICAgIHdlYkhpc3RvcnlJdGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9ISVNUT1JZX0lURU0sIE5VTEwpKTsKLSAgICAgICAg
d2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIGNvcmUod2ViSGlzdG9yeUl0
ZW0pKTsKKyAgICAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRlKiBwcml2ID0gd2ViSGlz
dG9yeUl0ZW0tPnByaXY7CisgICAgICAgIHByaXYtPmhpc3RvcnlJdGVtID0gaXRlbTsKKyAgICAg
ICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJ
dGVtKTsKICAgICB9CiAKICAgICByZXR1cm4gd2ViSGlzdG9yeUl0ZW07CkBAIC0yNjksNyArMjcw
LDcgQEAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193
aXRoX2NvcmVfaXRlbShXZWJDb3JlOjpIaXN0b3IKIC8qKgogICogd2Via2l0X3dlYl9oaXN0b3J5
X2l0ZW1fbmV3OgogICoKLSAqIENyZWF0ZXMgYSBuZXcgI1dlYktpdFdlYkhpc3RvcnlJdGVtIGlu
c3RhbmNlCisgKiBDcmVhdGVzIGEgbmV3ICNXZWJLaXRXZWJIaXN0b3J5SXRlbSBpbnN0YW5jZS4K
ICAqCiAgKiBSZXR1cm4gdmFsdWU6IHRoZSBuZXcgI1dlYktpdFdlYkhpc3RvcnlJdGVtCiAgKi8K
QEAgLTI3OCw4ICsyNzksOCBAQCBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2Via2l0X3dlYl9oaXN0
b3J5X2l0ZW1fbmV3KHZvaWQpCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJ
dGVtID0gV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dF
Ql9ISVNUT1JZX0lURU0sIE5VTEwpKTsKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbVByaXZhdGUq
IHByaXYgPSB3ZWJIaXN0b3J5SXRlbS0+cHJpdjsKIAotICAgIHByaXYtPmhpc3RvcnlJdGVtID0g
V2ViQ29yZTo6SGlzdG9yeUl0ZW06OmNyZWF0ZSgpOwotICAgIHdlYmtpdF9oaXN0b3J5X2l0ZW1f
YWRkKHdlYkhpc3RvcnlJdGVtLCBwcml2LT5oaXN0b3J5SXRlbS5nZXQoKSk7CisgICAgcHJpdi0+
aGlzdG9yeUl0ZW0gPSBIaXN0b3J5SXRlbTo6Y3JlYXRlKCk7CisgICAgd2Via2l0X2hpc3Rvcnlf
aXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhpc3RvcnlJdGVtKTsKIAogICAgIHJldHVy
biB3ZWJIaXN0b3J5SXRlbTsKIH0KQEAgLTI4OSw0MCArMjkwLDUwIEBAIFdlYktpdFdlYkhpc3Rv
cnlJdGVtKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9uZXcodm9pZCkKICAqIEB1cmk6IHRoZSB1
cmkgb2YgdGhlIHBhZ2UKICAqIEB0aXRsZTogdGhlIHRpdGxlIG9mIHRoZSBwYWdlCiAgKgotICog
Q3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0gd2l0aCB0aGUgZ2l2ZW4gVVJJIGFu
ZCB0aXRsZQorICogQ3JlYXRlcyBhIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0gd2l0aCB0aGUg
Z2l2ZW4gVVJJIGFuZCB0aXRsZS4KKyAqCisgKiBJZiBAdXJpIGlzICVOVUxMLCB0aGUgaGlzdG9y
eSBpdGVtJ3MgdXJpIGlzIHNldCB0byBhbiBlbXB0eSBzdHJpbmcuCisgKiBJZiBAdGl0bGUgaXMg
JU5VTEwsIHRoZSBoaXN0b3J5IGl0ZW0ncyB0aXRsZSBpcyBzZXQgdG8gYW4gZW1wdHkgc3RyaW5n
LgogICoKICAqIFJldHVybiB2YWx1ZTogdGhlIG5ldyAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KICAq
LwogV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX25ld193aXRo
X2RhdGEoY29uc3QgZ2NoYXIqIHVyaSwgY29uc3QgZ2NoYXIqIHRpdGxlKQogewotICAgIFdlYkNv
cmU6OktVUkwgaGlzdG9yeVVyaSh1cmkpOwotICAgIFdlYkNvcmU6OlN0cmluZyBoaXN0b3J5VGl0
bGUodGl0bGUpOworICAgIHVyaSA9IHVyaSA/IHVyaSA6ICIiOworICAgIHRpdGxlID0gdGl0bGUg
PyB0aXRsZSA6ICIiOworCisgICAgS1VSTCBoaXN0b3J5VXJpKHVyaSk7CisgICAgU3RyaW5nIGhp
c3RvcnlUaXRsZSh0aXRsZSk7CiAKICAgICBXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9y
eUl0ZW0gPSBXRUJLSVRfV0VCX0hJU1RPUllfSVRFTShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVf
V0VCX0hJU1RPUllfSVRFTSwgTlVMTCkpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0
ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OwogCi0gICAgcHJpdi0+aGlzdG9yeUl0ZW0g
PSBXZWJDb3JlOjpIaXN0b3J5SXRlbTo6Y3JlYXRlKGhpc3RvcnlVcmksIGhpc3RvcnlUaXRsZSwg
MCk7Ci0gICAgd2Via2l0X2hpc3RvcnlfaXRlbV9hZGQod2ViSGlzdG9yeUl0ZW0sIHByaXYtPmhp
c3RvcnlJdGVtLmdldCgpKTsKKyAgICBwcml2LT5oaXN0b3J5SXRlbSA9IEhpc3RvcnlJdGVtOjpj
cmVhdGUoaGlzdG9yeVVyaSwgaGlzdG9yeVRpdGxlLCAwKTsKKyAgICB3ZWJraXRfaGlzdG9yeV9p
dGVtX2FkZCh3ZWJIaXN0b3J5SXRlbSwgcHJpdi0+aGlzdG9yeUl0ZW0pOwogCiAgICAgcmV0dXJu
IHdlYkhpc3RvcnlJdGVtOwogfQogCiAvKioKICAqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dl
dF90aXRsZToKLSAqIEB3ZWJIaXN0b3J5SXRlbTogYSAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KKyAq
IEB3ZWJfaGlzdG9yeV9pdGVtOiBhICNXZWJLaXRXZWJIaXN0b3J5SXRlbQorICoKKyAqIFJldHVy
bnMgdGhlIHBhZ2UgdGl0bGUgb2YgQHdlYl9oaXN0b3J5X2l0ZW0uCiAgKgotICogUmV0dXJucyB0
aGUgcGFnZSB0aXRsZSBvZiBAd2ViSGlzdG9yeUl0ZW0KKyAqIFJldHVybiB2YWx1ZTogdGhlIHRp
dGxlIG9mIEB3ZWJfaGlzdG9yeV9pdGVtLiBUaGUgc3RyaW5nIGlzIG93bmVkIGJ5CisgKiAgICAg
ICAgICAgICAgIEB3ZWJfaGlzdG9yeV9pdGVtIGFuZCBtdXN0IG5vdCBiZSBtb2RpZmllZCBvciBm
cmVlZAogICovCiBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1f
Z2V0X3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0b3J5SXRlbSkKIHsKICAgICBn
X3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5
SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0gPSBjb3JlKHdl
Ykhpc3RvcnlJdGVtKTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKHdlYkhp
c3RvcnlJdGVtKTsKIAotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgTlVM
TCk7CisgICAgQVNTRVJUKGl0ZW0pOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW1Qcml2YXRl
KiBwcml2ID0gd2ViSGlzdG9yeUl0ZW0tPnByaXY7Ci0gICAgV2ViQ29yZTo6U3RyaW5nIHRpdGxl
ID0gaXRlbS0+dGl0bGUoKTsKKyAgICBTdHJpbmcgdGl0bGUgPSBpdGVtLT50aXRsZSgpOworCiAg
ICAgZ19mcmVlKHByaXYtPnRpdGxlKTsKICAgICBwcml2LT50aXRsZSA9IGdfc3RyZHVwKHRpdGxl
LnV0ZjgoKS5kYXRhKCkpOwogCkBAIC0zMzEsMjIgKzM0MiwyNCBAQCBHX0NPTlNUX1JFVFVSTiBn
Y2hhciogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3RpdGxlKFdlYktpdFdlYkhpc3RvcnlJ
dGVtKiB3ZQogCiAvKioKICAqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF9hbHRlcm5hdGVf
dGl0bGU6Ci0gKiBAd2ViSGlzdG9yeUl0ZW06IGEgI1dlYktpdFdlYkhpc3RvcnlJdGVtCisgKiBA
d2ViX2hpc3RvcnlfaXRlbTogYSAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KICAqCi0gKiBSZXR1cm5z
IHRoZSBhbHRlcm5hdGUgdGl0bGUgb2YgQHdlYkhpc3RvcnlJdGVtCisgKiBSZXR1cm5zIHRoZSBh
bHRlcm5hdGUgdGl0bGUgb2YgQHdlYl9oaXN0b3J5X2l0ZW0uCiAgKgotICogUmV0dXJuIHZhbHVl
OiB0aGUgYWx0ZXJuYXRlIHRpdGxlIG9mIEB3ZWJIaXN0b3J5SXRlbQorICogUmV0dXJuIHZhbHVl
OiB0aGUgYWx0ZXJuYXRlIHRpdGxlIG9mIEB3ZWJfaGlzdG9yeV9pdGVtLiBUaGUgc3RyaW5nIGlz
IG93bmVkCisgKiAgICAgICAgICAgICAgIGJ5IEB3ZWJfaGlzdG9yeV9pdGVtIGFuZCBtdXN0IG5v
dCBiZSBtb2RpZmllZCBvciBmcmVlZAogICovCiBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2FsdGVybmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRl
bSogd2ViSGlzdG9yeUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lT
X1dFQl9ISVNUT1JZX0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6
Okhpc3RvcnlJdGVtKiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CisgICAgUmVmUHRyPEhp
c3RvcnlJdGVtPiBpdGVtID0gY29yZSh3ZWJIaXN0b3J5SXRlbSk7CiAKLSAgICBnX3JldHVybl92
YWxfaWZfZmFpbChpdGVtICE9IE5VTEwsIE5VTEwpOworICAgIEFTU0VSVChpdGVtKTsKIAogICAg
IFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2
OwotICAgIFdlYkNvcmU6OlN0cmluZyBhbHRlcm5hdGVUaXRsZSA9IGl0ZW0tPmFsdGVybmF0ZVRp
dGxlKCk7CisgICAgU3RyaW5nIGFsdGVybmF0ZVRpdGxlID0gaXRlbS0+YWx0ZXJuYXRlVGl0bGUo
KTsKKwogICAgIGdfZnJlZShwcml2LT5hbHRlcm5hdGVUaXRsZSk7CiAgICAgcHJpdi0+YWx0ZXJu
YXRlVGl0bGUgPSBnX3N0cmR1cChhbHRlcm5hdGVUaXRsZS51dGY4KCkuZGF0YSgpKTsKIApAQCAt
MzU1LDM5ICszNjgsNTEgQEAgR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9y
eV9pdGVtX2dldF9hbHRlcm5hdGVfdGl0bGUoV2ViS2l0V2ViSGlzdG8KIAogLyoqCiAgKiB3ZWJr
aXRfd2ViX2hpc3RvcnlfaXRlbV9zZXRfYWx0ZXJuYXRlX3RpdGxlOgotICogQHdlYkhpc3RvcnlJ
dGVtOiBhICNXZWJLaXRXZWJIaXN0b3J5SXRlbQorICogQHdlYl9oaXN0b3J5X2l0ZW06IGEgI1dl
YktpdFdlYkhpc3RvcnlJdGVtCiAgKiBAdGl0bGU6IHRoZSBhbHRlcm5hdGUgdGl0bGUgZm9yIEB0
aGlzIGhpc3RvcnkgaXRlbQogICoKLSAqIFNldHMgYW4gYWx0ZXJuYXRlIHRpdGxlIGZvciBAd2Vi
SGlzdG9yeUl0ZW0KKyAqIFNldHMgYW4gYWx0ZXJuYXRlIHRpdGxlIGZvciBAd2ViX2hpc3Rvcnlf
aXRlbS4gSWYgQHRpdGxlIGlzIE5VTEwsIHRoaXMKKyAqIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSB0
aXRsZSB0byBhbiBlbXB0eSBzdHJpbmcuCiAgKi8KIHZvaWQgd2Via2l0X3dlYl9oaXN0b3J5X2l0
ZW1fc2V0X2FsdGVybmF0ZV90aXRsZShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9yeUl0
ZW0sIGNvbnN0IGdjaGFyKiB0aXRsZSkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7CiAKLSAgICBXZWJDb3JlOjpIaXN0
b3J5SXRlbSogaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworICAgIFdlYktpdFdlYkhpc3Rv
cnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworCisgICAgaWYgKHBy
aXYtPmFsdGVybmF0ZVRpdGxlICE9IHRpdGxlKSB7CisgICAgICAgIFJlZlB0cjxIaXN0b3J5SXRl
bT4gaXRlbSA9IGNvcmUod2ViSGlzdG9yeUl0ZW0pOworICAgICAgICBBU1NFUlQoaXRlbSk7CiAK
LSAgICBpdGVtLT5zZXRBbHRlcm5hdGVUaXRsZShXZWJDb3JlOjpTdHJpbmc6OmZyb21VVEY4KHRp
dGxlKSk7Ci0gICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYkhpc3RvcnlJdGVtKSwgImFs
dGVybmF0ZS10aXRsZSIpOworICAgICAgICBpdGVtLT5zZXRBbHRlcm5hdGVUaXRsZShTdHJpbmc6
OmZyb21VVEY4KHRpdGxlKSk7CisKKyAgICAgICAgZ19mcmVlKHByaXYtPmFsdGVybmF0ZVRpdGxl
KTsKKyAgICAgICAgcHJpdi0+YWx0ZXJuYXRlVGl0bGUgPSBnX3N0cmR1cCh0aXRsZSk7CisKKyAg
ICAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHdlYkhpc3RvcnlJdGVtKSwgImFsdGVybmF0
ZS10aXRsZSIpOworICAgIH0KIH0KIAogLyoqCiAgKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9n
ZXRfdXJpOgotICogQHdlYkhpc3RvcnlJdGVtOiBhICNXZWJLaXRXZWJIaXN0b3J5SXRlbQorICog
QHdlYl9oaXN0b3J5X2l0ZW06IGEgI1dlYktpdFdlYkhpc3RvcnlJdGVtCiAgKgotICogUmV0dXJu
cyB0aGUgVVJJIG9mIEB0aGlzCisgKiBSZXR1cm5zIHRoZSBVUkkgb2YgQHdlYl9oaXN0b3J5X2l0
ZW0uCiAgKgotICogUmV0dXJuIHZhbHVlOiB0aGUgVVJJIG9mIEB3ZWJIaXN0b3J5SXRlbQorICog
UmV0dXJuIHZhbHVlOiB0aGUgVVJJIG9mIEB3ZWJfaGlzdG9yeV9pdGVtLiBUaGUgc3RyaW5nIGlz
IG93bmVkIGJ5CisgKiAgICAgICAgICAgICAgIEB3ZWJfaGlzdG9yeV9pdGVtIGFuZCBtdXN0IG5v
dCBiZSBtb2RpZmllZCBvciBmcmVlZAogICovCiBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0
X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X3VyaShXZWJLaXRXZWJIaXN0b3J5SXRlbSogd2ViSGlzdG9y
eUl0ZW0pCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9ISVNUT1JZ
X0lURU0od2ViSGlzdG9yeUl0ZW0pLCBOVUxMKTsKIAotICAgIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllfSVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwor
ICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaXRlbSA9IGNvcmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lU
RU0od2ViSGlzdG9yeUl0ZW0pKTsKIAotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0g
TlVMTCwgTlVMTCk7CisgICAgQVNTRVJUKGl0ZW0pOwogCi0gICAgV2ViQ29yZTo6U3RyaW5nIHVy
aSA9IGl0ZW0tPnVybFN0cmluZygpOwogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSog
cHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFN0cmluZyB1cmkgPSBpdGVtLT51cmxT
dHJpbmcoKTsKKwogICAgIGdfZnJlZShwcml2LT51cmkpOwogICAgIHByaXYtPnVyaSA9IGdfc3Ry
ZHVwKHVyaS51dGY4KCkuZGF0YSgpKTsKIApAQCAtMzk2LDIyICs0MjEsMjQgQEAgR19DT05TVF9S
RVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfaGlzdG9yeV9pdGVtX2dldF91cmkoV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qIHdlYkgKIAogLyoqCiAgKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfb3Jp
Z2luYWxfdXJpOgotICogQHdlYkhpc3RvcnlJdGVtOiBhICNXZWJLaXRXZWJIaXN0b3J5SXRlbQor
ICogQHdlYl9oaXN0b3J5X2l0ZW06IGEgI1dlYktpdFdlYkhpc3RvcnlJdGVtCiAgKgotICogUmV0
dXJucyB0aGUgb3JpZ2luYWwgVVJJIG9mIEB3ZWJIaXN0b3J5SXRlbS4KKyAqIFJldHVybnMgdGhl
IG9yaWdpbmFsIFVSSSBvZiBAd2ViX2hpc3RvcnlfaXRlbS4KICAqCi0gKiBSZXR1cm4gdmFsdWU6
IHRoZSBvcmlnaW5hbCBVUkkgb2YgQHdlYkhpc3RvcnlJVGVtCisgKiBSZXR1cm4gdmFsdWU6IHRo
ZSBvcmlnaW5hbCBVUkkgb2YgQHdlYl9oaXN0b3J5X2l0ZW0uIFRoZSBzdHJpbmcgaXMgb3duZWQg
YnkKKyAqICAgICAgICAgICAgICAgQHdlYl9oaXN0b3J5X2l0ZW0gYW5kIG11c3Qgbm90IGJlIG1v
ZGlmaWVkIG9yIGZyZWVkCiAgKi8KIEdfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hp
c3RvcnlfaXRlbV9nZXRfb3JpZ2luYWxfdXJpKFdlYktpdFdlYkhpc3RvcnlJdGVtKiB3ZWJIaXN0
b3J5SXRlbSkKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX0hJU1RP
UllfSVRFTSh3ZWJIaXN0b3J5SXRlbSksIE5VTEwpOwogCi0gICAgV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qIGl0ZW0gPSBjb3JlKFdFQktJVF9XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSk7
CisgICAgUmVmUHRyPEhpc3RvcnlJdGVtPiBpdGVtID0gY29yZShXRUJLSVRfV0VCX0hJU1RPUllf
SVRFTSh3ZWJIaXN0b3J5SXRlbSkpOwogCi0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoaXRlbSAh
PSBOVUxMLCBOVUxMKTsKKyAgICBBU1NFUlQoaXRlbSk7CiAKLSAgICBXZWJDb3JlOjpTdHJpbmcg
b3JpZ2luYWxVcmkgPSBpdGVtLT5vcmlnaW5hbFVSTFN0cmluZygpOwogICAgIFdlYktpdFdlYkhp
c3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJdGVtLT5wcml2OworICAgIFN0cmlu
ZyBvcmlnaW5hbFVyaSA9IGl0ZW0tPm9yaWdpbmFsVVJMU3RyaW5nKCk7CisKICAgICBnX2ZyZWUo
cHJpdi0+b3JpZ2luYWxVcmkpOwogICAgIHByaXYtPm9yaWdpbmFsVXJpID0gZ19zdHJkdXAob3Jp
Z2luYWxVcmkudXRmOCgpLmRhdGEoKSk7CiAKQEAgLTQyMCw0MyArNDQ3LDQzIEBAIEdfQ09OU1Rf
UkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfb3JpZ2luYWxfdXJpKFdl
YktpdFdlYkhpc3RvcnlJCiAKIC8qKgogICogd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fZ2V0X2xh
c3RfdmlzaXN0ZWRfdGltZSA6Ci0gKiBAd2ViSGlzdG9yeUl0ZW06IGEgI1dlYktpdFdlYkhpc3Rv
cnlJdGVtCisgKiBAd2ViX2hpc3RvcnlfaXRlbTogYSAjV2ViS2l0V2ViSGlzdG9yeUl0ZW0KICAq
Ci0gKiBSZXR1cm5zIHRoZSBsYXN0IHRpbWUgQHdlYkhpc3RvcnlJdGVtIHdhcyB2aXNpdGVkCisg
KiBSZXR1cm5zIHRoZSBsYXN0IHRpbWUgQHdlYl9oaXN0b3J5X2l0ZW0gd2FzIHZpc2l0ZWQuCiAg
KgotICogUmV0dXJuIHZhbHVlOiB0aGUgdGltZSBpbiBzZWNvbmRzIHRoaXMgQHdlYkhpc3RvcnlJ
dGVtIHdhcyBsYXN0IHZpc2l0ZWQKKyAqIFJldHVybiB2YWx1ZTogdGhlIHRpbWUgaW4gc2Vjb25k
cyB0aGlzIEB3ZWJfaGlzdG9yeV9pdGVtIHdhcyBsYXN0IHZpc2l0ZWQKICAqLwogZ2RvdWJsZSB3
ZWJraXRfd2ViX2hpc3RvcnlfaXRlbV9nZXRfbGFzdF92aXNpdGVkX3RpbWUoV2ViS2l0V2ViSGlz
dG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtKQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfSElTVE9SWV9JVEVNKHdlYkhpc3RvcnlJdGVtKSwgMCk7CiAKLSAgICBXZWJD
b3JlOjpIaXN0b3J5SXRlbSogaXRlbSA9IGNvcmUoV0VCS0lUX1dFQl9ISVNUT1JZX0lURU0od2Vi
SGlzdG9yeUl0ZW0pKTsKKyAgICBSZWZQdHI8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBjb3JlKHdlYkhp
c3RvcnlJdGVtKTsKIAotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGl0ZW0gIT0gTlVMTCwgMCk7
CisgICAgQVNTRVJUKGl0ZW0pOwogCiAgICAgcmV0dXJuIGl0ZW0tPmxhc3RWaXNpdGVkVGltZSgp
OwogfQogCiB9IC8qIGVuZCBleHRlcm4gIkMiICovCiAKLVdlYkNvcmU6Okhpc3RvcnlJdGVtKiBX
ZWJLaXQ6OmNvcmUoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtKQorUmVmUHRy
PEhpc3RvcnlJdGVtPiBXZWJLaXQ6OmNvcmUoV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3Rv
cnlJdGVtKQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9S
WV9JVEVNKHdlYkhpc3RvcnlJdGVtKSwgTlVMTCk7CisgICAgQVNTRVJUKHdlYkhpc3RvcnlJdGVt
KTsKIAogICAgIFdlYktpdFdlYkhpc3RvcnlJdGVtUHJpdmF0ZSogcHJpdiA9IHdlYkhpc3RvcnlJ
dGVtLT5wcml2OwotICAgIFdURjo6UmVmUHRyPFdlYkNvcmU6Okhpc3RvcnlJdGVtPiBoaXN0b3J5
SXRlbSA9IHByaXYtPmhpc3RvcnlJdGVtOworICAgIFJlZlB0cjxIaXN0b3J5SXRlbT4gaGlzdG9y
eUl0ZW0gPSBwcml2LT5oaXN0b3J5SXRlbTsKIAotICAgIHJldHVybiBoaXN0b3J5SXRlbSA/IGhp
c3RvcnlJdGVtLmdldCgpIDogMDsKKyAgICByZXR1cm4gaGlzdG9yeUl0ZW0gPyBoaXN0b3J5SXRl
bSA6IDA7CiB9CiAKLVdlYktpdFdlYkhpc3RvcnlJdGVtKiBXZWJLaXQ6OmtpdChXZWJDb3JlOjpI
aXN0b3J5SXRlbSogaGlzdG9yeUl0ZW0pCitXZWJLaXRXZWJIaXN0b3J5SXRlbSogV2ViS2l0Ojpr
aXQoUmVmUHRyPEhpc3RvcnlJdGVtPiBoaXN0b3J5SXRlbSkKIHsKLSAgICBnX3JldHVybl92YWxf
aWZfZmFpbChoaXN0b3J5SXRlbSAhPSBOVUxMLCBOVUxMKTsKKyAgICBBU1NFUlQoaGlzdG9yeUl0
ZW0pOwogCiAgICAgV2ViS2l0V2ViSGlzdG9yeUl0ZW0qIHdlYkhpc3RvcnlJdGVtOwogICAgIEdI
YXNoVGFibGUqIHRhYmxlID0gd2Via2l0X2hpc3RvcnlfaXRlbXMoKTsKIAotICAgIHdlYkhpc3Rv
cnlJdGVtID0gKFdlYktpdFdlYkhpc3RvcnlJdGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJs
ZSwgaGlzdG9yeUl0ZW0pOworICAgIHdlYkhpc3RvcnlJdGVtID0gKFdlYktpdFdlYkhpc3RvcnlJ
dGVtKikgZ19oYXNoX3RhYmxlX2xvb2t1cCh0YWJsZSwgaGlzdG9yeUl0ZW0tPnRhcmdldEl0ZW0o
KSk7CiAgICAgcmV0dXJuIHdlYkhpc3RvcnlJdGVtOwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCmluZGV4IGI5ZWM2MTcuLmEyMGRjYjUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCkBAIC0xNTIxLDcgKzE1MjEsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdf
Z29fdG9fYmFja19mb3J3YXJkX2l0ZW0oV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0Vwog
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfSElTVE9SWV9JVEVNKGl0ZW0p
LCBGQUxTRSk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBhbHdheXMgcmV0dXJucyBUUlVFCi0gICAg
Y29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShpdGVtKSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRC
YWNrRm9yd2FyZCk7CisgICAgY29yZSh3ZWJWaWV3KS0+Z29Ub0l0ZW0oY29yZShpdGVtKS5nZXQo
KSwgRnJhbWVMb2FkVHlwZUluZGV4ZWRCYWNrRm9yd2FyZCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9
CiAK
</data>
<flag name="review"
          id="9928"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>