<?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>83016</bug_id>
          
          <creation_ts>2012-04-03 04:25:16 -0700</creation_ts>
          <short_desc>[GTK] Add webkit_cookie_manager_set_persistent_storage() to WebKit2 GTK+ API</short_desc>
          <delta_ts>2012-07-12 01:13:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>
          <dependson>82598</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>danw</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>svillar</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>594365</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-03 04:25:16 -0700</bug_when>
    <thetext>To be able to store non-session cookies persistently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594370</commentid>
    <comment_count>1</comment_count>
      <attachid>135308</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-04-03 04:40:46 -0700</bug_when>
    <thetext>Created attachment 135308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648081</commentid>
    <comment_count>2</comment_count>
      <attachid>147331</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-13 08:53:43 -0700</bug_when>
    <thetext>Created attachment 147331
Updated patch to apply on current git master

The same patch just rebased to apply on current git master.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648084</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-13 08:56:49 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648290</commentid>
    <comment_count>4</comment_count>
      <attachid>147331</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-06-13 11:35:42 -0700</bug_when>
    <thetext>Comment on attachment 147331
Updated patch to apply on current git master

Attachment 147331 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/12956062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648829</commentid>
    <comment_count>5</comment_count>
      <attachid>147494</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-13 23:14:30 -0700</bug_when>
    <thetext>Created attachment 147494
Updated patch, try to fix efl build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>648925</commentid>
    <comment_count>6</comment_count>
      <attachid>147494</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2012-06-14 01:15:24 -0700</bug_when>
    <thetext>Comment on attachment 147494
Updated patch, try to fix efl build

All this looks sensible to me :)

It&apos;s unfortunate to copy&amp;paste the sqlite jar with changes, if I could choose I&apos;d try to take the code as-is so that it&apos;s trivial to cherry-pick changes from upstream, but if you guys (Martin and Carlos I guess) think it&apos;s best to do it like this I won&apos;t complain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>649044</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-06-14 03:32:56 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 147494 [details])
&gt; All this looks sensible to me :)
&gt; 
&gt; It&apos;s unfortunate to copy&amp;paste the sqlite jar with changes, if I could choose I&apos;d try to take the code as-is so that it&apos;s trivial to cherry-pick changes from upstream, but if you guys (Martin and Carlos I guess) think it&apos;s best to do it like this I won&apos;t complain.

I agree, but that code hardly ever changes and it&apos;s not a lot of code. Also adapting the code to wk allows us to use the SQLite classes from WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663505</commentid>
    <comment_count>8</comment_count>
      <attachid>147494</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-05 05:31:11 -0700</bug_when>
    <thetext>Comment on attachment 147494
Updated patch, try to fix efl build

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

It looks mostly fine to me, but I&apos;m missing the rationale for having our own sqlite implementation, especially since we&apos;re using the text one from soup. Could you add an explanation to the ChangeLog?

&gt; Source/WebKit2/ChangeLog:35
&gt; +        new cookie jar for the given filename and sotrage type and add it

sotrage -&gt; storage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663561</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-05 08:03:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 147494 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=147494&amp;action=review
&gt; 
&gt; It looks mostly fine to me, but I&apos;m missing the rationale for having our own sqlite implementation, especially since we&apos;re using the text one from soup. Could you add an explanation to the ChangeLog?

Sure. It&apos;s because the libsoup implementation is part of libsoup-gnome, for whatever reason. Dan told me that moving it to libsoup would be an abi break and he suggested to just copy the implementation in WebKit, since it&apos;s not a lot of code and it hardly ever changes.

&gt; &gt; Source/WebKit2/ChangeLog:35
&gt; &gt; +        new cookie jar for the given filename and sotrage type and add it
&gt; 
&gt; sotrage -&gt; storage

Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663735</commentid>
    <comment_count>10</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2012-07-05 14:42:12 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Sure. It&apos;s because the libsoup implementation is part of libsoup-gnome,
&gt; for whatever reason. Dan told me that moving it to libsoup would be an abi
&gt; break and he suggested to just copy the implementation in WebKit, since
&gt; it&apos;s not a lot of code and it hardly ever changes.

*Moving* it would be an ABI break, but we could copy-and-rename it, and maybe I will at some point. It&apos;s currently in libsoup-gnome because I didn&apos;t want to add more library dependencies to libsoup-2.4.so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663900</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-05 23:20:32 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #9)
&gt; &gt; Sure. It&apos;s because the libsoup implementation is part of libsoup-gnome,
&gt; &gt; for whatever reason. Dan told me that moving it to libsoup would be an abi
&gt; &gt; break and he suggested to just copy the implementation in WebKit, since
&gt; &gt; it&apos;s not a lot of code and it hardly ever changes.
&gt; 
&gt; *Moving* it would be an ABI break, but we could copy-and-rename it, and maybe I will at some point. It&apos;s currently in libsoup-gnome because I didn&apos;t want to add more library dependencies to libsoup-2.4.so.

If we eventually can use the soup implementation we can simply remove the webkit code and use the soup one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664373</commentid>
    <comment_count>12</comment_count>
      <attachid>151137</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-07 02:50:51 -0700</bug_when>
    <thetext>Created attachment 151137
Updated patch

Patch rebased to apply on current git master</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>666939</commentid>
    <comment_count>13</comment_count>
      <attachid>151137</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-11 12:09:59 -0700</bug_when>
    <thetext>Comment on attachment 151137
Updated patch

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

Looks good, but I have a few minor comments.

&gt; Source/WebKit2/Shared/soup/SoupCookiePersistentStorageType.h:35
&gt; +enum {
&gt; +    SoupCookiePersistentStorageText = 0,
&gt; +    SoupCookiePersistentStorageSQLite = 1
&gt; +};
&gt; +typedef unsigned SoupCookiePersistentStorageType;

Since these will never be combined it makes sense to do this:

enum SoupCookiePersistentStorageType {
    SoupCookiePersistentStorageText,
    SoupCookiePersistentStorageSQLite,
};

Note that you don&apos;t need to specify the enum values since the defaults are correct.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.h:49
&gt; + *  file in the new Mozilla format.

Perhaps it&apos;s better to say &quot;current&quot; rather than &quot;new.&quot; I&apos;m not sure how new the format is nowadays.

&gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:46
&gt; +    COLUMN_ID,
&gt; +    COLUMN_NAME,
&gt; +    COLUMN_VALUE,
&gt; +    COLUMN_HOST,
&gt; +    COLUMN_PATH,
&gt; +    COLUMN_EXPIRY,
&gt; +    COLUMN_LAST_ACCESS,
&gt; +    COLUMN_SECURE,
&gt; +    COLUMN_HTTP_ONLY

The enum names here don&apos;t follow WebKit coding style. Do you mind fixing before landing?

&gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:100
&gt; +    time_t now = time(0);

Perhaps it would be better to use currentTime() here to avoid a dependency on POSIX?

You could do time_t now = floorf(currentTime());

&gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:141
&gt; +    query.bindInt(5, (gulong)soup_date_to_time_t(cookie-&gt;expires));

It looks like you might be losing some precision because you are binding a long as an integer. Perhaps do this:

query.bindInt64(5, static_cast&lt;int64_t&gt;(soup_date_to_time_t(cookie-&gt;expires)));

&gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:177
&gt; +    webkitSoupCookieJarSqliteDeleteCookie(sqliteJar, oldCookie);
&gt; +    webkitSoupCookieJarSqliteInsertCookie(sqliteJar, newCookie);

Perhaps it would be good to use a transaction for this operation so that if one of these steps fails, then nothing happens. It would looks something like this:

SQLiteTransaction transaction(sqliteJar-&gt;priv-&gt;database, false);
if (!webkitSoupCookieJarSqliteDeleteCookie(sqliteJar, oldCookie))
    return;
if (!webkitSoupCookieJarSqliteInsertCookie(sqliteJar, newCookie))
    return;
transaction.commit()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667474</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-12 00:49:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 151137 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=151137&amp;action=review
&gt; 
&gt; Looks good, but I have a few minor comments.

Thanks for reviewing.

&gt; &gt; Source/WebKit2/Shared/soup/SoupCookiePersistentStorageType.h:35
&gt; &gt; +enum {
&gt; &gt; +    SoupCookiePersistentStorageText = 0,
&gt; &gt; +    SoupCookiePersistentStorageSQLite = 1
&gt; &gt; +};
&gt; &gt; +typedef unsigned SoupCookiePersistentStorageType;
&gt; 
&gt; Since these will never be combined it makes sense to do this:
&gt; 
&gt; enum SoupCookiePersistentStorageType {
&gt;     SoupCookiePersistentStorageText,
&gt;     SoupCookiePersistentStorageSQLite,
&gt; };
&gt; 
&gt; Note that you don&apos;t need to specify the enum values since the defaults are correct.

Enums that are going to be serialized in IPC messages are declared that way because generated code uses unsigned. Using enum SoupCookiePersistentStorageType would fail to build the message receiver generated code.

&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitCookieManager.h:49
&gt; &gt; + *  file in the new Mozilla format.
&gt; 
&gt; Perhaps it&apos;s better to say &quot;current&quot; rather than &quot;new.&quot; I&apos;m not sure how new the format is nowadays.

Ok.

&gt; &gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:46
&gt; &gt; +    COLUMN_ID,
&gt; &gt; +    COLUMN_NAME,
&gt; &gt; +    COLUMN_VALUE,
&gt; &gt; +    COLUMN_HOST,
&gt; &gt; +    COLUMN_PATH,
&gt; &gt; +    COLUMN_EXPIRY,
&gt; &gt; +    COLUMN_LAST_ACCESS,
&gt; &gt; +    COLUMN_SECURE,
&gt; &gt; +    COLUMN_HTTP_ONLY
&gt; 
&gt; The enum names here don&apos;t follow WebKit coding style. Do you mind fixing before landing?

Sure.

&gt; &gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:100
&gt; &gt; +    time_t now = time(0);
&gt; 
&gt; Perhaps it would be better to use currentTime() here to avoid a dependency on POSIX?
&gt; 
&gt; You could do time_t now = floorf(currentTime());

Ok.

&gt; &gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:141
&gt; &gt; +    query.bindInt(5, (gulong)soup_date_to_time_t(cookie-&gt;expires));
&gt; 
&gt; It looks like you might be losing some precision because you are binding a long as an integer. Perhaps do this:
&gt; 
&gt; query.bindInt64(5, static_cast&lt;int64_t&gt;(soup_date_to_time_t(cookie-&gt;expires)));

Ok.

&gt; &gt; Source/WebKit2/WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:177
&gt; &gt; +    webkitSoupCookieJarSqliteDeleteCookie(sqliteJar, oldCookie);
&gt; &gt; +    webkitSoupCookieJarSqliteInsertCookie(sqliteJar, newCookie);
&gt; 
&gt; Perhaps it would be good to use a transaction for this operation so that if one of these steps fails, then nothing happens. It would looks something like this:
&gt; 
&gt; SQLiteTransaction transaction(sqliteJar-&gt;priv-&gt;database, false);
&gt; if (!webkitSoupCookieJarSqliteDeleteCookie(sqliteJar, oldCookie))
&gt;     return;
&gt; if (!webkitSoupCookieJarSqliteInsertCookie(sqliteJar, newCookie))
&gt;     return;
&gt; transaction.commit()

Sure, I&apos;ll use a transaction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667487</commentid>
    <comment_count>15</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-12 01:07:10 -0700</bug_when>
    <thetext>(In reply to comment #14)

&gt; Enums that are going to be serialized in IPC messages are declared that way because generated code uses unsigned. Using enum SoupCookiePersistentStorageType would fail to build the message receiver generated code.

Well, we can also fix it by using uint32_t instead of the enum name in the web process receiver handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>667496</commentid>
    <comment_count>16</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-07-12 01:13:13 -0700</bug_when>
    <thetext>Committed r122425: &lt;http://trac.webkit.org/changeset/122425&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135308</attachid>
            <date>2012-04-03 04:40:46 -0700</date>
            <delta_ts>2012-06-13 08:53:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-cookies-persistent.diff</filename>
            <type>text/plain</type>
            <size>41364</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNzJkNzZjLi4yMDgzNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMDQtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3BlcnNpc3Rl
bnRfc3RvcmFnZSgpIHRvIFdlYktpdDIgR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3Rv
cmFnZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cENvb2tpZXNDaGFuZ2VkKTogRG8g
bm90IG5vdGlmeSBhYm91dCBjaGFuZ2VzIGluCisgICAgICAgIG90aGVyIGNvb2tpZSBqYXJzIHRo
YW4gdGhlIGN1cnJlbnQgb25lLgorCiAyMDEyLTA0LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAg
PGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggbWFrZSBkaXN0
Y2hlY2sgaXNzdWVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDFjZjVjMTYuLjhhMDFkYWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NiBAQAorMjAxMi0wNC0wMyAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2Fy
Y2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gQWRkIHdlYmtpdF9jb29raWVfbWFuYWdl
cl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKCkgdG8gV2ViS2l0MiBHVEsrIEFQSQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODMwMTYKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBB
ZGQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorICAgICAgICAqIFNoYXJlZC9zb3VwL1NvdXBD
b29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOiBB
ZGQgVGV4dCBhbmQgU1FMaXRlIHBlcnNpc3RlbnQgc3RvcmFnZSB0eXBlcy4KKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtp
dF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKTogU2V0IGEgcGVyc2lzdGVu
dAorICAgICAgICBzdG9yYWdlIGZvciBjb29raWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdENvb2tpZU1hbmFnZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0OiBBZGQgbmV3IHN5bWJvbHMuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAo
dGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChzZXJ2ZXJDYWxs
YmFjayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYkNvb2tp
ZU1hbmFnZXJQcm94eSk6IEFkZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpIG1ldGhvZAor
ICAgICAgICB3aGVuIHVzaW5nIHNvdXAuCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViQ29v
a2llTWFuYWdlclByb3h5U291cC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UpOiBTZW5kCisgICAgICAgIFNldENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlIG1lc3NhZ2UgdG8gdGhlIHdlYiBwcm9jZXNzLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJD
b29raWVNYW5hZ2VyKTogQWRkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKCkgbWV0aG9kIHdo
ZW4KKyAgICAgICAgdXNpbmcgc291cC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2Vi
Q29va2llTWFuYWdlci5tZXNzYWdlcy5pbjogQWRkCisgICAgICAgIFNldENvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlIG1lc3NhZ2Ugd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Q29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViQ29va2llTWFuYWdlcjo6c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UpOiBDcmVhdGUgYQor
ICAgICAgICBuZXcgY29va2llIGphciBmb3IgdGhlIGdpdmVuIGZpbGVuYW1lIGFuZCBzb3RyYWdl
IHR5cGUgYW5kIGFkZCBpdAorICAgICAgICB0byB0aGUgc291cCBzZXNzaW9uLgorICAgICAgICAq
IFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVPcGVuRGF0YWJhc2UpOiBP
cGVuIFNRTGl0ZSBkYXRhYmFzZS4KKyAgICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVD
cmVhdGVUYWJsZSk6IENyZWF0ZSBtb3pfY29va2llcyBpZiBpdAorICAgICAgICBkb2Vzbid0IGV4
aXN0LgorICAgICAgICAod2Via2l0U291cENvb2tpZUphclNxbGl0ZUxvYWQpOiBMb2FkIHRoZSBp
bml0aWFsIHNldCBvZiBjb29raWVzCisgICAgICAgIGZyb20gdGhlIGRhdGFiYXNlLgorICAgICAg
ICAod2Via2l0U291cENvb2tpZUphclNxbGl0ZUluc2VydENvb2tpZSk6IEluc2VydCBhIG5ldyBj
b29raWUgaW50bworICAgICAgICB0aGUgZGF0YWJhc2UuCisgICAgICAgICh3ZWJraXRTb3VwQ29v
a2llSmFyU3FsaXRlRGVsZXRlQ29va2llKTogRGVsZXRlIGFuIGV4aXNpbmcgY29va2llCisgICAg
ICAgIGZyb20gdGhlIGRhdGFiYXNlLgorICAgICAgICAod2Via2l0U291cENvb2tpZUphclNxbGl0
ZUNoYW5nZWQpOiBJbnNlcnQvZGVsZXRlIGNvb2tpZXMKKyAgICAgICAgZGVwZW5kaW5nIG9uIHRo
ZSBjaGFuZ2UuCisgICAgICAgICh3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRmluYWxpemUpOgor
ICAgICAgICAod2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVfaW5pdCk6CisgICAgICAgICh3
ZWJraXRfc291cF9jb29raWVfamFyX3NxbGl0ZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dFNvdXBDb29raWVKYXJTcWxpdGVOZXcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9z
b3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaDogQWRkZWQuCisKIDIwMTItMDQtMDIgIEhh
eWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtTaGFkb3cgRE9NXSBJ
bnRyb2R1Y2UgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIGFzIGEgc3VjY2Vzc29yIG9mIFJlaWZp
ZWRUcmVlVHJhdmVyc2FsIEFQSXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA4MjQyZmQyLi4yMGFmNGJhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDQtMDMg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAgIFtH
VEtdIEFkZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZSgpIHRv
IFdlYktpdDIgR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgzMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAg
ICAgKGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9kZWNsYXJhdGlvbik6IEFkZCB3ZWJraXRfc291
cCBwcmVmaXggdG8KKyAgICAgICAgdGhlIGxpc3Qgb2YgZXhjZXB0aW9ucyB0byB0aGUgdW5kZXJz
Y29yZXMgaW4gaWRlbnRpZmllcnMgcnVsZS4KKwogMjAxMi0wNC0wMiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gRml4IG5hbWVzIG9m
IGZhaWxlZCB1bml0IHRlc3RzIGluIFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9y
YWdlU291cC5jcHAKaW5kZXggMmQ3MTc0Ny4uZjMwOWU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3Bw
CkBAIC0zNyw4ICszNywxMCBAQCB2b2lkIHNldENvb2tpZVN0b3JhZ2VQcml2YXRlQnJvd3NpbmdF
bmFibGVkKGJvb2wgZW5hYmxlZCkKIH0KIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQot
c3RhdGljIHZvaWQgc291cENvb2tpZXNDaGFuZ2VkKFNvdXBDb29raWVKYXIqLCBTb3VwQ29va2ll
KiwgU291cENvb2tpZSosIGdwb2ludGVyKQorc3RhdGljIHZvaWQgc291cENvb2tpZXNDaGFuZ2Vk
KFNvdXBDb29raWVKYXIqIGphciwgU291cENvb2tpZSosIFNvdXBDb29raWUqLCBncG9pbnRlcikK
IHsKKyAgICBpZiAoamFyICE9IHNvdXBDb29raWVKYXIoKSkKKyAgICAgICAgcmV0dXJuOwogICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+bm90aWZ5Q29va2llc0No
YW5nZWQoKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZp
bGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQppbmRleCBkODNkMjU2Li5hMzY1
ZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtMzkxLDYgKzM5MSw3IEBAIHdlYmtpdDJfc291
cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmggXAogCVNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3Vw
L1NvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL1RleHRDaGVja2VyU3RhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNz
YWdlQ29kZXJzLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcCBcCkBA
IC02ODMsNiArNjg0LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUHJvY2Vzc01vZGVsLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNw
b25zaXZlbmVzc1RpbWVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNp
dmVuZXNzVGltZXIuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29va2ll
TWFuYWdlclByb3h5U291cC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UZXh0Q2hl
Y2tlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5j
cHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXApA
QCAtNzgyLDYgKzc4NCw4IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAgXAorCVNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJT
cWxpdGUuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJL
aXRTb3VwQ29va2llSmFyU3FsaXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWQuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93
bmxvYWRBdXRoZW50aWNhdGlvbkNsaWVudC5oIFwKQEAgLTEwMTIsNiArMTAxNiw3IEBAIGxpYndl
YmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFKT1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlO
T1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNj
YXBlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQyBcCkBAIC0xMzcyLDYgKzEzNzcsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Q
cm9jZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZCBc
CiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNk
aXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlLyBcCisJLUkkKHNyY2Rp
cikvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zLyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlLyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
c291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmggYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2MjE4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1NvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaApA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU291cENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZV9oCisjZGVmaW5lIFNvdXBDb29raWVQZXJzaXN0ZW50
U3RvcmFnZVR5cGVfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKworZW51bSB7CisgICAgU291cENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVGV4dCA9IDAsCisgICAgU291cENvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlU1FMaXRlID0gMQorfTsKK3R5cGVkZWYgdW5zaWduZWQgU291cENvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlVHlwZTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBTb3Vw
Q29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKaW5kZXggYjk5M2Qy
ZS4uZmI4YmUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKQEAgLTIwLDYgKzIwLDggQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRl
ICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCisjaW5jbHVkZSAiV2ViQ29va2ll
TWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CkBAIC00MSw2ICs0Myw5IEBAIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFM
XSA9IHsgMCwgfTsKIAogR19ERUZJTkVfVFlQRShXZWJLaXRDb29raWVNYW5hZ2VyLCB3ZWJraXRf
Y29va2llX21hbmFnZXIsIEdfVFlQRV9PQkpFQ1QpCiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCwgU291cENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVGV4dCk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJ
VF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURSwgU291cENvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlU1FMaXRlKTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09P
S0lFX1BPTElDWV9BQ0NFUFRfQUxXQVlTLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlz
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUND
RVBUX05FVkVSLCBrV0tIVFRQQ29va2llQWNjZXB0UG9saWN5TmV2ZXIpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTk9fVEhJUkRfUEFS
VFksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7
CkBAIC0xMDQsNiArMTA5LDMwIEBAIFdlYktpdENvb2tpZU1hbmFnZXIqIHdlYmtpdENvb2tpZU1h
bmFnZXJDcmVhdGUoV0tDb29raWVNYW5hZ2VyUmVmIHdrQ29va2llTWFuYWdlCiB9CiAKIC8qKgor
ICogd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2U6CisgKiBAY29v
a2llX21hbmFnZXI6IGEgI1dlYktpdENvb2tpZU1hbmFnZXIKKyAqIEBmaWxlbmFtZTogdGhlIGZp
bGVuYW1lIHRvIHJlYWQgdG8vd3JpdGUgZnJvbQorICogQHN0b3JhZ2U6IGEgI1dlYktpdENvb2tp
ZVBlcnNpc3RlbnRTdG9yYWdlCisgKgorICogU2V0IHRoZSBAZmlsZW5hbWUgd2hlcmUgbm9uLXNl
c3Npb24gY29va2llcyBhcmUgc3RvcmVkIHBlcnNpc3RlbnRseSB1c2luZworICogQHN0b3JhZ2Ug
YXMgdGhlIGZvcm1hdCB0byByZWFkL3dyaXRlIHRoZSBjb29raWVzLgorICogQ29va2llcyBhcmUg
aW5pdGlhbGx5IHJlYWQgZnJvbSBAZmlsZW5hbWUgdG8gY3JlYXRlIGFuIGluaXRpYWwgc2V0IG9m
IGNvb2tpZXMuCisgKiBUaGVuLCBub24tc2Vzc2lvbiBjb29raWVzIHdpbGwgYmUgd3JpdHRlbiB0
byBAZmlsZW5hbWUgd2hlbiB0aGUgV2ViS2l0Q29va2llTWFuYWdlcjo6Y2hhbmdlZAorICogc2ln
bmFsIGlzIGVtaXR0ZWQuCisgKiBCeSBkZWZhdWx0LCBAY29va2llX21hbmFnZXIgZG9lc24ndCBz
dG9yZSB0aGUgY29va2llcyBwZXJzaXN0ZW5seSwgc28geW91IG5lZWQgdG8gY2FsbCB0aGlzCisg
KiBtZXRob2QgdG8ga2VlcCBjb29raWVzIHNhdmVkIGFjcm9zcyBzZXNzaW9ucy4KKyAqLwordm9p
ZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZShXZWJLaXRDb29r
aWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFyKiBmaWxlbmFtZSwgV2ViS2l0Q29va2llUGVy
c2lzdGVudFN0b3JhZ2Ugc3RvcmFnZSkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19DT09LSUVfTUFOQUdFUihtYW5hZ2VyKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbChmaWxlbmFt
ZSk7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJTdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhtYW5h
Z2VyLT5wcml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCkpOworICAgIHRvSW1wbChtYW5hZ2VyLT5w
cml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCkpLT5zZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShT
dHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKSwgc3RvcmFnZSk7CisgICAgV0tDb29raWVNYW5hZ2Vy
U3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKG1hbmFnZXItPnByaXYtPndrQ29va2llTWFuYWdl
ci5nZXQoKSk7Cit9CisKKy8qKgogICogd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRf
cG9saWN5OgogICogQGNvb2tpZV9tYW5hZ2VyOiBhICNXZWJLaXRDb29raWVNYW5hZ2VyCiAgKiBA
cG9saWN5OiBhICNXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuaAppbmRleCA3OTFh
NjFkLi4wMmZkOTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5oCkBAIC00Miw2ICs0MiwyMCBAQCB0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0Q29va2llTWFuYWdlckNsYXNzICAgV2ViS2l0Q29va2llTWFuYWdlckNsYXNz
OwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlIFdlYktpdENvb2tp
ZU1hbmFnZXJQcml2YXRlOwogCiAvKioKKyAqIFdlYktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
OgorICogQFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQ6IENvb2tpZXMgYXJl
IHN0b3JlZCBpbiBhIHRleHQKKyAqICBmaWxlIGluIHRoZSBNb3ppbGxhICJjb29raWVzLnR4dCIg
Zm9ybWF0LgorICogQFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURTogQ29v
a2llcyBhcmUgc3RvcmVkIGluIGEgU1FMaXRlCisgKiAgZmlsZSBpbiB0aGUgbmV3IE1vemlsbGEg
Zm9ybWF0LgorICoKKyAqIEVudW0gdmFsdWVzIHVzZWQgdG8gZGVub3RlIHRoZSBjb29raWUgcGVy
c2lzdGVudCBzdG9yYWdlIHR5cGVzLgorICovCit0eXBlZGVmIGVudW0geworICAgIFdFQktJVF9D
T09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsCisgICAgV0VCS0lUX0NPT0tJRV9QRVJTSVNU
RU5UX1NUT1JBR0VfU1FMSVRFCit9IFdlYktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlOworCisv
KioKICAqIFdlYktpdENvb2tpZUFjY2VwdFBvbGljeToKICAqIEBXRUJLSVRfQ09PS0lFX1BPTElD
WV9BQ0NFUFRfQUxXQVlTOiBBY2NlcHQgYWxsIGNvb2tpZXMgdW5jb25kaXRpb25hbGx5LgogICog
QFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9ORVZFUjogUmVqZWN0IGFsbCBjb29raWVzIHVu
Y29uZGl0aW9uYWxseS4KQEAgLTY5LDM1ICs4Myw0MCBAQCBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJr
aXRfY29va2llX21hbmFnZXJfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7
CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9s
aWN5ICAgICAgICAgICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KTsKK3dlYmtpdF9jb29raWVfbWFuYWdl
cl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlICAgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAg
ICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICpmaWxl
bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJLaXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSBzdG9yYWdlKTsKKworV0VCS0lUX0FQ
SSB2b2lkCit3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X2FjY2VwdF9wb2xpY3kgICAgICAgICAg
ICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
Q29va2llQWNjZXB0UG9saWN5ICAgICAgcG9saWN5KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJr
aXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3kgICAgICAgICAgICAgICAoV2ViS2l0
Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAg
ICBjYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKK3dlYmtpdF9j
b29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeSAgICAgICAgICAgICAgIChXZWJLaXRDb29r
aWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAg
ICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEp
OwogCiBXRUJLSVRfQVBJIFdlYktpdENvb2tpZUFjY2VwdFBvbGljeQotd2Via2l0X2Nvb2tpZV9t
YW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5X2ZpbmlzaCAgICAgICAgKFdlYktpdENvb2tpZU1hbmFn
ZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAqcmVzdWx0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdF
cnJvciAgICAgICAgICAgICAgICAgKiplcnJvcik7Cit3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0
X2FjY2VwdF9wb2xpY3lfZmluaXNoICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgICAg
ICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAgICAqcmVzdWx0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdF
cnJvciAgICAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13
ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzICAgICAgICAoV2Vi
S2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sg
ICAgICBjYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKK3dlYmtp
dF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXMgICAgICAgIChXZWJLaXRD
b29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNr
ICAgICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAgICB1c2VyX2Rh
dGEpOwogCiBXRUJLSVRfQVBJIGdjaGFyICoqCi13ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2Rv
bWFpbnNfd2l0aF9jb29raWVzX2ZpbmlzaCAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tp
ZV9tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICpyZXN1bHQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICAqKmVycm9yKTsKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRo
X2Nvb2tpZXNfZmluaXNoIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFu
YWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAg
ICAgICAgICAgICAgICoqZXJyb3IpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9jb29raWVf
bWFuYWdlcl9kZWxldGVfY29va2llc19mb3JfZG9tYWluICAgICAgIChXZWJLaXRDb29raWVNYW5h
Z2VyICAgICAqY29va2llX21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgKmRvbWFpbik7
Cit3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Nvb2tpZXNfZm9yX2RvbWFpbiAgICAgICAo
V2ViS2l0Q29va2llTWFuYWdlciAgICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIg
ICAgICAgICAgICAgICAgICAqZG9tYWluKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfY29v
a2llX21hbmFnZXJfZGVsZXRlX2FsbF9jb29raWVzICAgICAgICAgICAgICAoV2ViS2l0Q29va2ll
TWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyKTsKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxl
dGVfYWxsX2Nvb2tpZXMgICAgICAgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAgICAg
ICpjb29raWVfbWFuYWdlcik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMu
dHh0CmluZGV4IGRjMzgwOTUuLjNmNTIxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApA
QCAtNTUxLDcgKzU1MSw5IEBAIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3R5cGUKIDxTRUNU
SU9OPgogPEZJTEU+V2ViS2l0Q29va2llTWFuYWdlcjwvRklMRT4KIFdlYktpdENvb2tpZU1hbmFn
ZXIKK1dlYktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlCiBXZWJLaXRDb29raWVBY2NlcHRQb2xp
Y3kKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlCiB3ZWJraXRf
Y29va2llX21hbmFnZXJfc2V0X2FjY2VwdF9wb2xpY3kKIHdlYmtpdF9jb29raWVfbWFuYWdlcl9n
ZXRfYWNjZXB0X3BvbGljeQogd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5
X2ZpbmlzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDZkMmVjZjUuLjZlMTlhZWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb29r
aWVNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0Q29va2llTWFuYWdlci5jcHAKQEAgLTIxLDggKzIxLDEwIEBACiAKICNpbmNsdWRlICJX
ZWJLaXRUZXN0U2VydmVyLmgiCiAjaW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxn
bGliL2dzdGRpby5oPgogCiBzdGF0aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKK3N0YXRp
YyBjaGFyKiBrVGVtcERpcmVjdG9yeTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGtGaXJzdFBhcnR5
RG9tYWluID0gIjEyNy4wLjAuMSI7CiBzdGF0aWMgY29uc3QgY2hhcioga1RoaXJkUGFydHlEb21h
aW4gPSAibG9jYWxob3N0IjsKQEAgLTU4LDYgKzYwLDMwIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIGdfc3RyZnJlZXYobV9kb21haW5zKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlz
Y29ubmVjdF9tYXRjaGVkKG1fY29va2llTWFuYWdlciwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwg
MCwgMCwgMCwgdGhpcyk7CisgICAgICAgIGlmIChtX2Nvb2tpZXNUZXh0RmlsZSkKKyAgICAgICAg
ICAgIGdfdW5saW5rKG1fY29va2llc1RleHRGaWxlLmdldCgpKTsKKyAgICAgICAgaWYgKG1fY29v
a2llc1NRTGl0ZUZpbGUpCisgICAgICAgICAgICBnX3VubGluayhtX2Nvb2tpZXNTUUxpdGVGaWxl
LmdldCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldFBlcnNpc3RlbnRTdG9yYWdlKFdlYktpdENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlIHN0b3JhZ2UpCisgICAgeworICAgICAgICBjb25zdCBjaGFy
KiBmaWxlbmFtZSA9IDA7CisgICAgICAgIHN3aXRjaCAoc3RvcmFnZSkgeworICAgICAgICBjYXNl
IFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQ6CisgICAgICAgICAgICBpZiAo
IW1fY29va2llc1RleHRGaWxlKQorICAgICAgICAgICAgICAgIG1fY29va2llc1RleHRGaWxlLnNl
dChnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiY29va2llcy50eHQiLCBOVUxMKSk7
CisgICAgICAgICAgICBmaWxlbmFtZSA9IG1fY29va2llc1RleHRGaWxlLmdldCgpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JB
R0VfU1FMSVRFOgorICAgICAgICAgICAgaWYgKCFtX2Nvb2tpZXNTUUxpdGVGaWxlKQorICAgICAg
ICAgICAgICAgIG1fY29va2llc1NRTGl0ZUZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBE
aXJlY3RvcnksICJjb29raWVzLmRiIiwgTlVMTCkpOworICAgICAgICAgICAgZmlsZW5hbWUgPSBt
X2Nvb2tpZXNTUUxpdGVGaWxlLmdldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICB9Cisg
ICAgICAgIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKG1fY29v
a2llTWFuYWdlciwgZmlsZW5hbWUsIHN0b3JhZ2UpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lk
IGdldEFjY2VwdFBvbGljeVJlYWR5Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1
bHQqIHJlc3VsdCwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC0xMjksNiArMTU1LDggQEAgcHVibGlj
OgogICAgIGNoYXIqKiBtX2RvbWFpbnM7CiAgICAgYm9vbCBtX2Nvb2tpZXNDaGFuZ2VkOwogICAg
IGJvb2wgbV9maW5pc2hMb29wV2hlbkNvb2tpZXNDaGFuZ2U7CisgICAgR093blB0cjxjaGFyPiBt
X2Nvb2tpZXNUZXh0RmlsZTsKKyAgICBHT3duUHRyPGNoYXI+IG1fY29va2llc1NRTGl0ZUZpbGU7
CiB9OwogCiBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckFjY2VwdFBvbGljeShDb29raWVN
YW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKQEAgLTIwNCw2ICsyMzIsNTQgQEAgc3Rh
dGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZChDb29raWVNYW5hZ2VyVGVz
dCogdGVzdCwgZ2NvbnN0cG9pbnQKICAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2Vk
KTsKIH0KIAorc3RhdGljIHZvaWQgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZShD
b29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zZXRB
Y2NlcHRQb2xpY3koV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBUX0FMV0FZUyk7CisKKyAgICAv
LyBUZXh0IHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KKyAgICB0ZXN0LT5zZXRQZXJzaXN0ZW50
U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICBjaGFy
KiogZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOworCisg
ICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRh
dGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnQo
dGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMo
KTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xl
bmd0aChkb21haW5zKSwgPT0sIDIpOworCisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB1c2luZyBh
IG5ldyBmaWxlLgorICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVf
UEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURSk7CisgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFp
bnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2
X2xlbmd0aChkb21haW5zKSwgPT0sIDApOworCisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5n
ZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGls
TG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7Cisg
ICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsK
KyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIpOworCisg
ICAgLy8gVGV4dCBzdG9yYWdlIHVzaW5nIGFuIGV4aXN0aW5nIGZpbGUuCisgICAgdGVzdC0+c2V0
UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7
CisgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5z
KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIpOwor
ICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2
X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMCk7CisKKyAgICAvLyBTUUxpdGUgc3Rv
cmFnZSB3aXRoIGFuIGV4aXN0aW5nIGZpbGUuCisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3Jh
Z2UoV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKKyAgICBkb21haW5z
ID0gdGVzdC0+Z2V0RG9tYWlucygpOworICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNz
ZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7CisgICAgdGVzdC0+ZGVs
ZXRlQWxsQ29va2llcygpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKHRlc3Qt
PmdldERvbWFpbnMoKSksID09LCAwKTsKK30KKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2so
U291cFNlcnZlciogc2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0
aCwgR0hhc2hUYWJsZSosIFNvdXBDbGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYg
KG1lc3NhZ2UtPm1ldGhvZCAhPSBTT1VQX01FVEhPRF9HRVQpIHsKQEAgLTIxNCwxMCArMjkwLDEw
IEBAIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqCiAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMo
bWVzc2FnZSwgU09VUF9TVEFUVVNfT0spOwogICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2lu
ZGV4Lmh0bWwiKSkgewogICAgICAgICBjaGFyKiBpbmRleEh0bWwgPSBnX3N0cmR1cF9wcmludGYo
a0luZGV4SHRtbEZvcm1hdCwgc291cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSk7Ci0gICAgICAg
IHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywg
IlNldC1Db29raWUiLCAiZm9vPWJhciIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19y
ZXBsYWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImZvbz1iYXI7
IE1heC1BZ2U9NjAiKTsKICAgICAgICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2Ut
PnJlc3BvbnNlX2JvZHksIFNPVVBfTUVNT1JZX1RBS0UsIGluZGV4SHRtbCwgc3RybGVuKGluZGV4
SHRtbCkpOwogICAgIH0gZWxzZSBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pbWFnZS5wbmciKSkK
LSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9o
ZWFkZXJzLCAiU2V0LUNvb2tpZSIsICJiYXo9cXV4Iik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9o
ZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAi
YmF6PXF1eDsgTWF4LUFnZT02MCIpOwogICAgIGVsc2UKICAgICAgICAgZ19hc3NlcnRfbm90X3Jl
YWNoZWQoKTsKICAgICBzb3VwX21lc3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25z
ZV9ib2R5KTsKQEAgLTIyOCwxMiArMzA0LDE3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBrU2Vy
dmVyID0gbmV3IFdlYktpdFRlc3RTZXJ2ZXIoKTsKICAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2Fs
bGJhY2spOwogCisgICAga1RlbXBEaXJlY3RvcnkgPSBnX2Rpcl9tYWtlX3RtcCgiV2ViS2l0MlRl
c3RzLVhYWFhYWCIsIDApOworICAgIGdfYXNzZXJ0KGtUZW1wRGlyZWN0b3J5KTsKKwogICAgIENv
b2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiYWNjZXB0LXBvbGlj
eSIsIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0UG9saWN5KTsKICAgICBDb29raWVNYW5hZ2VyVGVz
dDo6YWRkKCJXZWJLaXRDb29raWVNYW5hZ2VyIiwgImRlbGV0ZS1jb29raWVzIiwgdGVzdENvb2tp
ZU1hbmFnZXJEZWxldGVDb29raWVzKTsKICAgICBDb29raWVNYW5hZ2VyVGVzdDo6YWRkKCJXZWJL
aXRDb29raWVNYW5hZ2VyIiwgImNvb2tpZXMtY2hhbmdlZCIsIHRlc3RDb29raWVNYW5hZ2VyQ29v
a2llc0NoYW5nZWQpOworICAgIENvb2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1h
bmFnZXIiLCAicGVyc2lzdGVudC1zdG9yYWdlIiwgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50
U3RvcmFnZSk7CiB9CiAKIHZvaWQgYWZ0ZXJBbGwoKQogewogICAgIGRlbGV0ZSBrU2VydmVyOwor
ICAgIGdfcm1kaXIoa1RlbXBEaXJlY3RvcnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IDdkYzIwZDUuLmNmMWMxNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgK
QEAgLTcwLDYgKzcwLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygpOwogICAgIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKIAorI2lm
IFVTRShTT1VQKQorICAgIHZvaWQgc2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3Ry
aW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpOworI2VuZGlmCisKICAgICB2
b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogCiAgICAgYm9vbCBzaG91bGRUZXJt
aW5hdGUoV2ViUHJvY2Vzc1Byb3h5KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4OTE0ZWQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3Vw
LmNwcApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb29raWVN
YW5hZ2VyUHJveHkuaCIKKworI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJD
b29raWVNYW5hZ2VyTWVzc2FnZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJp
bmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSkKK3sKKyAgICBtX3dlYkNvbnRl
eHQtPnNlbmRUb0FsbFByb2Nlc3Nlc1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShzdG9yYWdlUGF0
aCwgc3RvcmFnZVR5cGUpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKaW5kZXggYzBiZDFmMy4uMmJiNjM4ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1h
bmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2ll
TWFuYWdlci5oCkBAIC0zMCw2ICszMCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCisjaWYgVVNFKFNPVVApCisjaW5j
bHVkZSAiU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgorI2VuZGlmCisKIG5hbWVz
cGFjZSBDb3JlSVBDIHsKICAgICBjbGFzcyBBcmd1bWVudERlY29kZXI7CiAgICAgY2xhc3MgQ29u
bmVjdGlvbjsKQEAgLTYzLDYgKzY3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKTsKICAgICB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCk7CiAKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
KGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUpOworI2VuZGlmCisKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJDb29raWVNYW5hZ2VyTWVzc2Fn
ZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1
bWVudERlY29kZXIqKTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMTVk
ZTliNi4uMGFlMTE1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTMzLDQgKzMz
LDggQEAKICAgICAKICAgICB2b2lkIFN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAg
dm9pZCBTdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCisKKyNpZiBVU0UoU09VUCkKKyAgICBT
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShXVEY6OlN0cmluZyBzdG9yYWdlUGF0aCwgdWludDMy
X3Qgc3RvcmFnZVR5cGUpCisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcApp
bmRleCBkYTIxODA4Li5jZWU1YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCkBA
IC0yNiw4ICsyNiwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvb2tp
ZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIldlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphclNvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dv
YmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc3LDQgKzgxLDI3IEBAIEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgV2ViQ29va2llTWFuYWdlcjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KCkKICAgICByZXR1cm4gcG9saWN5OwogfQogCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFNvdXBDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCit7CisgICAgR1JlZlB0cjxTb3Vw
Q29va2llSmFyPiBqYXI7CisgICAgc3dpdGNoIChzdG9yYWdlVHlwZSkgeworICAgIGNhc2UgU291
cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVGV4dDoKKyAgICAgICAgamFyID0gYWRvcHRHUmVmKHNv
dXBfY29va2llX2phcl90ZXh0X25ldyhzdG9yYWdlUGF0aC51dGY4KCkuZGF0YSgpLCBGQUxTRSkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNR
TGl0ZToKKyAgICAgICAgamFyID0gYWRvcHRHUmVmKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVO
ZXcoc3RvcmFnZVBhdGgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgU291cENvb2tpZUphciogY3VycmVu
dEphciA9IFdlYkNvcmU6OnNvdXBDb29raWVKYXIoKTsKKyAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0
X2FjY2VwdF9wb2xpY3koamFyLmdldCgpLCBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xp
Y3koY3VycmVudEphcikpOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5k
bGU6OmRlZmF1bHRTZXNzaW9uKCk7CisgICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlKHNl
c3Npb24sIFNPVVBfU0VTU0lPTl9GRUFUVVJFKGN1cnJlbnRKYXIpKTsKKyAgICBzb3VwX3Nlc3Np
b25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoamFyLmdldCgpKSk7
CisKKyAgICBXZWJDb3JlOjpzZXRTb3VwQ29va2llSmFyKGphci5nZXQoKSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9D
b29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTc0MGM4Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENv
b2tpZUphclNxbGl0ZS5jcHAKQEAgLTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRT
b3VwQ29va2llSmFyU3FsaXRlLmgiCisKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0cnVjdCBfV2ViS2l0
U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUgeworICAgIFN0cmluZyBkYXRhYmFzZVBhdGg7Cisg
ICAgU1FMaXRlRGF0YWJhc2UgZGF0YWJhc2U7CisgICAgYm9vbCBpc0xvYWRpbmc7Cit9OworCitH
X0RFRklORV9UWVBFKFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUsIHdlYmtpdF9zb3VwX2Nvb2tp
ZV9qYXJfc3FsaXRlLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikKKworZW51bSB7CisgICAgQ09MVU1O
X0lELAorICAgIENPTFVNTl9OQU1FLAorICAgIENPTFVNTl9WQUxVRSwKKyAgICBDT0xVTU5fSE9T
VCwKKyAgICBDT0xVTU5fUEFUSCwKKyAgICBDT0xVTU5fRVhQSVJZLAorICAgIENPTFVNTl9MQVNU
X0FDQ0VTUywKKyAgICBDT0xVTU5fU0VDVVJFLAorICAgIENPTFVNTl9IVFRQX09OTFkKK307CisK
K3N0YXRpYyBib29sIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVPcGVuRGF0YWJhc2UoV2ViS2l0
U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyKQoreworICAgIFdlYktpdFNvdXBDb29raWVK
YXJTcWxpdGVQcml2YXRlKiBwcml2ID0gc3FsaXRlSmFyLT5wcml2OworICAgIGlmIChwcml2LT5k
YXRhYmFzZS5pc09wZW4oKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQoIXBy
aXYtPmRhdGFiYXNlUGF0aC5pc0VtcHR5KCkpOworICAgIGlmICghcHJpdi0+ZGF0YWJhc2Uub3Bl
bihwcml2LT5kYXRhYmFzZVBhdGgpKSB7CisgICAgICAgIGdfd2FybmluZygiQ2FuJ3Qgb3BlbiBk
YXRhYmFzZSAlcyIsIHByaXYtPmRhdGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXYtPmRhdGFiYXNlLnNldFN5bmNocm9ub3Vz
KFNRTGl0ZURhdGFiYXNlOjpTeW5jT2ZmKTsKKyAgICBwcml2LT5kYXRhYmFzZS5leGVjdXRlQ29t
bWFuZCgiUFJBR01BIHNlY3VyZV9kZWxldGUgPSAxOyIpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3N0YXRpYyBib29sIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVDcmVhdGVUYWJsZShXZWJL
aXRTb3VwQ29va2llSmFyU3FsaXRlKiBzcWxpdGVKYXIpCit7CisgICAgV2ViS2l0U291cENvb2tp
ZUphclNxbGl0ZVByaXZhdGUqIHByaXYgPSBzcWxpdGVKYXItPnByaXY7CisgICAgaWYgKHByaXYt
PmRhdGFiYXNlLnRhYmxlRXhpc3RzKCJtb3pfY29va2llcyIpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgIGlmICghcHJpdi0+ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJM
RSBtb3pfY29va2llcyAoaWQgSU5URUdFUiBQUklNQVJZIEtFWSwgbmFtZSBURVhULCB2YWx1ZSBU
RVhULCBob3N0IFRFWFQsIHBhdGggVEVYVCwgZXhwaXJ5IElOVEVHRVIsIGxhc3RBY2Nlc3NlZCBJ
TlRFR0VSLCBpc1NlY3VyZSBJTlRFR0VSLCBpc0h0dHBPbmx5IElOVEVHRVIpIikpIHsKKyAgICAg
ICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gY3JlYXRlIHRhYmxlIG1vel9jb29raWVzOiAoJWkpIC0g
JXMiLCBwcml2LT5kYXRhYmFzZS5sYXN0RXJyb3IoKSwgcHJpdi0+ZGF0YWJhc2UubGFzdEVycm9y
TXNnKCkpOworICAgICAgICBwcml2LT5kYXRhYmFzZS5jbG9zZSgpOworCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0U291cENvb2tpZUphclNxbGl0ZUxvYWQoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3Fs
aXRlSmFyKQoreworICAgIGlmICghd2Via2l0U291cENvb2tpZUphclNxbGl0ZU9wZW5EYXRhYmFz
ZShzcWxpdGVKYXIpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF3ZWJraXRTb3VwQ29va2ll
SmFyU3FsaXRlQ3JlYXRlVGFibGUoc3FsaXRlSmFyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHByaXYgPSBzcWxpdGVKYXItPnByaXY7
CisgICAgcHJpdi0+aXNMb2FkaW5nID0gdHJ1ZTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnko
cHJpdi0+ZGF0YWJhc2UsICJTRUxFQ1QgaWQsIG5hbWUsIHZhbHVlLCBob3N0LCBwYXRoLCBleHBp
cnksIGxhc3RBY2Nlc3NlZCwgaXNTZWN1cmUsIGlzSHR0cE9ubHkgRlJPTSBtb3pfY29va2llczsi
KTsKKyAgICBpZiAocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIGdf
d2FybmluZygiRmFpbGVkIHRvIHByZXBhcmUgYWxsIGNvb2tpZXMgcXVlcnkiKTsKKyAgICAgICAg
cHJpdi0+aXNMb2FkaW5nID0gZmFsc2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBT
b3VwQ29va2llSmFyKiBqYXIgPSBTT1VQX0NPT0tJRV9KQVIoc3FsaXRlSmFyKTsKKyAgICB0aW1l
X3Qgbm93ID0gdGltZSgwKTsKKyAgICBpbnQgcmVzdWx0OworICAgIHdoaWxlICgocmVzdWx0ID0g
cXVlcnkuc3RlcCgpKSA9PSBTUUxSZXN1bHRSb3cpIHsKKyAgICAgICAgaW50IGV4cGlyZVRpbWUg
PSBxdWVyeS5nZXRDb2x1bW5JbnQoQ09MVU1OX0VYUElSWSk7CisgICAgICAgIGlmIChub3cgPj0g
ZXhwaXJlVGltZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFNvdXBDb29raWUq
IGNvb2tpZSA9IHNvdXBfY29va2llX25ldyhxdWVyeS5nZXRDb2x1bW5UZXh0KENPTFVNTl9OQU1F
KS51dGY4KCkuZGF0YSgpLCBxdWVyeS5nZXRDb2x1bW5UZXh0KENPTFVNTl9WQUxVRSkudXRmOCgp
LmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1
ZXJ5LmdldENvbHVtblRleHQoQ09MVU1OX0hPU1QpLnV0ZjgoKS5kYXRhKCksIHF1ZXJ5LmdldENv
bHVtblRleHQoQ09MVU1OX1BBVEgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVUaW1lIC0gbm93IDw9IEdfTUFYSU5UID8g
ZXhwaXJlVGltZSAtIG5vdyA6IEdfTUFYSU5UKTsKKyAgICAgICAgaWYgKHF1ZXJ5LmdldENvbHVt
bkludChDT0xVTU5fU0VDVVJFKSkKKyAgICAgICAgICAgIHNvdXBfY29va2llX3NldF9zZWN1cmUo
Y29va2llLCBUUlVFKTsKKyAgICAgICAgaWYgKHF1ZXJ5LmdldENvbHVtbkludChDT0xVTU5fSFRU
UF9PTkxZKSkKKyAgICAgICAgICAgIHNvdXBfY29va2llX3NldF9odHRwX29ubHkoY29va2llLCBU
UlVFKTsKKworICAgICAgICBzb3VwX2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShqYXIsIGNvb2tpZSk7
CisgICAgfQorCisgICAgaWYgKHJlc3VsdCAhPSBTUUxSZXN1bHREb25lKQorICAgICAgICBnX3dh
cm5pbmcoIkVycm9yIHJlYWRpbmcgY29va2llcyBmcm9tIGRhdGFiYXNlIik7CisgICAgcHJpdi0+
aXNMb2FkaW5nID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBDb29raWVKYXJT
cWxpdGVJbnNlcnRDb29raWUoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyLCBT
b3VwQ29va2llKiBjb29raWUpCit7CisgICAgaWYgKCFjb29raWUgfHwgIWNvb2tpZS0+ZXhwaXJl
cykKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghd2Via2l0U291cENvb2tpZUphclNxbGl0ZUNy
ZWF0ZVRhYmxlKHNxbGl0ZUphcikpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFNvdXBD
b29raWVKYXJTcWxpdGVQcml2YXRlKiBwcml2ID0gc3FsaXRlSmFyLT5wcml2OworICAgIFNRTGl0
ZVN0YXRlbWVudCBxdWVyeShwcml2LT5kYXRhYmFzZSwgIklOU0VSVCBJTlRPIG1vel9jb29raWVz
IFZBTFVFUyhOVUxMLCA/LCA/LCA/LCA/LCA/LCBOVUxMLCA/LCA/KTsiKTsKKyAgICBpZiAocXVl
cnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIGdfd2FybmluZygiRmFpbGVk
IHRvIHByZXBhcmUgaW5zZXJ0IGNvb2tpZXMgcXVlcnkiKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIHF1ZXJ5LmJpbmRUZXh0KDEsIFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5uYW1l
KSk7CisgICAgcXVlcnkuYmluZFRleHQoMiwgU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPnZhbHVl
KSk7CisgICAgcXVlcnkuYmluZFRleHQoMywgU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPmRvbWFp
bikpOworICAgIHF1ZXJ5LmJpbmRUZXh0KDQsIFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5wYXRo
KSk7CisgICAgcXVlcnkuYmluZEludCg1LCAoZ3Vsb25nKXNvdXBfZGF0ZV90b190aW1lX3QoY29v
a2llLT5leHBpcmVzKSk7CisgICAgcXVlcnkuYmluZEludCg2LCBjb29raWUtPnNlY3VyZSk7Cisg
ICAgcXVlcnkuYmluZEludCg3LCBjb29raWUtPmh0dHBfb25seSk7CisgICAgaWYgKHF1ZXJ5LnN0
ZXAoKSAhPSBTUUxSZXN1bHREb25lKQorICAgICAgICBnX3dhcm5pbmcoIkVycm9yIGFkZGluZyBj
b29raWUgKG5hbWU9JXMsIGRvbWFpbj0lcykgdG8gZGF0YWJhc2UiLCBjb29raWUtPm5hbWUsIGNv
b2tpZS0+bmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVE
ZWxldGVDb29raWUoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyLCBTb3VwQ29v
a2llKiBjb29raWUpCit7CisgICAgaWYgKCFjb29raWUpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoIXdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVDcmVhdGVUYWJsZShzcWxpdGVKYXIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSogcHJp
diA9IHNxbGl0ZUphci0+cHJpdjsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkocHJpdi0+ZGF0
YWJhc2UsICJERUxFVEUgRlJPTSBtb3pfY29va2llcyBXSEVSRSBuYW1lID0gKD8pIEFORCBob3N0
ID0gKD8pOyIpOworICAgIGlmIChxdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKKyAg
ICAgICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gcHJlcGFyZSBkZWxldGUgY29va2llcyBxdWVyeSIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcXVlcnkuYmluZFRleHQoMSwgU3RyaW5n
Ojpmcm9tVVRGOChjb29raWUtPm5hbWUpKTsKKyAgICBxdWVyeS5iaW5kVGV4dCgyLCBTdHJpbmc6
OmZyb21VVEY4KGNvb2tpZS0+ZG9tYWluKSk7CisgICAgaWYgKHF1ZXJ5LnN0ZXAoKSAhPSBTUUxS
ZXN1bHREb25lKQorICAgICAgICBnX3dhcm5pbmcoIkVycm9yIGRlbGV0aW5nIGNvb2tpZSAobmFt
ZT0lcywgZG9tYWluPSVzKSBmcm9tIGRhdGFiYXNlIiwgY29va2llLT5uYW1lLCBjb29raWUtPm5h
bWUpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlQ2hhbmdlZChT
b3VwQ29va2llSmFyKiBqYXIsIFNvdXBDb29raWUqIG9sZENvb2tpZSwgU291cENvb2tpZSogbmV3
Q29va2llKQoreworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUqIHNxbGl0ZUphciA9IFdF
QktJVF9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFKGphcik7CisgICAgaWYgKHNxbGl0ZUphci0+cHJp
di0+aXNMb2FkaW5nKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF3ZWJraXRTb3VwQ29va2ll
SmFyU3FsaXRlT3BlbkRhdGFiYXNlKHNxbGl0ZUphcikpCisgICAgICAgIHJldHVybjsKKworICAg
IHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVEZWxldGVDb29raWUoc3FsaXRlSmFyLCBvbGRDb29r
aWUpOworICAgIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVJbnNlcnRDb29raWUoc3FsaXRlSmFy
LCBuZXdDb29raWUpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRl
RmluYWxpemUoR09iamVjdCogb2JqZWN0KQoreworICAgIFdFQktJVF9TT1VQX0NPT0tJRV9KQVJf
U1FMSVRFKG9iamVjdCktPnByaXYtPn5XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSgp
OworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlX3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3Vw
X2Nvb2tpZV9qYXJfc3FsaXRlX2luaXQoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRl
SmFyKQoreworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlKiBwcml2ID0gR19U
WVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKHNxbGl0ZUphciwgV0VCS0lUX1RZUEVfU09VUF9DT09L
SUVfSkFSX1NRTElURSwgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUpOworICAgIHNx
bGl0ZUphci0+cHJpdiA9IHByaXY7CisgICAgbmV3IChwcml2KSBXZWJLaXRTb3VwQ29va2llSmFy
U3FsaXRlUHJpdmF0ZSgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9jb29raWVfamFy
X3NxbGl0ZV9jbGFzc19pbml0KFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcyogc3FsaXRl
SmFyQ2xhc3MpCit7CisgICAgU291cENvb2tpZUphckNsYXNzKiBjb29raWVKYXJDbGFzcyA9IFNP
VVBfQ09PS0lFX0pBUl9DTEFTUyhzcWxpdGVKYXJDbGFzcyk7CisgICAgY29va2llSmFyQ2xhc3Mt
PmNoYW5nZWQgPSB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlQ2hhbmdlZDsKKworICAgIEdPYmpl
Y3RDbGFzcyogZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moc3FsaXRlSmFyQ2xhc3MpOwor
ICAgIGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRmlu
YWxpemU7CisKKyAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoc3FsaXRlSmFyQ2xhc3MsIHNp
emVvZihXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSkpOworfQorCitTb3VwQ29va2ll
SmFyKiB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlTmV3KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQ
YXRoKQoreworICAgIEFTU0VSVCghcHJpdi0+ZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSk7CisgICAg
V2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyID0gV0VCS0lUX1NPVVBfQ09PS0lF
X0pBUl9TUUxJVEUoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJ
VEUsIE5VTEwpKTsKKyAgICBzcWxpdGVKYXItPnByaXYtPmRhdGFiYXNlUGF0aCA9IGRhdGFiYXNl
UGF0aDsKKyAgICB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlTG9hZChzcWxpdGVKYXIpOworICAg
IHJldHVybiBTT1VQX0NPT0tJRV9KQVIoc3FsaXRlSmFyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxp
dGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBD
b29raWVKYXJTcWxpdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmEw
OTA0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0U291cENvb2tp
ZUphclNxbGl0ZV9oCisjZGVmaW5lIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVfaAorCisjaW5j
bHVkZSA8bGlic291cC9zb3VwLWNvb2tpZS1qYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1NPVVBfQ09P
S0lFX0pBUl9TUUxJVEUgICAgICAgICAgICAod2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVf
Z2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUob2JqKSAg
ICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIFdFQktJVF9UWVBF
X1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUsIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUpKQorI2Rl
ZmluZSBXRUJLSVRfSVNfU09VUF9DT09LSUVfSkFSX1NRTElURShvYmopICAgICAgICAgKEdfVFlQ
RV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgV0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFS
X1NRTElURSkpCisjZGVmaW5lIFdFQktJVF9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFX0NMQVNTKGts
YXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX1NP
VVBfQ09PS0lFX0pBUl9TUUxJVEUsIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcykpCisj
ZGVmaW5lIFdFQktJVF9JU19TT1VQX0NPT0tJRV9KQVJfU1FMSVRFX0NMQVNTKGtsYXNzKSAoR19U
WVBFX0NIRUNLX0NMQVNTX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJf
U1FMSVRFKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEVfR0VUX0NMQVNT
KG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgV0VCS0lUX1RZUEVfU09V
UF9DT09LSUVfSkFSX1NRTElURSwgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZUNsYXNzKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUgV2ViS2l0U291cENvb2tp
ZUphclNxbGl0ZTsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlQ2xh
c3MgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2
YXRlOworCitzdHJ1Y3QgX1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUgeworICAgIFNvdXBDb29r
aWVKYXIgcGFyZW50OworCisgICAgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHBy
aXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcyB7CisgICAg
U291cENvb2tpZUphckNsYXNzIHBhcmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3NvdXBf
Y29va2llX2phcl9zcWxpdGVfZ2V0X3R5cGUoKTsKK1NvdXBDb29raWVKYXIqIHdlYmtpdFNvdXBD
b29raWVKYXJTcWxpdGVOZXcoY29uc3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworCitHX0VORF9E
RUNMUworCisjZW5kaWYgLy8gV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5oCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CmluZGV4IGY4OTg3MGMuLmYzYjAy
NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CkBA
IC0zMTA5LDYgKzMxMDksNyBAQCBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0
aW9uKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZmlsZV9zdGF0ZQogICAgICAgICAgICAg
ICAgIGFuZCBub3QgKGZpbGVuYW1lLmZpbmQoJ2d0aycpID49IDAgYW5kIG1vZGlmaWVkX2lkZW50
aWZpZXIuc3RhcnRzd2l0aCgnd2Via2l0XycpID49IDApCiAgICAgICAgICAgICAgICAgYW5kIG5v
dCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3RzdF8nKQogICAgICAgICAgICAgICAg
IGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCd3ZWJraXRfZG9tX29iamVj
dF8nKQorICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3
aXRoKCd3ZWJraXRfc291cCcpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVu
dGlmaWVyLnN0YXJ0c3dpdGgoJ05QTl8nKQogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZp
ZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCdOUFBfJykKICAgICAgICAgICAgICAgICBhbmQgbm90
IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnTlBfJykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147331</attachid>
            <date>2012-06-13 08:53:43 -0700</date>
            <delta_ts>2012-06-13 23:14:30 -0700</delta_ts>
            <desc>Updated patch to apply on current git master</desc>
            <filename>wk2-persistent-cookies2.diff</filename>
            <type>text/plain</type>
            <size>36785</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVT
dG9yYWdlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llU3RvcmFnZVNvdXAuY3BwCmluZGV4IDJkNzE3NDcuLmYzMDllNWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VT
b3VwLmNwcApAQCAtMzcsOCArMzcsMTAgQEAgdm9pZCBzZXRDb29raWVTdG9yYWdlUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB9CiAKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRF
R0lFUykKLXN0YXRpYyB2b2lkIHNvdXBDb29raWVzQ2hhbmdlZChTb3VwQ29va2llSmFyKiwgU291
cENvb2tpZSosIFNvdXBDb29raWUqLCBncG9pbnRlcikKK3N0YXRpYyB2b2lkIHNvdXBDb29raWVz
Q2hhbmdlZChTb3VwQ29va2llSmFyKiBqYXIsIFNvdXBDb29raWUqLCBTb3VwQ29va2llKiwgZ3Bv
aW50ZXIpCiB7CisgICAgaWYgKGphciAhPSBzb3VwQ29va2llSmFyKCkpCisgICAgICAgIHJldHVy
bjsKICAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPm5vdGlmeUNv
b2tpZXNDaGFuZ2VkKCk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KaW5kZXggMDE2ZDY4
MS4uOGI5ODY4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KKysr
IGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0KQEAgLTQwLDYgKzQwLDcgQEAgbGlid2Vi
a2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9WRVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5P
Ul9WRVJTSU9OQF9sYV9DUFAKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1
Z2lucyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTmV0c2Nh
cGUgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBl
L3gxMSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2VzcyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DIFwKQEAgLTQxMyw2ICs0MTQsNyBAQCBQcm9ncmFtc19XZWJLaXRQbHVnaW5Qcm9j
ZXNzX0NQUEZMQUdTID0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9M
YXVuY2hlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
LyBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlLyBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAgXAogCS1JJCh0
b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIgXAogCS1JJCh0b3BfYnVpbGRkaXIp
L0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVkZSBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlL0phdmFTY3JpcHRDb3JlIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5saXN0LmFtCmluZGV4IDg1MWQ2MjYuLjIwMzNkZjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtNDA0LDYgKzQwNCw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmNwcCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJp
bmdQYWlyVmVjdG9yLmggXAorCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1NvdXBDb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1RleHRDaGVj
a2VyU3RhdGUuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1VzZXJNZXNzYWdlQ29kZXJzLmgg
XAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9VcGRhdGVJbmZvLmNwcCBcCkBAIC03MzksNiArNzQw
LDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUHJv
Y2Vzc01vZGVsLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1Rp
bWVyLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIu
aCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5
U291cC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0
TWFuYWdlckNsaWVudC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYlNv
dXBSZXF1ZXN0TWFuYWdlckNsaWVudC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291
cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgXApAQCAtODQyLDYgKzg0NCw4IEBAIHdl
YmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuY3BwIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRl
LmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkLmNwcCBc
CiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWQuaCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRBdXRoZW50aWNhdGlvbkNs
aWVudC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1NvdXBDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1Nv
dXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4wNjYyMTgwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL3NvdXAvU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oCkBAIC0wLDAgKzEsMzkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBTb3VwQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlX2gKKyNkZWZpbmUgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZV9o
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVtIHsKKyAgICBTb3VwQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUZXh0ID0gMCwKKyAgICBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VTUUxpdGUg
PSAxCit9OwordHlwZWRlZiB1bnNpZ25lZCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBl
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFNvdXBDb29raWVQZXJzaXN0
ZW50U3RvcmFnZVR5cGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcAppbmRleCA3ZDhhMTBlLi44NzkwYzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVN
YW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b29raWVNYW5hZ2VyLmNwcApAQCAtMjAsNiArMjAsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXIuaCIKIAorI2luY2x1ZGUgIlNvdXBDb29raWVQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGUuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHku
aCIKICNpbmNsdWRlICJXZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YktpdEVudW1UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KQEAgLTQx
LDYgKzQzLDkgQEAgc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9Owog
CiBHX0RFRklORV9UWVBFKFdlYktpdENvb2tpZU1hbmFnZXIsIHdlYmtpdF9jb29raWVfbWFuYWdl
ciwgR19UWVBFX09CSkVDVCkKIAorQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRf
Q09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhULCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3Jh
Z2VUZXh0KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0NPT0tJRV9QRVJT
SVNURU5UX1NUT1JBR0VfU1FMSVRFLCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VTUUxpdGUp
OworCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9DT09LSUVfUE9MSUNZX0FD
Q0VQVF9BTFdBWVMsIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVIsIGtX
S0hUVFBDb29raWVBY2NlcHRQb2xpY3lOZXZlcik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9OT19USElSRF9QQVJUWSwga1dLSFRUUENv
b2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKTsKQEAgLTEwNCw2ICsx
MDksMzAgQEAgV2ViS2l0Q29va2llTWFuYWdlciogd2Via2l0Q29va2llTWFuYWdlckNyZWF0ZShX
S0Nvb2tpZU1hbmFnZXJSZWYgd2tDb29raWVNYW5hZ2UKIH0KIAogLyoqCisgKiB3ZWJraXRfY29v
a2llX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZToKKyAqIEBjb29raWVfbWFuYWdlcjog
YSAjV2ViS2l0Q29va2llTWFuYWdlcgorICogQGZpbGVuYW1lOiB0aGUgZmlsZW5hbWUgdG8gcmVh
ZCB0by93cml0ZSBmcm9tCisgKiBAc3RvcmFnZTogYSAjV2ViS2l0Q29va2llUGVyc2lzdGVudFN0
b3JhZ2UKKyAqCisgKiBTZXQgdGhlIEBmaWxlbmFtZSB3aGVyZSBub24tc2Vzc2lvbiBjb29raWVz
IGFyZSBzdG9yZWQgcGVyc2lzdGVudGx5IHVzaW5nCisgKiBAc3RvcmFnZSBhcyB0aGUgZm9ybWF0
IHRvIHJlYWQvd3JpdGUgdGhlIGNvb2tpZXMuCisgKiBDb29raWVzIGFyZSBpbml0aWFsbHkgcmVh
ZCBmcm9tIEBmaWxlbmFtZSB0byBjcmVhdGUgYW4gaW5pdGlhbCBzZXQgb2YgY29va2llcy4KKyAq
IFRoZW4sIG5vbi1zZXNzaW9uIGNvb2tpZXMgd2lsbCBiZSB3cml0dGVuIHRvIEBmaWxlbmFtZSB3
aGVuIHRoZSBXZWJLaXRDb29raWVNYW5hZ2VyOjpjaGFuZ2VkCisgKiBzaWduYWwgaXMgZW1pdHRl
ZC4KKyAqIEJ5IGRlZmF1bHQsIEBjb29raWVfbWFuYWdlciBkb2Vzbid0IHN0b3JlIHRoZSBjb29r
aWVzIHBlcnNpc3Rlbmx5LCBzbyB5b3UgbmVlZCB0byBjYWxsIHRoaXMKKyAqIG1ldGhvZCB0byBr
ZWVwIGNvb2tpZXMgc2F2ZWQgYWNyb3NzIHNlc3Npb25zLgorICovCit2b2lkIHdlYmtpdF9jb29r
aWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKFdlYktpdENvb2tpZU1hbmFnZXIqIG1h
bmFnZXIsIGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBXZWJLaXRDb29raWVQZXJzaXN0ZW50U3RvcmFn
ZSBzdG9yYWdlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX0NPT0tJRV9NQU5B
R0VSKG1hbmFnZXIpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGZpbGVuYW1lKTsKKworICAgIFdL
Q29va2llTWFuYWdlclN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKG1hbmFnZXItPnByaXYtPndr
Q29va2llTWFuYWdlci5nZXQoKSk7CisgICAgdG9JbXBsKG1hbmFnZXItPnByaXYtPndrQ29va2ll
TWFuYWdlci5nZXQoKSktPnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFN0cmluZzo6ZnJvbVVU
RjgoZmlsZW5hbWUpLCBzdG9yYWdlKTsKKyAgICBXS0Nvb2tpZU1hbmFnZXJTdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMobWFuYWdlci0+cHJpdi0+d2tDb29raWVNYW5hZ2VyLmdldCgpKTsKK30K
KworLyoqCiAgKiB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X2FjY2VwdF9wb2xpY3k6CiAgKiBA
Y29va2llX21hbmFnZXI6IGEgI1dlYktpdENvb2tpZU1hbmFnZXIKICAqIEBwb2xpY3k6IGEgI1dl
YktpdENvb2tpZUFjY2VwdFBvbGljeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5oCmluZGV4IDI0NzJkOTYuLmMyMDlkNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tp
ZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRD
b29raWVNYW5hZ2VyLmgKQEAgLTQyLDYgKzQyLDIwIEBAIHR5cGVkZWYgc3RydWN0IF9XZWJLaXRD
b29raWVNYW5hZ2VyQ2xhc3MgICBXZWJLaXRDb29raWVNYW5hZ2VyQ2xhc3M7CiB0eXBlZGVmIHN0
cnVjdCBfV2ViS2l0Q29va2llTWFuYWdlclByaXZhdGUgV2ViS2l0Q29va2llTWFuYWdlclByaXZh
dGU7CiAKIC8qKgorICogV2ViS2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2U6CisgKiBAV0VCS0lU
X0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVDogQ29va2llcyBhcmUgc3RvcmVkIGluIGEg
dGV4dAorICogIGZpbGUgaW4gdGhlIE1vemlsbGEgImNvb2tpZXMudHh0IiBmb3JtYXQuCisgKiBA
V0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFOiBDb29raWVzIGFyZSBzdG9y
ZWQgaW4gYSBTUUxpdGUKKyAqICBmaWxlIGluIHRoZSBuZXcgTW96aWxsYSBmb3JtYXQuCisgKgor
ICogRW51bSB2YWx1ZXMgdXNlZCB0byBkZW5vdGUgdGhlIGNvb2tpZSBwZXJzaXN0ZW50IHN0b3Jh
Z2UgdHlwZXMuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgICAgV0VCS0lUX0NPT0tJRV9QRVJTSVNU
RU5UX1NUT1JBR0VfVEVYVCwKKyAgICBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9T
UUxJVEUKK30gV2ViS2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2U7CisKKy8qKgogICogV2ViS2l0
Q29va2llQWNjZXB0UG9saWN5OgogICogQFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9BTFdB
WVM6IEFjY2VwdCBhbGwgY29va2llcyB1bmNvbmRpdGlvbmFsbHkuCiAgKiBAV0VCS0lUX0NPT0tJ
RV9QT0xJQ1lfQUNDRVBUX05FVkVSOiBSZWplY3QgYWxsIGNvb2tpZXMgdW5jb25kaXRpb25hbGx5
LgpAQCAtNjksMzcgKzgzLDQyIEBAIFdFQktJVF9BUEkgR1R5cGUKIHdlYmtpdF9jb29raWVfbWFu
YWdlcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQ
SSB2b2lkCi13ZWJraXRfY29va2llX21hbmFnZXJfc2V0X2FjY2VwdF9wb2xpY3kgICAgICAgICAg
ICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvb2tp
ZUFjY2VwdFBvbGljeSBwb2xpY3kpOword2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0
ZW50X3N0b3JhZ2UgICAgICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICAgICAgKmNvb2tp
ZV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgKmZpbGVuYW1lLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlIHN0b3JhZ2UpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtp
dF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvbGljeSAgICAgICAgICAgICAgIChXZWJLaXRD
b29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb29raWVBY2NlcHRQ
b2xpY3kgICAgICBwb2xpY3kpOwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9jb29raWVfbWFu
YWdlcl9nZXRfYWNjZXB0X3BvbGljeSAgICAgICAgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2Vy
ICAgICAqY29va2llX21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgKmNhbmNlbGxhYmxl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICBjYWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAg
ICAgdXNlcl9kYXRhKTsKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeSAg
ICAgICAgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNh
bGxiYWNrICAgICAgICAgICBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAgICB1
c2VyX2RhdGEpOwogCiBXRUJLSVRfQVBJIFdlYktpdENvb2tpZUFjY2VwdFBvbGljeQotd2Via2l0
X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5X2ZpbmlzaCAgICAgICAgKFdlYktpdENv
b2tpZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAq
cmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgKiplcnJvcik7Cit3ZWJraXRfY29va2llX21h
bmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3lfZmluaXNoICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdl
ciAgICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgICAgICAq
cmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIAogV0VCS0lUX0FQ
SSB2b2lkCi13ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzICAg
ICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJs
ZSAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAgICAgY2FsbGJh
Y2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSk7Cit3ZWJraXRfY29va2llX21h
bmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdl
ciAgICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAgICAgICAgICAgICAgICAq
Y2FuY2VsbGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgICAgY2FsbGJhY2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50
ZXIgICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKIAogV0VCS0lUX0FQSSBnY2hhciAq
Kgotd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llc19maW5pc2gg
KFdlYktpdENvb2tpZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAg
ICAgICAgICAqcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgKiplcnJvcik7Cit3ZWJraXRf
Y29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2ZpbmlzaCAoV2ViS2l0Q29v
a2llTWFuYWdlciAgICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAg
ICAgICAgICAqcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAgICAgICAgICAgICAqKmVycm9yKTsKIAog
V0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Nvb2tpZXNfZm9y
X2RvbWFpbiAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGdjaGFyICAgICAgICAgICAgICpkb21haW4pOword2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2Rl
bGV0ZV9jb29raWVzX2Zvcl9kb21haW4gICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICAg
ICAgKmNvb2tpZV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgICAgICAgICAgICAgKmRvbWFpbik7
CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2RlbGV0ZV9hbGxfY29v
a2llcyAgICAgICAgICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdl
cik7Cit3ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2FsbF9jb29raWVzICAgICAgICAgICAg
ICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgICAgICAqY29va2llX21hbmFnZXIpOwogCiBHX0VO
RF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9k
b2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dAppbmRleCBjZTY5MzczLi5lNGQ5MDg2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtp
dDJndGstc2VjdGlvbnMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKQEAgLTYyOCw3ICs2MjgsOSBAQCB3ZWJraXRf
ZmluZF9jb250cm9sbGVyX2dldF90eXBlCiA8U0VDVElPTj4KIDxGSUxFPldlYktpdENvb2tpZU1h
bmFnZXI8L0ZJTEU+CiBXZWJLaXRDb29raWVNYW5hZ2VyCitXZWJLaXRDb29raWVQZXJzaXN0ZW50
U3RvcmFnZQogV2ViS2l0Q29va2llQWNjZXB0UG9saWN5Cit3ZWJraXRfY29va2llX21hbmFnZXJf
c2V0X3BlcnNpc3RlbnRfc3RvcmFnZQogd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRf
cG9saWN5CiB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3kKIHdlYmtpdF9j
b29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeV9maW5pc2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb29raWVNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb29raWVNYW5hZ2Vy
LmNwcAppbmRleCAxZGRmZDgyLi4yZmU4OTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwCkBA
IC0yMSw4ICsyMSwxMCBAQAogCiAjaW5jbHVkZSAiV2ViS2l0VGVzdFNlcnZlci5oIgogI2luY2x1
ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KIAogc3RhdGljIFdl
YktpdFRlc3RTZXJ2ZXIqIGtTZXJ2ZXI7CitzdGF0aWMgY2hhcioga1RlbXBEaXJlY3Rvcnk7CiAK
IHN0YXRpYyBjb25zdCBjaGFyKiBrRmlyc3RQYXJ0eURvbWFpbiA9ICIxMjcuMC4wLjEiOwogc3Rh
dGljIGNvbnN0IGNoYXIqIGtUaGlyZFBhcnR5RG9tYWluID0gImxvY2FsaG9zdCI7CkBAIC01OCw2
ICs2MCwzMCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBnX3N0cmZyZWV2KG1fZG9tYWlucyk7
CiAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfbWF0Y2hlZChtX2Nvb2tpZU1h
bmFnZXIsIEdfU0lHTkFMX01BVENIX0RBVEEsIDAsIDAsIDAsIDAsIHRoaXMpOworICAgICAgICBp
ZiAobV9jb29raWVzVGV4dEZpbGUpCisgICAgICAgICAgICBnX3VubGluayhtX2Nvb2tpZXNUZXh0
RmlsZS5nZXQoKSk7CisgICAgICAgIGlmIChtX2Nvb2tpZXNTUUxpdGVGaWxlKQorICAgICAgICAg
ICAgZ191bmxpbmsobV9jb29raWVzU1FMaXRlRmlsZS5nZXQoKSk7CisgICAgfQorCisgICAgdm9p
ZCBzZXRQZXJzaXN0ZW50U3RvcmFnZShXZWJLaXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSBzdG9y
YWdlKQorICAgIHsKKyAgICAgICAgY29uc3QgY2hhciogZmlsZW5hbWUgPSAwOworICAgICAgICBz
d2l0Y2ggKHN0b3JhZ2UpIHsKKyAgICAgICAgY2FzZSBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRf
U1RPUkFHRV9URVhUOgorICAgICAgICAgICAgaWYgKCFtX2Nvb2tpZXNUZXh0RmlsZSkKKyAgICAg
ICAgICAgICAgICBtX2Nvb2tpZXNUZXh0RmlsZS5zZXQoZ19idWlsZF9maWxlbmFtZShrVGVtcERp
cmVjdG9yeSwgImNvb2tpZXMudHh0IiwgTlVMTCkpOworICAgICAgICAgICAgZmlsZW5hbWUgPSBt
X2Nvb2tpZXNUZXh0RmlsZS5nZXQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NRTElURToKKyAgICAgICAgICAgIGlm
ICghbV9jb29raWVzU1FMaXRlRmlsZSkKKyAgICAgICAgICAgICAgICBtX2Nvb2tpZXNTUUxpdGVG
aWxlLnNldChnX2J1aWxkX2ZpbGVuYW1lKGtUZW1wRGlyZWN0b3J5LCAiY29va2llcy5kYiIsIE5V
TEwpKTsKKyAgICAgICAgICAgIGZpbGVuYW1lID0gbV9jb29raWVzU1FMaXRlRmlsZS5nZXQoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZ19hc3Nl
cnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgfQorICAgICAgICB3ZWJraXRfY29va2llX21hbmFn
ZXJfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZShtX2Nvb2tpZU1hbmFnZXIsIGZpbGVuYW1lLCBzdG9y
YWdlKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBnZXRBY2NlcHRQb2xpY3lSZWFkeUNhbGxi
YWNrKEdPYmplY3QqIG9iamVjdCwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2ludGVyIHVzZXJE
YXRhKQpAQCAtMTI5LDYgKzE1NSw4IEBAIHB1YmxpYzoKICAgICBjaGFyKiogbV9kb21haW5zOwog
ICAgIGJvb2wgbV9jb29raWVzQ2hhbmdlZDsKICAgICBib29sIG1fZmluaXNoTG9vcFdoZW5Db29r
aWVzQ2hhbmdlOworICAgIEdPd25QdHI8Y2hhcj4gbV9jb29raWVzVGV4dEZpbGU7CisgICAgR093
blB0cjxjaGFyPiBtX2Nvb2tpZXNTUUxpdGVGaWxlOwogfTsKIAogc3RhdGljIHZvaWQgdGVzdENv
b2tpZU1hbmFnZXJBY2NlcHRQb2xpY3koQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBv
aW50ZXIpCkBAIC0yMDQsNiArMjMyLDU0IEBAIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2Vy
Q29va2llc0NoYW5nZWQoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdjb25zdHBvaW50CiAgICAg
Z19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RD
b29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2UoQ29va2llTWFuYWdlclRlc3QqIHRlc3QsIGdj
b25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+c2V0QWNjZXB0UG9saWN5KFdFQktJVF9DT09LSUVf
UE9MSUNZX0FDQ0VQVF9BTFdBWVMpOworCisgICAgLy8gVGV4dCBzdG9yYWdlIHVzaW5nIGEgbmV3
IGZpbGUuCisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NPT0tJRV9QRVJT
SVNURU5UX1NUT1JBR0VfVEVYVCk7CisgICAgY2hhcioqIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21h
aW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Ry
dl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsKKworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+
Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwiKS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRp
bExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0KHRlc3QtPm1fY29va2llc0NoYW5nZWQpOwor
ICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlucyk7
CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsKKwor
CisgICAgLy8gU1FMaXRlIHN0b3JhZ2UgdXNpbmcgYSBuZXcgZmlsZS4KKyAgICB0ZXN0LT5zZXRQ
ZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUp
OworICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlu
cyk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAwKTsK
KworICAgIHRlc3QtPmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2luZGV4Lmh0bWwi
KS5kYXRhKCkpOworICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNz
ZXJ0KHRlc3QtPm1fY29va2llc0NoYW5nZWQpOworICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21h
aW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Ry
dl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsKKworICAgIC8vIFRleHQgc3RvcmFnZSB1c2luZyBh
biBleGlzdGluZyBmaWxlLgorICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9D
T09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQpOworICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXRE
b21haW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlucyk7CisgICAgZ19hc3NlcnRfY21waW50KGdf
c3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsKKyAgICB0ZXN0LT5kZWxldGVBbGxDb29raWVz
KCk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgodGVzdC0+Z2V0RG9tYWlucygp
KSwgPT0sIDApOworCisgICAgLy8gU1FMaXRlIHN0b3JhZ2Ugd2l0aCBhbiBleGlzdGluZyBmaWxl
LgorICAgIHRlc3QtPnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVfUEVSU0lTVEVO
VF9TVE9SQUdFX1NRTElURSk7CisgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAg
ICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChk
b21haW5zKSwgPT0sIDIpOworICAgIHRlc3QtPmRlbGV0ZUFsbENvb2tpZXMoKTsKKyAgICBnX2Fz
c2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21haW5zKCkpLCA9PSwgMCk7Cit9
CisKIHN0YXRpYyB2b2lkIHNlcnZlckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1l
c3NhZ2UqIG1lc3NhZ2UsIGNvbnN0IGNoYXIqIHBhdGgsIEdIYXNoVGFibGUqLCBTb3VwQ2xpZW50
Q29udGV4dCosIGdwb2ludGVyKQogewogICAgIGlmIChtZXNzYWdlLT5tZXRob2QgIT0gU09VUF9N
RVRIT0RfR0VUKSB7CkBAIC0yMTQsMTAgKzI5MCwxMCBAQCBzdGF0aWMgdm9pZCBzZXJ2ZXJDYWxs
YmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBjb25zdCBjaGFy
KgogICAgIHNvdXBfbWVzc2FnZV9zZXRfc3RhdHVzKG1lc3NhZ2UsIFNPVVBfU1RBVFVTX09LKTsK
ICAgICBpZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pbmRleC5odG1sIikpIHsKICAgICAgICAgY2hh
ciogaW5kZXhIdG1sID0gZ19zdHJkdXBfcHJpbnRmKGtJbmRleEh0bWxGb3JtYXQsIHNvdXBfc2Vy
dmVyX2dldF9wb3J0KHNlcnZlcikpOwotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBs
YWNlKG1lc3NhZ2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImZvbz1iYXIiKTsK
KyAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9o
ZWFkZXJzLCAiU2V0LUNvb2tpZSIsICJmb289YmFyOyBNYXgtQWdlPTYwIik7CiAgICAgICAgIHNv
dXBfbWVzc2FnZV9ib2R5X2FwcGVuZChtZXNzYWdlLT5yZXNwb25zZV9ib2R5LCBTT1VQX01FTU9S
WV9UQUtFLCBpbmRleEh0bWwsIHN0cmxlbihpbmRleEh0bWwpKTsKICAgICB9IGVsc2UgaWYgKGdf
c3RyX2VxdWFsKHBhdGgsICIvaW1hZ2UucG5nIikpCi0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFk
ZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiYmF6
PXF1eCIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJl
c3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImJhej1xdXg7IE1heC1BZ2U9NjAiKTsKICAg
ICBlbHNlCiAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CiAgICAgc291cF9tZXNzYWdl
X2JvZHlfY29tcGxldGUobWVzc2FnZS0+cmVzcG9uc2VfYm9keSk7CkBAIC0yMjgsMTIgKzMwNCwx
NyBAQCB2b2lkIGJlZm9yZUFsbCgpCiAgICAga1NlcnZlciA9IG5ldyBXZWJLaXRUZXN0U2VydmVy
KCk7CiAgICAga1NlcnZlci0+cnVuKHNlcnZlckNhbGxiYWNrKTsKIAorICAgIGtUZW1wRGlyZWN0
b3J5ID0gZ19kaXJfbWFrZV90bXAoIldlYktpdDJUZXN0cy1YWFhYWFgiLCAwKTsKKyAgICBnX2Fz
c2VydChrVGVtcERpcmVjdG9yeSk7CisKICAgICBDb29raWVNYW5hZ2VyVGVzdDo6YWRkKCJXZWJL
aXRDb29raWVNYW5hZ2VyIiwgImFjY2VwdC1wb2xpY3kiLCB0ZXN0Q29va2llTWFuYWdlckFjY2Vw
dFBvbGljeSk7CiAgICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdl
ciIsICJkZWxldGUtY29va2llcyIsIHRlc3RDb29raWVNYW5hZ2VyRGVsZXRlQ29va2llcyk7CiAg
ICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIsICJjb29raWVz
LWNoYW5nZWQiLCB0ZXN0Q29va2llTWFuYWdlckNvb2tpZXNDaGFuZ2VkKTsKKyAgICBDb29raWVN
YW5hZ2VyVGVzdDo6YWRkKCJXZWJLaXRDb29raWVNYW5hZ2VyIiwgInBlcnNpc3RlbnQtc3RvcmFn
ZSIsIHRlc3RDb29raWVNYW5hZ2VyUGVyc2lzdGVudFN0b3JhZ2UpOwogfQogCiB2b2lkIGFmdGVy
QWxsKCkKIHsKICAgICBkZWxldGUga1NlcnZlcjsKKyAgICBnX3JtZGlyKGtUZW1wRGlyZWN0b3J5
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuaAppbmRleCA3ZGMyMGQ1Li5jZjFjMTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCkBAIC03MCw2ICs3MCwxMCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKICAgICB2b2lkIHN0b3BP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CiAKKyNpZiBVU0UoU09VUCkKKyAgICB2b2lkIHNldENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90
IHN0b3JhZ2VUeXBlKTsKKyNlbmRpZgorCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKIAogICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKFdlYlByb2Nlc3NQcm94eSopIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29va2ll
TWFuYWdlclByb3h5U291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJD
b29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4wODkxNGVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCisKKyNpbmNsdWRl
ICJXZWJDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29v
a2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWludDMyX3Qg
c3RvcmFnZVR5cGUpCit7CisgICAgbV93ZWJDb250ZXh0LT5zZW5kVG9BbGxQcm9jZXNzZXNSZWxh
dW5jaGluZ1RoZW1JZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29v
a2llUGVyc2lzdGVudFN0b3JhZ2Uoc3RvcmFnZVBhdGgsIHN0b3JhZ2VUeXBlKSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5oCmluZGV4IGMwYmQxZjMuLjJiYjYzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaApAQCAtMzAsNiArMzAsMTAg
QEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAorI2lmIFVTRShTT1VQKQorI2luY2x1ZGUgIlNvdXBDb29raWVQZXJzaXN0ZW50
U3RvcmFnZVR5cGUuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAgICAgY2xhc3Mg
QXJndW1lbnREZWNvZGVyOwogICAgIGNsYXNzIENvbm5lY3Rpb247CkBAIC02Myw2ICs2NywxMCBA
QCBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CiAgICAg
dm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOwogCisjaWYgVVNFKFNPVVApCisgICAg
dm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRo
LCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKKyNlbmRpZgorCiAgICAgdm9pZCBk
aWRSZWNlaXZlV2ViQ29va2llTWFuYWdlck1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENv
cmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdl
ci5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLm1lc3NhZ2VzLmluCmluZGV4IDE1ZGU5YjYuLjBhZTExNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluCkBAIC0zMyw0ICszMyw4IEBACiAgICAgCiAgICAgdm9pZCBTdGFy
dE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIHZvaWQgU3RvcE9ic2VydmluZ0Nvb2tpZUNo
YW5nZXMoKQorCisjaWYgVVNFKFNPVVApCisgICAgU2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2Uo
V1RGOjpTdHJpbmcgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKQorI2VuZGlmCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJD
b29raWVNYW5hZ2VyU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKaW5kZXggZGEyMTgwOC4uY2VlNWI2YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2ll
TWFuYWdlclNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9z
b3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcApAQCAtMjYsOCArMjYsMTIgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJX
ZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVKYXJT
b3VwLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPGxp
YnNvdXAvc291cC5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03
Nyw0ICs4MSwyNyBAQCBIVFRQQ29va2llQWNjZXB0UG9saWN5IFdlYkNvb2tpZU1hbmFnZXI6OnBs
YXRmb3JtR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpCiAgICAgcmV0dXJuIHBvbGljeTsKIH0K
IAordm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25z
dCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlIHN0
b3JhZ2VUeXBlKQoreworICAgIEdSZWZQdHI8U291cENvb2tpZUphcj4gamFyOworICAgIHN3aXRj
aCAoc3RvcmFnZVR5cGUpIHsKKyAgICBjYXNlIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVRl
eHQ6CisgICAgICAgIGphciA9IGFkb3B0R1JlZihzb3VwX2Nvb2tpZV9qYXJfdGV4dF9uZXcoc3Rv
cmFnZVBhdGgudXRmOCgpLmRhdGEoKSwgRkFMU0UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VTUUxpdGU6CisgICAgICAgIGphciA9IGFkb3B0
R1JlZih3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlTmV3KHN0b3JhZ2VQYXRoKSk7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
IH0KKworICAgIFNvdXBDb29raWVKYXIqIGN1cnJlbnRKYXIgPSBXZWJDb3JlOjpzb3VwQ29va2ll
SmFyKCk7CisgICAgc291cF9jb29raWVfamFyX3NldF9hY2NlcHRfcG9saWN5KGphci5nZXQoKSwg
c291cF9jb29raWVfamFyX2dldF9hY2NlcHRfcG9saWN5KGN1cnJlbnRKYXIpKTsKKyAgICBTb3Vw
U2Vzc2lvbiogc2Vzc2lvbiA9IFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICAg
IHNvdXBfc2Vzc2lvbl9yZW1vdmVfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVS
RShjdXJyZW50SmFyKSk7CisgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIFNP
VVBfU0VTU0lPTl9GRUFUVVJFKGphci5nZXQoKSkpOworCisgICAgV2ViQ29yZTo6c2V0U291cENv
b2tpZUphcihqYXIuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29r
aWVKYXJTcWxpdGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAv
V2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNDk3NDBjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuY3BwCkBAIC0wLDAg
KzEsMjExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5oIgorCisj
aW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlU3RhdGVtZW50Lmg+CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCitzdHJ1Y3QgX1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRl
IHsKKyAgICBTdHJpbmcgZGF0YWJhc2VQYXRoOworICAgIFNRTGl0ZURhdGFiYXNlIGRhdGFiYXNl
OworICAgIGJvb2wgaXNMb2FkaW5nOworfTsKKworR19ERUZJTkVfVFlQRShXZWJLaXRTb3VwQ29v
a2llSmFyU3FsaXRlLCB3ZWJraXRfc291cF9jb29raWVfamFyX3NxbGl0ZSwgU09VUF9UWVBFX0NP
T0tJRV9KQVIpCisKK2VudW0geworICAgIENPTFVNTl9JRCwKKyAgICBDT0xVTU5fTkFNRSwKKyAg
ICBDT0xVTU5fVkFMVUUsCisgICAgQ09MVU1OX0hPU1QsCisgICAgQ09MVU1OX1BBVEgsCisgICAg
Q09MVU1OX0VYUElSWSwKKyAgICBDT0xVTU5fTEFTVF9BQ0NFU1MsCisgICAgQ09MVU1OX1NFQ1VS
RSwKKyAgICBDT0xVTU5fSFRUUF9PTkxZCit9OworCitzdGF0aWMgYm9vbCB3ZWJraXRTb3VwQ29v
a2llSmFyU3FsaXRlT3BlbkRhdGFiYXNlKFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUqIHNxbGl0
ZUphcikKK3sKKyAgICBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSogcHJpdiA9IHNx
bGl0ZUphci0+cHJpdjsKKyAgICBpZiAocHJpdi0+ZGF0YWJhc2UuaXNPcGVuKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgQVNTRVJUKCFwcml2LT5kYXRhYmFzZVBhdGguaXNFbXB0eSgp
KTsKKyAgICBpZiAoIXByaXYtPmRhdGFiYXNlLm9wZW4ocHJpdi0+ZGF0YWJhc2VQYXRoKSkgewor
ICAgICAgICBnX3dhcm5pbmcoIkNhbid0IG9wZW4gZGF0YWJhc2UgJXMiLCBwcml2LT5kYXRhYmFz
ZVBhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBwcml2LT5kYXRhYmFzZS5zZXRTeW5jaHJvbm91cyhTUUxpdGVEYXRhYmFzZTo6U3luY09mZik7
CisgICAgcHJpdi0+ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIlBSQUdNQSBzZWN1cmVfZGVsZXRl
ID0gMTsiKTsKKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCB3ZWJraXRTb3Vw
Q29va2llSmFyU3FsaXRlQ3JlYXRlVGFibGUoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3Fs
aXRlSmFyKQoreworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlKiBwcml2ID0g
c3FsaXRlSmFyLT5wcml2OworICAgIGlmIChwcml2LT5kYXRhYmFzZS50YWJsZUV4aXN0cygibW96
X2Nvb2tpZXMiKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAoIXByaXYtPmRhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJDUkVBVEUgVEFCTEUgbW96X2Nvb2tpZXMgKGlkIElOVEVHRVIg
UFJJTUFSWSBLRVksIG5hbWUgVEVYVCwgdmFsdWUgVEVYVCwgaG9zdCBURVhULCBwYXRoIFRFWFQs
IGV4cGlyeSBJTlRFR0VSLCBsYXN0QWNjZXNzZWQgSU5URUdFUiwgaXNTZWN1cmUgSU5URUdFUiwg
aXNIdHRwT25seSBJTlRFR0VSKSIpKSB7CisgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIGNy
ZWF0ZSB0YWJsZSBtb3pfY29va2llczogKCVpKSAtICVzIiwgcHJpdi0+ZGF0YWJhc2UubGFzdEVy
cm9yKCksIHByaXYtPmRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKKyAgICAgICAgcHJpdi0+ZGF0
YWJhc2UuY2xvc2UoKTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVMb2Fk
KFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUqIHNxbGl0ZUphcikKK3sKKyAgICBpZiAoIXdlYmtp
dFNvdXBDb29raWVKYXJTcWxpdGVPcGVuRGF0YWJhc2Uoc3FsaXRlSmFyKSkKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICghd2Via2l0U291cENvb2tpZUphclNxbGl0ZUNyZWF0ZVRhYmxlKHNxbGl0
ZUphcikpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQ
cml2YXRlKiBwcml2ID0gc3FsaXRlSmFyLT5wcml2OworICAgIHByaXYtPmlzTG9hZGluZyA9IHRy
dWU7CisgICAgU1FMaXRlU3RhdGVtZW50IHF1ZXJ5KHByaXYtPmRhdGFiYXNlLCAiU0VMRUNUIGlk
LCBuYW1lLCB2YWx1ZSwgaG9zdCwgcGF0aCwgZXhwaXJ5LCBsYXN0QWNjZXNzZWQsIGlzU2VjdXJl
LCBpc0h0dHBPbmx5IEZST00gbW96X2Nvb2tpZXM7Iik7CisgICAgaWYgKHF1ZXJ5LnByZXBhcmUo
KSAhPSBTUUxSZXN1bHRPaykgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBwcmVwYXJl
IGFsbCBjb29raWVzIHF1ZXJ5Iik7CisgICAgICAgIHByaXYtPmlzTG9hZGluZyA9IGZhbHNlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU291cENvb2tpZUphciogamFyID0gU09VUF9D
T09LSUVfSkFSKHNxbGl0ZUphcik7CisgICAgdGltZV90IG5vdyA9IHRpbWUoMCk7CisgICAgaW50
IHJlc3VsdDsKKyAgICB3aGlsZSAoKHJlc3VsdCA9IHF1ZXJ5LnN0ZXAoKSkgPT0gU1FMUmVzdWx0
Um93KSB7CisgICAgICAgIGludCBleHBpcmVUaW1lID0gcXVlcnkuZ2V0Q29sdW1uSW50KENPTFVN
Tl9FWFBJUlkpOworICAgICAgICBpZiAobm93ID49IGV4cGlyZVRpbWUpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBTb3VwQ29va2llKiBjb29raWUgPSBzb3VwX2Nvb2tpZV9uZXco
cXVlcnkuZ2V0Q29sdW1uVGV4dChDT0xVTU5fTkFNRSkudXRmOCgpLmRhdGEoKSwgcXVlcnkuZ2V0
Q29sdW1uVGV4dChDT0xVTU5fVkFMVUUpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeS5nZXRDb2x1bW5UZXh0KENPTFVNTl9I
T1NUKS51dGY4KCkuZGF0YSgpLCBxdWVyeS5nZXRDb2x1bW5UZXh0KENPTFVNTl9QQVRIKS51dGY4
KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXhwaXJlVGltZSAtIG5vdyA8PSBHX01BWElOVCA/IGV4cGlyZVRpbWUgLSBub3cgOiBHX01BWElO
VCk7CisgICAgICAgIGlmIChxdWVyeS5nZXRDb2x1bW5JbnQoQ09MVU1OX1NFQ1VSRSkpCisgICAg
ICAgICAgICBzb3VwX2Nvb2tpZV9zZXRfc2VjdXJlKGNvb2tpZSwgVFJVRSk7CisgICAgICAgIGlm
IChxdWVyeS5nZXRDb2x1bW5JbnQoQ09MVU1OX0hUVFBfT05MWSkpCisgICAgICAgICAgICBzb3Vw
X2Nvb2tpZV9zZXRfaHR0cF9vbmx5KGNvb2tpZSwgVFJVRSk7CisKKyAgICAgICAgc291cF9jb29r
aWVfamFyX2FkZF9jb29raWUoamFyLCBjb29raWUpOworICAgIH0KKworICAgIGlmIChyZXN1bHQg
IT0gU1FMUmVzdWx0RG9uZSkKKyAgICAgICAgZ193YXJuaW5nKCJFcnJvciByZWFkaW5nIGNvb2tp
ZXMgZnJvbSBkYXRhYmFzZSIpOworICAgIHByaXYtPmlzTG9hZGluZyA9IGZhbHNlOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlSW5zZXJ0Q29va2llKFdlYktpdFNv
dXBDb29raWVKYXJTcWxpdGUqIHNxbGl0ZUphciwgU291cENvb2tpZSogY29va2llKQoreworICAg
IGlmICghY29va2llIHx8ICFjb29raWUtPmV4cGlyZXMpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoIXdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVDcmVhdGVUYWJsZShzcWxpdGVKYXIpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSogcHJp
diA9IHNxbGl0ZUphci0+cHJpdjsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkocHJpdi0+ZGF0
YWJhc2UsICJJTlNFUlQgSU5UTyBtb3pfY29va2llcyBWQUxVRVMoTlVMTCwgPywgPywgPywgPywg
PywgTlVMTCwgPywgPyk7Iik7CisgICAgaWYgKHF1ZXJ5LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRP
aykgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBwcmVwYXJlIGluc2VydCBjb29raWVz
IHF1ZXJ5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBxdWVyeS5iaW5kVGV4dCgx
LCBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZS0+bmFtZSkpOworICAgIHF1ZXJ5LmJpbmRUZXh0KDIs
IFN0cmluZzo6ZnJvbVVURjgoY29va2llLT52YWx1ZSkpOworICAgIHF1ZXJ5LmJpbmRUZXh0KDMs
IFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5kb21haW4pKTsKKyAgICBxdWVyeS5iaW5kVGV4dCg0
LCBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZS0+cGF0aCkpOworICAgIHF1ZXJ5LmJpbmRJbnQoNSwg
KGd1bG9uZylzb3VwX2RhdGVfdG9fdGltZV90KGNvb2tpZS0+ZXhwaXJlcykpOworICAgIHF1ZXJ5
LmJpbmRJbnQoNiwgY29va2llLT5zZWN1cmUpOworICAgIHF1ZXJ5LmJpbmRJbnQoNywgY29va2ll
LT5odHRwX29ubHkpOworICAgIGlmIChxdWVyeS5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkKKyAg
ICAgICAgZ193YXJuaW5nKCJFcnJvciBhZGRpbmcgY29va2llIChuYW1lPSVzLCBkb21haW49JXMp
IHRvIGRhdGFiYXNlIiwgY29va2llLT5uYW1lLCBjb29raWUtPm5hbWUpOworfQorCitzdGF0aWMg
dm9pZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRGVsZXRlQ29va2llKFdlYktpdFNvdXBDb29r
aWVKYXJTcWxpdGUqIHNxbGl0ZUphciwgU291cENvb2tpZSogY29va2llKQoreworICAgIGlmICgh
Y29va2llKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF3ZWJraXRTb3VwQ29va2llSmFyU3Fs
aXRlQ3JlYXRlVGFibGUoc3FsaXRlSmFyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0
U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHByaXYgPSBzcWxpdGVKYXItPnByaXY7CisgICAg
U1FMaXRlU3RhdGVtZW50IHF1ZXJ5KHByaXYtPmRhdGFiYXNlLCAiREVMRVRFIEZST00gbW96X2Nv
b2tpZXMgV0hFUkUgbmFtZSA9ICg/KSBBTkQgaG9zdCA9ICg/KTsiKTsKKyAgICBpZiAocXVlcnku
cHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRv
IHByZXBhcmUgZGVsZXRlIGNvb2tpZXMgcXVlcnkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHF1ZXJ5LmJpbmRUZXh0KDEsIFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5uYW1lKSk7
CisgICAgcXVlcnkuYmluZFRleHQoMiwgU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPmRvbWFpbikp
OworICAgIGlmIChxdWVyeS5zdGVwKCkgIT0gU1FMUmVzdWx0RG9uZSkKKyAgICAgICAgZ193YXJu
aW5nKCJFcnJvciBkZWxldGluZyBjb29raWUgKG5hbWU9JXMsIGRvbWFpbj0lcykgZnJvbSBkYXRh
YmFzZSIsIGNvb2tpZS0+bmFtZSwgY29va2llLT5uYW1lKTsKK30KKworc3RhdGljIHZvaWQgd2Vi
a2l0U291cENvb2tpZUphclNxbGl0ZUNoYW5nZWQoU291cENvb2tpZUphciogamFyLCBTb3VwQ29v
a2llKiBvbGRDb29raWUsIFNvdXBDb29raWUqIG5ld0Nvb2tpZSkKK3sKKyAgICBXZWJLaXRTb3Vw
Q29va2llSmFyU3FsaXRlKiBzcWxpdGVKYXIgPSBXRUJLSVRfU09VUF9DT09LSUVfSkFSX1NRTElU
RShqYXIpOworICAgIGlmIChzcWxpdGVKYXItPnByaXYtPmlzTG9hZGluZykKKyAgICAgICAgcmV0
dXJuOworICAgIGlmICghd2Via2l0U291cENvb2tpZUphclNxbGl0ZU9wZW5EYXRhYmFzZShzcWxp
dGVKYXIpKQorICAgICAgICByZXR1cm47CisKKyAgICB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRl
RGVsZXRlQ29va2llKHNxbGl0ZUphciwgb2xkQ29va2llKTsKKyAgICB3ZWJraXRTb3VwQ29va2ll
SmFyU3FsaXRlSW5zZXJ0Q29va2llKHNxbGl0ZUphciwgbmV3Q29va2llKTsKK30KKworc3RhdGlj
IHZvaWQgd2Via2l0U291cENvb2tpZUphclNxbGl0ZUZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkK
K3sKKyAgICBXRUJLSVRfU09VUF9DT09LSUVfSkFSX1NRTElURShvYmplY3QpLT5wcml2LT5+V2Vi
S2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUoKTsKKyAgICBHX09CSkVDVF9DTEFTUyh3ZWJr
aXRfc291cF9jb29raWVfamFyX3NxbGl0ZV9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3Qp
OworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9jb29raWVfamFyX3NxbGl0ZV9pbml0KFdl
YktpdFNvdXBDb29raWVKYXJTcWxpdGUqIHNxbGl0ZUphcikKK3sKKyAgICBXZWJLaXRTb3VwQ29v
a2llSmFyU3FsaXRlUHJpdmF0ZSogcHJpdiA9IEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURShz
cWxpdGVKYXIsIFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUsIFdlYktpdFNvdXBD
b29raWVKYXJTcWxpdGVQcml2YXRlKTsKKyAgICBzcWxpdGVKYXItPnByaXYgPSBwcml2OworICAg
IG5ldyAocHJpdikgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUoKTsKK30KKworc3Rh
dGljIHZvaWQgd2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVfY2xhc3NfaW5pdChXZWJLaXRT
b3VwQ29va2llSmFyU3FsaXRlQ2xhc3MqIHNxbGl0ZUphckNsYXNzKQoreworICAgIFNvdXBDb29r
aWVKYXJDbGFzcyogY29va2llSmFyQ2xhc3MgPSBTT1VQX0NPT0tJRV9KQVJfQ0xBU1Moc3FsaXRl
SmFyQ2xhc3MpOworICAgIGNvb2tpZUphckNsYXNzLT5jaGFuZ2VkID0gd2Via2l0U291cENvb2tp
ZUphclNxbGl0ZUNoYW5nZWQ7CisKKyAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdf
T0JKRUNUX0NMQVNTKHNxbGl0ZUphckNsYXNzKTsKKyAgICBnT2JqZWN0Q2xhc3MtPmZpbmFsaXpl
ID0gd2Via2l0U291cENvb2tpZUphclNxbGl0ZUZpbmFsaXplOworCisgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKHNxbGl0ZUphckNsYXNzLCBzaXplb2YoV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZVByaXZhdGUpKTsKK30KKworU291cENvb2tpZUphciogd2Via2l0U291cENvb2tpZUphclNx
bGl0ZU5ldyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0aCkKK3sKKyAgICBBU1NFUlQoIXByaXYt
PmRhdGFiYXNlUGF0aC5pc0VtcHR5KCkpOworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUq
IHNxbGl0ZUphciA9IFdFQktJVF9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFKGdfb2JqZWN0X25ldyhX
RUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFLCBOVUxMKSk7CisgICAgc3FsaXRlSmFy
LT5wcml2LT5kYXRhYmFzZVBhdGggPSBkYXRhYmFzZVBhdGg7CisgICAgd2Via2l0U291cENvb2tp
ZUphclNxbGl0ZUxvYWQoc3FsaXRlSmFyKTsKKyAgICByZXR1cm4gU09VUF9DT09LSUVfSkFSKHNx
bGl0ZUphcik7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZhMDkwNAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJT
cWxpdGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxp
YSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIsMSBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqLworCisjaWZuZGVmIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVfaAorI2RlZmluZSBXZWJL
aXRTb3VwQ29va2llSmFyU3FsaXRlX2gKKworI2luY2x1ZGUgPGxpYnNvdXAvc291cC1jb29raWUt
amFyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK0dfQkVHSU5fREVDTFMK
KworI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFICAgICAgICAgICAg
KHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlX2dldF90eXBlKCkpCisjZGVmaW5lIFdFQktJ
VF9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lO
U1RBTkNFX0NBU1QgKChvYmopLCBXRUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFLCBX
ZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfQ09PS0lF
X0pBUl9TUUxJVEUob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9i
aiksIFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUpKQorI2RlZmluZSBXRUJLSVRf
U09VUF9DT09LSUVfSkFSX1NRTElURV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUICgoa2xhc3MpLCBXRUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFLCBXZWJL
aXRTb3VwQ29va2llSmFyU3FsaXRlQ2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfU09VUF9DT09L
SUVfSkFSX1NRTElURV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgob2Jq
KSwgV0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSkpCisjZGVmaW5lIFdFQktJVF9T
T1VQX0NPT0tJRV9KQVJfU1FMSVRFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dF
VF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUsIFdlYktp
dFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3Vw
Q29va2llSmFyU3FsaXRlIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGU7Cit0eXBlZGVmIHN0cnVj
dCBfV2ViS2l0U291cENvb2tpZUphclNxbGl0ZUNsYXNzIFdlYktpdFNvdXBDb29raWVKYXJTcWxp
dGVDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0
ZSBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZTsKKworc3RydWN0IF9XZWJLaXRTb3Vw
Q29va2llSmFyU3FsaXRlIHsKKyAgICBTb3VwQ29va2llSmFyIHBhcmVudDsKKworICAgIFdlYktp
dFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlKiBwcml2OworfTsKKworc3RydWN0IF9XZWJLaXRT
b3VwQ29va2llSmFyU3FsaXRlQ2xhc3MgeworICAgIFNvdXBDb29raWVKYXJDbGFzcyBwYXJlbnRD
bGFzczsKK307CisKK0dUeXBlIHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlX2dldF90eXBl
KCk7CitTb3VwQ29va2llSmFyKiB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlTmV3KGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VQYXRoKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8vIFdlYktpdFNv
dXBDb29raWVKYXJTcWxpdGUuaAo=
</data>
<flag name="commit-queue"
          id="154857"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>147494</attachid>
            <date>2012-06-13 23:14:30 -0700</date>
            <delta_ts>2012-07-07 02:50:51 -0700</delta_ts>
            <desc>Updated patch, try to fix efl build</desc>
            <filename>wk2-persistent-cookies3.diff</filename>
            <type>text/plain</type>
            <size>41613</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiMGQ4NjVlLi4wZTE3MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMDYtMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3BlcnNpc3Rl
bnRfc3RvcmFnZSgpIHRvIFdlYktpdDIgR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3Rv
cmFnZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cENvb2tpZXNDaGFuZ2VkKTogRG8g
bm90IG5vdGlmeSBhYm91dCBjaGFuZ2VzIGluCisgICAgICAgIG90aGVyIGNvb2tpZSBqYXJzIHRo
YW4gdGhlIGN1cnJlbnQgb25lLgorCiAyMDEyLTA2LTEyICBIYW5zIFdlbm5ib3JnICA8aGFuc0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3BlZWNoIEphdmFTY3JpcHQgQVBJOiBBZGQgdGVzdCBm
b3IgY29uc3RydWN0aW5nIFNwZWVjaFJlY29nbml0aW9uRXJyb3IgZXZlbnRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VT
b3VwLmNwcAppbmRleCAyZDcxNzQ3Li5mMzA5ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKQEAg
LTM3LDggKzM3LDEwIEBAIHZvaWQgc2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoYm9vbCBlbmFibGVkKQogfQogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCi1zdGF0
aWMgdm9pZCBzb3VwQ29va2llc0NoYW5nZWQoU291cENvb2tpZUphciosIFNvdXBDb29raWUqLCBT
b3VwQ29va2llKiwgZ3BvaW50ZXIpCitzdGF0aWMgdm9pZCBzb3VwQ29va2llc0NoYW5nZWQoU291
cENvb2tpZUphciogamFyLCBTb3VwQ29va2llKiwgU291cENvb2tpZSosIGdwb2ludGVyKQogewor
ICAgIGlmIChqYXIgIT0gc291cENvb2tpZUphcigpKQorICAgICAgICByZXR1cm47CiAgICAgcGxh
dGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5ub3RpZnlDb29raWVzQ2hhbmdl
ZCgpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTNmMDMwNy4uZDQ3YzA2YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA2LTEzICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNn
YXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBZGQgd2Via2l0X2Nvb2tpZV9tYW5h
Z2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UoKSB0byBXZWJLaXQyIEdUSysgQVBJCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzAxNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06
IEFkZCBuZXcgZGlycyB0byBpbmNsdWRlIHBhdGguCisgICAgICAgICogR05VbWFrZWZpbGUubGlz
dC5hbTogQWRkIG5ldyBmaWxlcyB0byBjb21waWxhdGlvbi4KKyAgICAgICAgKiBQbGF0Zm9ybUVm
bC5jbWFrZTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL3NvdXAvU291cENvb2tpZVBlcnNpc3Rl
bnRTdG9yYWdlVHlwZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRDb29raWVNYW5hZ2VyLmNwcDoKKyAgICAgICAgKHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRf
cGVyc2lzdGVudF9zdG9yYWdlKTogU2V0IGEgcGVyc2lzdGVudAorICAgICAgICBzdG9yYWdlIGZv
ciBjb29raWVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFn
ZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlv
bnMudHh0OiBBZGQgbmV3IHN5bWJvbHMKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9UZXN0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICh0ZXN0Q29va2llTWFuYWdlclBlcnNp
c3RlbnRTdG9yYWdlKToKKyAgICAgICAgKHNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKGJlZm9y
ZUFsbCk6CisgICAgICAgIChhZnRlckFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oOgorICAgICAgICAoV2ViQ29va2llTWFuYWdlclByb3h5KTogQWRkIHNl
dENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKCkgbWV0aG9kCisgICAgICAgIHdoZW4gdXNpbmcgc291
cC4KKyAgICAgICAgKiBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29v
a2llUGVyc2lzdGVudFN0b3JhZ2UpOiBTZW5kCisgICAgICAgIFNldENvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlIG1lc3NhZ2UgdG8gdGhlIHdlYiBwcm9jZXNzLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
Q29va2llcy9XZWJDb29raWVNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb29raWVNYW5hZ2VyKTog
QWRkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKCkgbWV0aG9kIHdoZW4KKyAgICAgICAgdXNp
bmcgc291cC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5t
ZXNzYWdlcy5pbjogQWRkCisgICAgICAgIFNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlIG1lc3Nh
Z2Ugd2hlbiB1c2luZyBzb3VwLgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dl
YkNvb2tpZU1hbmFnZXJTb3VwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ29va2llTWFuYWdl
cjo6c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UpOiBDcmVhdGUgYQorICAgICAgICBuZXcgY29v
a2llIGphciBmb3IgdGhlIGdpdmVuIGZpbGVuYW1lIGFuZCBzb3RyYWdlIHR5cGUgYW5kIGFkZCBp
dAorICAgICAgICB0byB0aGUgc291cCBzZXNzaW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29v
a2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuY3BwOiBBZGRlZC4KKyAgICAgICAg
KHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVPcGVuRGF0YWJhc2UpOiBPcGVuIFNRTGl0ZSBkYXRh
YmFzZS4KKyAgICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVDcmVhdGVUYWJsZSk6IENy
ZWF0ZSBtb3pfY29va2llcyBpZiBpdAorICAgICAgICBkb2Vzbid0IGV4aXN0LgorICAgICAgICAo
d2Via2l0U291cENvb2tpZUphclNxbGl0ZUxvYWQpOiBMb2FkIHRoZSBpbml0aWFsIHNldCBvZiBj
b29raWVzCisgICAgICAgIGZyb20gdGhlIGRhdGFiYXNlLgorICAgICAgICAod2Via2l0U291cENv
b2tpZUphclNxbGl0ZUluc2VydENvb2tpZSk6IEluc2VydCBhIG5ldyBjb29raWUgaW50bworICAg
ICAgICB0aGUgZGF0YWJhc2UuCisgICAgICAgICh3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRGVs
ZXRlQ29va2llKTogRGVsZXRlIGFuIGV4aXNpbmcgY29va2llCisgICAgICAgIGZyb20gdGhlIGRh
dGFiYXNlLgorICAgICAgICAod2Via2l0U291cENvb2tpZUphclNxbGl0ZUNoYW5nZWQpOiBJbnNl
cnQvZGVsZXRlIGNvb2tpZXMKKyAgICAgICAgZGVwZW5kaW5nIG9uIHRoZSBjaGFuZ2UuCisgICAg
ICAgICh3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRmluYWxpemUpOgorICAgICAgICAod2Via2l0
X3NvdXBfY29va2llX2phcl9zcWxpdGVfaW5pdCk6CisgICAgICAgICh3ZWJraXRfc291cF9jb29r
aWVfamFyX3NxbGl0ZV9jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJT
cWxpdGVOZXcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBD
b29raWVKYXJTcWxpdGUuaDogQWRkZWQuCisKIDIwMTItMDYtMTIgIE1PUklUQSBIYWppbWUgIDxt
b3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgU2hhZG93IFBzZXVkbyBJRCBzaG91bGQgYmUg
YWJsZSB0byBuZXN0IHRvIHBvaW50IG5lc3RlZCBzaGFkb3cgRE9NLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5h
bQppbmRleCAwMTZkNjgxLi44Yjk4NjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbQpAQCAtNDAsNiAr
NDAsNyBAQCBsaWJ3ZWJraXQyZ3RrX0BXRUJLSVRHVEtfQVBJX01BSk9SX1ZFUlNJT05AX0BXRUJL
SVRHVEtfQVBJX01JTk9SX1ZFUlNJT05AX2xhX0NQUAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvTmV0c2NhcGUveDExIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
c291cCBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MgXApAQCAtNDEzLDYgKzQxNCw3IEBAIFByb2dyYW1zX1dl
YktpdFBsdWdpblByb2Nlc3NfQ1BQRkxBR1MgPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvIFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
c291cCBcCiAJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0MiBcCiAJLUkk
KHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9pbmNsdWRlIFwKIAktSSQodG9w
X2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2luY2x1ZGUvSmF2YVNjcmlwdENvcmUg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJj
ZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggODUxZDYyNi4uMjAzM2RmOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00MDQsNiArNDA0LDcgQEAgd2Via2l0Ml9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuY3BwIFwK
IAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RhdGlzdGljc0RhdGEuaCBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL1N0cmluZ1BhaXJWZWN0b3IuaCBcCisJU291cmNlL1dlYktpdDIvU2hhcmVkL3Nv
dXAvU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvVGV4dENoZWNrZXJTdGF0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvVXNlck1l
c3NhZ2VDb2RlcnMuaCBcCiAJU291cmNlL1dlYktpdDIvU2hhcmVkL1VwZGF0ZUluZm8uY3BwIFwK
QEAgLTczOSw2ICs3NDAsNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Qcm9jZXNzTW9kZWwuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Jl
c3BvbnNpdmVuZXNzVGltZXIuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUmVzcG9u
c2l2ZW5lc3NUaW1lci5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJDb29r
aWVNYW5hZ2VyUHJveHlTb3VwLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAv
V2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBcCkBAIC04NDIs
NiArODQ0LDggQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcCBcCisJU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5j
cHAgXAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBD
b29raWVKYXJTcWxpdGUuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWQuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3du
bG9hZC5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZEF1
dGhlbnRpY2F0aW9uQ2xpZW50LmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA1ZTA4
ODVlLi4yZjEzYjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtNDEsNiArNDEsNyBA
QCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQ
cm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZsLmNwcAogCisg
ICAgVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5U291cC5jcHAKICAgICBVSVBy
b2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwCiAgICAgVUlQcm9jZXNz
L3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCiAKQEAgLTUwLDYgKzUxLDcgQEAg
TElTVChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9Q
bHVnaW5JbmZvU3RvcmVVbml4LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2Vi
Q29va2llTWFuYWdlclNvdXAuY3BwCisgICAgV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0
U291cENvb2tpZUphclNxbGl0ZS5jcHAKIAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9E
b3dubG9hZEVmbC5jcHAKICAgICBXZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRmlsZURvd25sb2Fk
ZXJFZmwuY3BwCkBAIC04NCw2ICs4Niw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9E
SVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAiCiAg
ICAgIiR7V0VCQ09SRV9ESVJ9L3N2Zy9ncmFwaGljcyIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hh
cmVkL2VmbCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL3NvdXAiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9zb3VwIgogICAgICIke1dFQktJVDJfRElSfS9VSVByb2Nl
c3MvQVBJL2VmbCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL3NvdXAiCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3Jh
Z2VUeXBlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVu
dFN0b3JhZ2VUeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY2MjE4
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1NvdXBDb29r
aWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZV9oCisj
ZGVmaW5lIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGVfaAorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworZW51bSB7CisgICAgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVGV4dCA9IDAs
CisgICAgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlU1FMaXRlID0gMQorfTsKK3R5cGVkZWYg
dW5zaWduZWQgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CisKKyNlbmRpZiAvLyBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tp
ZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29v
a2llTWFuYWdlci5jcHAKaW5kZXggN2Q4YTEwZS4uODc5MGM3YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHAK
QEAgLTIwLDYgKzIwLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJLaXRD
b29raWVNYW5hZ2VyLmgiCiAKKyNpbmNsdWRlICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlLmgiCisjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
S2l0Q29va2llTWFuYWdlclByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRFbnVtVHlwZXMuaCIK
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC00MSw2ICs0Myw5IEBAIHN0YXRp
YyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKIAogR19ERUZJTkVfVFlQRShX
ZWJLaXRDb29raWVNYW5hZ2VyLCB3ZWJraXRfY29va2llX21hbmFnZXIsIEdfVFlQRV9PQkpFQ1Qp
CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5U
X1NUT1JBR0VfVEVYVCwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVGV4dCk7CitDT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NR
TElURSwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlU1FMaXRlKTsKKwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfQUxXQVlTLCBrV0tI
VFRQQ29va2llQWNjZXB0UG9saWN5QWx3YXlzKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBUX05FVkVSLCBrV0tIVFRQQ29va2llQWNjZXB0
UG9saWN5TmV2ZXIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lF
X1BPTElDWV9BQ0NFUFRfTk9fVEhJUkRfUEFSVFksIGtXS0hUVFBDb29raWVBY2NlcHRQb2xpY3lP
bmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbik7CkBAIC0xMDQsNiArMTA5LDMwIEBAIFdlYktpdENv
b2tpZU1hbmFnZXIqIHdlYmtpdENvb2tpZU1hbmFnZXJDcmVhdGUoV0tDb29raWVNYW5hZ2VyUmVm
IHdrQ29va2llTWFuYWdlCiB9CiAKIC8qKgorICogd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9w
ZXJzaXN0ZW50X3N0b3JhZ2U6CisgKiBAY29va2llX21hbmFnZXI6IGEgI1dlYktpdENvb2tpZU1h
bmFnZXIKKyAqIEBmaWxlbmFtZTogdGhlIGZpbGVuYW1lIHRvIHJlYWQgdG8vd3JpdGUgZnJvbQor
ICogQHN0b3JhZ2U6IGEgI1dlYktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlCisgKgorICogU2V0
IHRoZSBAZmlsZW5hbWUgd2hlcmUgbm9uLXNlc3Npb24gY29va2llcyBhcmUgc3RvcmVkIHBlcnNp
c3RlbnRseSB1c2luZworICogQHN0b3JhZ2UgYXMgdGhlIGZvcm1hdCB0byByZWFkL3dyaXRlIHRo
ZSBjb29raWVzLgorICogQ29va2llcyBhcmUgaW5pdGlhbGx5IHJlYWQgZnJvbSBAZmlsZW5hbWUg
dG8gY3JlYXRlIGFuIGluaXRpYWwgc2V0IG9mIGNvb2tpZXMuCisgKiBUaGVuLCBub24tc2Vzc2lv
biBjb29raWVzIHdpbGwgYmUgd3JpdHRlbiB0byBAZmlsZW5hbWUgd2hlbiB0aGUgV2ViS2l0Q29v
a2llTWFuYWdlcjo6Y2hhbmdlZAorICogc2lnbmFsIGlzIGVtaXR0ZWQuCisgKiBCeSBkZWZhdWx0
LCBAY29va2llX21hbmFnZXIgZG9lc24ndCBzdG9yZSB0aGUgY29va2llcyBwZXJzaXN0ZW5seSwg
c28geW91IG5lZWQgdG8gY2FsbCB0aGlzCisgKiBtZXRob2QgdG8ga2VlcCBjb29raWVzIHNhdmVk
IGFjcm9zcyBzZXNzaW9ucy4KKyAqLwordm9pZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3Bl
cnNpc3RlbnRfc3RvcmFnZShXZWJLaXRDb29raWVNYW5hZ2VyKiBtYW5hZ2VyLCBjb25zdCBjaGFy
KiBmaWxlbmFtZSwgV2ViS2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2Ugc3RvcmFnZSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19DT09LSUVfTUFOQUdFUihtYW5hZ2VyKSk7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChmaWxlbmFtZSk7CisKKyAgICBXS0Nvb2tpZU1hbmFnZXJTdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhtYW5hZ2VyLT5wcml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0
KCkpOworICAgIHRvSW1wbChtYW5hZ2VyLT5wcml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCkpLT5z
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShTdHJpbmc6OmZyb21VVEY4KGZpbGVuYW1lKSwgc3Rv
cmFnZSk7CisgICAgV0tDb29raWVNYW5hZ2VyU3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKG1h
bmFnZXItPnByaXYtPndrQ29va2llTWFuYWdlci5nZXQoKSk7Cit9CisKKy8qKgogICogd2Via2l0
X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5OgogICogQGNvb2tpZV9tYW5hZ2VyOiBh
ICNXZWJLaXRDb29raWVNYW5hZ2VyCiAgKiBAcG9saWN5OiBhICNXZWJLaXRDb29raWVBY2NlcHRQ
b2xpY3kKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvb2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dENvb2tpZU1hbmFnZXIuaAppbmRleCAyNDcyZDk2Li5jMjA5ZDRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5oCkBA
IC00Miw2ICs0MiwyMCBAQCB0eXBlZGVmIHN0cnVjdCBfV2ViS2l0Q29va2llTWFuYWdlckNsYXNz
ICAgV2ViS2l0Q29va2llTWFuYWdlckNsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX1dlYktpdENvb2tp
ZU1hbmFnZXJQcml2YXRlIFdlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlOwogCiAvKioKKyAqIFdl
YktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlOgorICogQFdFQktJVF9DT09LSUVfUEVSU0lTVEVO
VF9TVE9SQUdFX1RFWFQ6IENvb2tpZXMgYXJlIHN0b3JlZCBpbiBhIHRleHQKKyAqICBmaWxlIGlu
IHRoZSBNb3ppbGxhICJjb29raWVzLnR4dCIgZm9ybWF0LgorICogQFdFQktJVF9DT09LSUVfUEVS
U0lTVEVOVF9TVE9SQUdFX1NRTElURTogQ29va2llcyBhcmUgc3RvcmVkIGluIGEgU1FMaXRlCisg
KiAgZmlsZSBpbiB0aGUgbmV3IE1vemlsbGEgZm9ybWF0LgorICoKKyAqIEVudW0gdmFsdWVzIHVz
ZWQgdG8gZGVub3RlIHRoZSBjb29raWUgcGVyc2lzdGVudCBzdG9yYWdlIHR5cGVzLgorICovCit0
eXBlZGVmIGVudW0geworICAgIFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQs
CisgICAgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFCit9IFdlYktpdENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlOworCisvKioKICAqIFdlYktpdENvb2tpZUFjY2VwdFBvbGlj
eToKICAqIEBXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfQUxXQVlTOiBBY2NlcHQgYWxsIGNv
b2tpZXMgdW5jb25kaXRpb25hbGx5LgogICogQFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9O
RVZFUjogUmVqZWN0IGFsbCBjb29raWVzIHVuY29uZGl0aW9uYWxseS4KQEAgLTY5LDM3ICs4Myw0
MiBAQCBXRUJLSVRfQVBJIEdUeXBlCiB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X3R5cGUgICAg
ICAgICAgICAgICAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5ICAgICAgICAgICAgICAgKFdlYktpdENvb2tp
ZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kgcG9s
aWN5KTsKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlICAgICAg
ICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn
Y2hhciAgICAgICAgICAgICAgICAgICpmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRDb29raWVQZXJzaXN0ZW50U3Rv
cmFnZSBzdG9yYWdlKTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfY29va2llX21hbmFnZXJf
c2V0X2FjY2VwdF9wb2xpY3kgICAgICAgICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAg
ICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5ICAgICAgcG9saWN5
KTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9w
b2xpY3kgICAgICAgICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5h
Z2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICpjYW5jZWxsYWJsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxi
YWNrICAgICAgY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSk7Cit3
ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3kgICAgICAgICAgICAgICAoV2Vi
S2l0Q29va2llTWFuYWdlciAgICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNlbGxhYmxlICAg
ICAgICAgICAgICAgICAqY2FuY2VsbGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgICAgICAg
Y2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKIAogV0VC
S0lUX0FQSSBXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kKLXdlYmtpdF9jb29raWVfbWFuYWdlcl9n
ZXRfYWNjZXB0X3BvbGljeV9maW5pc2ggICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAq
Y29va2llX21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgKnJlc3VsdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAg
ICAgICAgICAgICAgICoqZXJyb3IpOword2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRf
cG9saWN5X2ZpbmlzaCAgICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICAgICAgKmNvb2tp
ZV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAgICAgKnJlc3VsdCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAg
ICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX2dldF9kb21haW5zX3dpdGhfY29va2llcyAgICAgICAgKFdlYktpdENvb2tp
ZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAqY2Fu
Y2VsbGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgIGNhbGxiYWNrLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAg
ICAgICAgICAgICB1c2VyX2RhdGEpOword2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9kb21haW5z
X3dpdGhfY29va2llcyAgICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICAgICAgKmNvb2tp
ZV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3lu
Y1JlYWR5Q2FsbGJhY2sgICAgICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAg
ICAgICAgIHVzZXJfZGF0YSk7CiAKIFdFQktJVF9BUEkgZ2NoYXIgKioKLXdlYmtpdF9jb29raWVf
bWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXNfZmluaXNoIChXZWJLaXRDb29raWVNYW5h
Z2VyICAgICAqY29va2llX21hbmFnZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICAgKnJlc3VsdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
RXJyb3IgICAgICAgICAgICAgICAgICoqZXJyb3IpOword2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dl
dF9kb21haW5zX3dpdGhfY29va2llc19maW5pc2ggKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICAg
ICAgKmNvb2tpZV9tYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAgICAgICAgICAgKnJlc3VsdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH
RXJyb3IgICAgICAgICAgICAgICAgICAgICAgKiplcnJvcik7CiAKIFdFQktJVF9BUEkgdm9pZAot
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2RlbGV0ZV9jb29raWVzX2Zvcl9kb21haW4gICAgICAgKFdl
YktpdENvb2tpZU1hbmFnZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAg
ICAgICAqZG9tYWluKTsKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVfY29va2llc19mb3Jf
ZG9tYWluICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25zdCBnY2hhciAgICAgICAgICAgICAgICAgICpkb21haW4pOwogCiBXRUJLSVRfQVBJIHZv
aWQKLXdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVfYWxsX2Nvb2tpZXMgICAgICAgICAgICAg
IChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAqY29va2llX21hbmFnZXIpOword2Via2l0X2Nvb2tp
ZV9tYW5hZ2VyX2RlbGV0ZV9hbGxfY29va2llcyAgICAgICAgICAgICAgKFdlYktpdENvb2tpZU1h
bmFnZXIgICAgICAgICAgKmNvb2tpZV9tYW5hZ2VyKTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNl
Y3Rpb25zLnR4dCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mvd2Via2l0
Mmd0ay1zZWN0aW9ucy50eHQKaW5kZXggY2U2OTM3My4uZTRkOTA4NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4
dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGst
c2VjdGlvbnMudHh0CkBAIC02MjgsNyArNjI4LDkgQEAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9n
ZXRfdHlwZQogPFNFQ1RJT04+CiA8RklMRT5XZWJLaXRDb29raWVNYW5hZ2VyPC9GSUxFPgogV2Vi
S2l0Q29va2llTWFuYWdlcgorV2ViS2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UKIFdlYktpdENv
b2tpZUFjY2VwdFBvbGljeQord2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X3N0
b3JhZ2UKIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvbGljeQogd2Via2l0X2Nv
b2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5CiB3ZWJraXRfY29va2llX21hbmFnZXJfZ2V0
X2FjY2VwdF9wb2xpY3lfZmluaXNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29va2llTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29va2llTWFuYWdlci5jcHAKaW5kZXggMWRkZmQ4
Mi4uMmZlODk5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb29raWVNYW5hZ2VyLmNwcApAQCAtMjEsOCArMjEsMTAgQEAK
IAogI2luY2x1ZGUgIldlYktpdFRlc3RTZXJ2ZXIuaCIKICNpbmNsdWRlICJXZWJWaWV3VGVzdC5o
IgorI2luY2x1ZGUgPGdsaWIvZ3N0ZGlvLmg+CiAKIHN0YXRpYyBXZWJLaXRUZXN0U2VydmVyKiBr
U2VydmVyOworc3RhdGljIGNoYXIqIGtUZW1wRGlyZWN0b3J5OwogCiBzdGF0aWMgY29uc3QgY2hh
cioga0ZpcnN0UGFydHlEb21haW4gPSAiMTI3LjAuMC4xIjsKIHN0YXRpYyBjb25zdCBjaGFyKiBr
VGhpcmRQYXJ0eURvbWFpbiA9ICJsb2NhbGhvc3QiOwpAQCAtNTgsNiArNjAsMzAgQEAgcHVibGlj
OgogICAgIHsKICAgICAgICAgZ19zdHJmcmVldihtX2RvbWFpbnMpOwogICAgICAgICBnX3NpZ25h
bF9oYW5kbGVyc19kaXNjb25uZWN0X21hdGNoZWQobV9jb29raWVNYW5hZ2VyLCBHX1NJR05BTF9N
QVRDSF9EQVRBLCAwLCAwLCAwLCAwLCB0aGlzKTsKKyAgICAgICAgaWYgKG1fY29va2llc1RleHRG
aWxlKQorICAgICAgICAgICAgZ191bmxpbmsobV9jb29raWVzVGV4dEZpbGUuZ2V0KCkpOworICAg
ICAgICBpZiAobV9jb29raWVzU1FMaXRlRmlsZSkKKyAgICAgICAgICAgIGdfdW5saW5rKG1fY29v
a2llc1NRTGl0ZUZpbGUuZ2V0KCkpOworICAgIH0KKworICAgIHZvaWQgc2V0UGVyc2lzdGVudFN0
b3JhZ2UoV2ViS2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2Ugc3RvcmFnZSkKKyAgICB7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gMDsKKyAgICAgICAgc3dpdGNoIChzdG9yYWdlKSB7
CisgICAgICAgIGNhc2UgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVDoKKyAg
ICAgICAgICAgIGlmICghbV9jb29raWVzVGV4dEZpbGUpCisgICAgICAgICAgICAgICAgbV9jb29r
aWVzVGV4dEZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksICJjb29raWVz
LnR4dCIsIE5VTEwpKTsKKyAgICAgICAgICAgIGZpbGVuYW1lID0gbV9jb29raWVzVGV4dEZpbGUu
Z2V0KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfQ09PS0lFX1BF
UlNJU1RFTlRfU1RPUkFHRV9TUUxJVEU6CisgICAgICAgICAgICBpZiAoIW1fY29va2llc1NRTGl0
ZUZpbGUpCisgICAgICAgICAgICAgICAgbV9jb29raWVzU1FMaXRlRmlsZS5zZXQoZ19idWlsZF9m
aWxlbmFtZShrVGVtcERpcmVjdG9yeSwgImNvb2tpZXMuZGIiLCBOVUxMKSk7CisgICAgICAgICAg
ICBmaWxlbmFtZSA9IG1fY29va2llc1NRTGl0ZUZpbGUuZ2V0KCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7
CisgICAgICAgIH0KKyAgICAgICAgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50
X3N0b3JhZ2UobV9jb29raWVNYW5hZ2VyLCBmaWxlbmFtZSwgc3RvcmFnZSk7CiAgICAgfQogCiAg
ICAgc3RhdGljIHZvaWQgZ2V0QWNjZXB0UG9saWN5UmVhZHlDYWxsYmFjayhHT2JqZWN0KiBvYmpl
Y3QsIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBncG9pbnRlciB1c2VyRGF0YSkKQEAgLTEyOSw2ICsx
NTUsOCBAQCBwdWJsaWM6CiAgICAgY2hhcioqIG1fZG9tYWluczsKICAgICBib29sIG1fY29va2ll
c0NoYW5nZWQ7CiAgICAgYm9vbCBtX2ZpbmlzaExvb3BXaGVuQ29va2llc0NoYW5nZTsKKyAgICBH
T3duUHRyPGNoYXI+IG1fY29va2llc1RleHRGaWxlOworICAgIEdPd25QdHI8Y2hhcj4gbV9jb29r
aWVzU1FMaXRlRmlsZTsKIH07CiAKIHN0YXRpYyB2b2lkIHRlc3RDb29raWVNYW5hZ2VyQWNjZXB0
UG9saWN5KENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQpAQCAtMjA0LDYg
KzIzMiw1NCBAQCBzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlckNvb2tpZXNDaGFuZ2VkKENv
b2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludAogICAgIGdfYXNzZXJ0KHRlc3QtPm1f
Y29va2llc0NoYW5nZWQpOwogfQogCitzdGF0aWMgdm9pZCB0ZXN0Q29va2llTWFuYWdlclBlcnNp
c3RlbnRTdG9yYWdlKENvb2tpZU1hbmFnZXJUZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQorewor
ICAgIHRlc3QtPnNldEFjY2VwdFBvbGljeShXRUJLSVRfQ09PS0lFX1BPTElDWV9BQ0NFUFRfQUxX
QVlTKTsKKworICAgIC8vIFRleHQgc3RvcmFnZSB1c2luZyBhIG5ldyBmaWxlLgorICAgIHRlc3Qt
PnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RF
WFQpOworICAgIGNoYXIqKiBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOworICAgIGdfYXNz
ZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMp
LCA9PSwgMCk7CisKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9p
bmRleC5odG1sIikuZGF0YSgpKTsKKyAgICB0ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsK
KyAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKKyAgICBkb21haW5zID0gdGVz
dC0+Z2V0RG9tYWlucygpOworICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X2Nt
cGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMik7CisKKworICAgIC8vIFNRTGl0ZSBz
dG9yYWdlIHVzaW5nIGEgbmV3IGZpbGUuCisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2Uo
V0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKKyAgICBkb21haW5zID0g
dGVzdC0+Z2V0RG9tYWlucygpOworICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0
X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMpLCA9PSwgMCk7CisKKyAgICB0ZXN0LT5sb2Fk
VVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9pbmRleC5odG1sIikuZGF0YSgpKTsKKyAgICB0
ZXN0LT53YWl0VW50aWxMb2FkRmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tp
ZXNDaGFuZ2VkKTsKKyAgICBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOworICAgIGdfYXNz
ZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFpbnMp
LCA9PSwgMik7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcgYW4gZXhpc3RpbmcgZmlsZS4K
KyAgICB0ZXN0LT5zZXRQZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRf
U1RPUkFHRV9URVhUKTsKKyAgICBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygpOworICAgIGdf
YXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKGRvbWFp
bnMpLCA9PSwgMik7CisgICAgdGVzdC0+ZGVsZXRlQWxsQ29va2llcygpOworICAgIGdfYXNzZXJ0
X2NtcGludChnX3N0cnZfbGVuZ3RoKHRlc3QtPmdldERvbWFpbnMoKSksID09LCAwKTsKKworICAg
IC8vIFNRTGl0ZSBzdG9yYWdlIHdpdGggYW4gZXhpc3RpbmcgZmlsZS4KKyAgICB0ZXN0LT5zZXRQ
ZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUp
OworICAgIGRvbWFpbnMgPSB0ZXN0LT5nZXREb21haW5zKCk7CisgICAgZ19hc3NlcnQoZG9tYWlu
cyk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Rydl9sZW5ndGgoZG9tYWlucyksID09LCAyKTsK
KyAgICB0ZXN0LT5kZWxldGVBbGxDb29raWVzKCk7CisgICAgZ19hc3NlcnRfY21waW50KGdfc3Ry
dl9sZW5ndGgodGVzdC0+Z2V0RG9tYWlucygpKSwgPT0sIDApOworfQorCiBzdGF0aWMgdm9pZCBz
ZXJ2ZXJDYWxsYmFjayhTb3VwU2VydmVyKiBzZXJ2ZXIsIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBj
b25zdCBjaGFyKiBwYXRoLCBHSGFzaFRhYmxlKiwgU291cENsaWVudENvbnRleHQqLCBncG9pbnRl
cikKIHsKICAgICBpZiAobWVzc2FnZS0+bWV0aG9kICE9IFNPVVBfTUVUSE9EX0dFVCkgewpAQCAt
MjE0LDEwICsyOTAsMTAgQEAgc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciog
c2VydmVyLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhcioKICAgICBzb3VwX21lc3Nh
Z2Vfc2V0X3N0YXR1cyhtZXNzYWdlLCBTT1VQX1NUQVRVU19PSyk7CiAgICAgaWYgKGdfc3RyX2Vx
dWFsKHBhdGgsICIvaW5kZXguaHRtbCIpKSB7CiAgICAgICAgIGNoYXIqIGluZGV4SHRtbCA9IGdf
c3RyZHVwX3ByaW50ZihrSW5kZXhIdG1sRm9ybWF0LCBzb3VwX3NlcnZlcl9nZXRfcG9ydChzZXJ2
ZXIpKTsKLSAgICAgICAgc291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNw
b25zZV9oZWFkZXJzLCAiU2V0LUNvb2tpZSIsICJmb289YmFyIik7CisgICAgICAgIHNvdXBfbWVz
c2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29r
aWUiLCAiZm9vPWJhcjsgTWF4LUFnZT02MCIpOwogICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9h
cHBlbmQobWVzc2FnZS0+cmVzcG9uc2VfYm9keSwgU09VUF9NRU1PUllfVEFLRSwgaW5kZXhIdG1s
LCBzdHJsZW4oaW5kZXhIdG1sKSk7CiAgICAgfSBlbHNlIGlmIChnX3N0cl9lcXVhbChwYXRoLCAi
L2ltYWdlLnBuZyIpKQotICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3Nh
Z2UtPnJlc3BvbnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImJhej1xdXgiKTsKKyAgICAgICAg
c291cF9tZXNzYWdlX2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAi
U2V0LUNvb2tpZSIsICJiYXo9cXV4OyBNYXgtQWdlPTYwIik7CiAgICAgZWxzZQogICAgICAgICBn
X2Fzc2VydF9ub3RfcmVhY2hlZCgpOwogICAgIHNvdXBfbWVzc2FnZV9ib2R5X2NvbXBsZXRlKG1l
c3NhZ2UtPnJlc3BvbnNlX2JvZHkpOwpAQCAtMjI4LDEyICszMDQsMTcgQEAgdm9pZCBiZWZvcmVB
bGwoKQogICAgIGtTZXJ2ZXIgPSBuZXcgV2ViS2l0VGVzdFNlcnZlcigpOwogICAgIGtTZXJ2ZXIt
PnJ1bihzZXJ2ZXJDYWxsYmFjayk7CiAKKyAgICBrVGVtcERpcmVjdG9yeSA9IGdfZGlyX21ha2Vf
dG1wKCJXZWJLaXQyVGVzdHMtWFhYWFhYIiwgMCk7CisgICAgZ19hc3NlcnQoa1RlbXBEaXJlY3Rv
cnkpOworCiAgICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgiV2ViS2l0Q29va2llTWFuYWdlciIs
ICJhY2NlcHQtcG9saWN5IiwgdGVzdENvb2tpZU1hbmFnZXJBY2NlcHRQb2xpY3kpOwogICAgIENv
b2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiZGVsZXRlLWNvb2tp
ZXMiLCB0ZXN0Q29va2llTWFuYWdlckRlbGV0ZUNvb2tpZXMpOwogICAgIENvb2tpZU1hbmFnZXJU
ZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAiY29va2llcy1jaGFuZ2VkIiwgdGVzdENv
b2tpZU1hbmFnZXJDb29raWVzQ2hhbmdlZCk7CisgICAgQ29va2llTWFuYWdlclRlc3Q6OmFkZCgi
V2ViS2l0Q29va2llTWFuYWdlciIsICJwZXJzaXN0ZW50LXN0b3JhZ2UiLCB0ZXN0Q29va2llTWFu
YWdlclBlcnNpc3RlbnRTdG9yYWdlKTsKIH0KIAogdm9pZCBhZnRlckFsbCgpCiB7CiAgICAgZGVs
ZXRlIGtTZXJ2ZXI7CisgICAgZ19ybWRpcihrVGVtcERpcmVjdG9yeSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggN2RjMjBk
NS4uY2YxYzE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVN
YW5hZ2VyUHJveHkuaApAQCAtNzAsNiArNzAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRP
YnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CiAgICAgdm9pZCBzdG9wT2JzZXJ2aW5nQ29va2llQ2hh
bmdlcygpOwogCisjaWYgVVNFKFNPVVApCisgICAgdm9pZCBzZXRDb29raWVQZXJzaXN0ZW50U3Rv
cmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSk7Cisj
ZW5kaWYKKwogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbios
IENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAKICAgICBi
b29sIHNob3VsZFRlcm1pbmF0ZShXZWJQcm9jZXNzUHJveHkqKSBjb25zdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJQcm94eVNvdXAu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViQ29va2llTWFuYWdlclByb3h5
U291cC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDg5MTRlZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3VwL1dlYkNvb2tpZU1h
bmFnZXJQcm94eVNvdXAuY3BwCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eS5oIgorCisjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgor
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJNZXNzYWdlcy5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKwordm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIHVpbnQzMl90IHN0b3JhZ2VUeXBlKQorewor
ICAgIG1fd2ViQ29udGV4dC0+c2VuZFRvQWxsUHJvY2Vzc2VzUmVsYXVuY2hpbmdUaGVtSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlKHN0b3JhZ2VQYXRoLCBzdG9yYWdlVHlwZSkpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAppbmRleCBjMGJk
MWYzLi4yYmI2MzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tp
ZXMvV2ViQ29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9XZWJDb29raWVNYW5hZ2VyLmgKQEAgLTMwLDYgKzMwLDEwIEBACiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKKyNpZiBV
U0UoU09VUCkKKyNpbmNsdWRlICJTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgiCisj
ZW5kaWYKKwogbmFtZXNwYWNlIENvcmVJUEMgewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsK
ICAgICBjbGFzcyBDb25uZWN0aW9uOwpAQCAtNjMsNiArNjcsMTAgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOwogICAgIHZvaWQgc3RvcE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKTsKIAorI2lmIFVTRShTT1VQKQorICAgIHZvaWQgc2V0Q29va2llUGVy
c2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgU291cENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlVHlwZSk7CisjZW5kaWYKKwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYkNvb2tp
ZU1hbmFnZXJNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdl
cy5pbgppbmRleCAxNWRlOWI2Li4wYWUxMTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5tZXNzYWdlcy5p
bgpAQCAtMzMsNCArMzMsOCBAQAogICAgIAogICAgIHZvaWQgU3RhcnRPYnNlcnZpbmdDb29raWVD
aGFuZ2VzKCkKICAgICB2b2lkIFN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKKworI2lmIFVT
RShTT1VQKQorICAgIFNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKFdURjo6U3RyaW5nIHN0b3Jh
Z2VQYXRoLCB1aW50MzJfdCBzdG9yYWdlVHlwZSkKKyNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFu
YWdlclNvdXAuY3BwCmluZGV4IGRhMjE4MDguLmNlZTViNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5h
Z2VyU291cC5jcHAKQEAgLTI2LDggKzI2LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogCisjaW5jbHVkZSAiV2ViS2l0U291cENvb2tpZUph
clNxbGl0ZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyU291cC5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKyNp
bmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzcsNCArODEsMjcgQEAgSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBXZWJDb29raWVNYW5hZ2VyOjpwbGF0Zm9ybUdldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koKQogICAgIHJldHVybiBwb2xpY3k7CiB9CiAKK3ZvaWQgV2ViQ29va2ll
TWFuYWdlcjo6c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdl
UGF0aCwgU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZSBzdG9yYWdlVHlwZSkKK3sKKyAg
ICBHUmVmUHRyPFNvdXBDb29raWVKYXI+IGphcjsKKyAgICBzd2l0Y2ggKHN0b3JhZ2VUeXBlKSB7
CisgICAgY2FzZSBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUZXh0OgorICAgICAgICBqYXIg
PSBhZG9wdEdSZWYoc291cF9jb29raWVfamFyX3RleHRfbmV3KHN0b3JhZ2VQYXRoLnV0ZjgoKS5k
YXRhKCksIEZBTFNFKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgU291cENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlU1FMaXRlOgorICAgICAgICBqYXIgPSBhZG9wdEdSZWYod2Via2l0U291cENv
b2tpZUphclNxbGl0ZU5ldyhzdG9yYWdlUGF0aCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBTb3VwQ29v
a2llSmFyKiBjdXJyZW50SmFyID0gV2ViQ29yZTo6c291cENvb2tpZUphcigpOworICAgIHNvdXBf
Y29va2llX2phcl9zZXRfYWNjZXB0X3BvbGljeShqYXIuZ2V0KCksIHNvdXBfY29va2llX2phcl9n
ZXRfYWNjZXB0X3BvbGljeShjdXJyZW50SmFyKSk7CisgICAgU291cFNlc3Npb24qIHNlc3Npb24g
PSBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKKyAgICBzb3VwX3Nlc3Npb25fcmVt
b3ZlX2ZlYXR1cmUoc2Vzc2lvbiwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoY3VycmVudEphcikpOwor
ICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZShzZXNzaW9uLCBTT1VQX1NFU1NJT05fRkVBVFVS
RShqYXIuZ2V0KCkpKTsKKworICAgIFdlYkNvcmU6OnNldFNvdXBDb29raWVKYXIoamFyLmdldCgp
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVK
YXJTcWxpdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NzQwYzgK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291
cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcApAQCAtMCwwICsxLDIxMSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgor
I2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwor
c3RydWN0IF9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSB7CisgICAgU3RyaW5nIGRh
dGFiYXNlUGF0aDsKKyAgICBTUUxpdGVEYXRhYmFzZSBkYXRhYmFzZTsKKyAgICBib29sIGlzTG9h
ZGluZzsKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSwgd2Vi
a2l0X3NvdXBfY29va2llX2phcl9zcWxpdGUsIFNPVVBfVFlQRV9DT09LSUVfSkFSKQorCitlbnVt
IHsKKyAgICBDT0xVTU5fSUQsCisgICAgQ09MVU1OX05BTUUsCisgICAgQ09MVU1OX1ZBTFVFLAor
ICAgIENPTFVNTl9IT1NULAorICAgIENPTFVNTl9QQVRILAorICAgIENPTFVNTl9FWFBJUlksCisg
ICAgQ09MVU1OX0xBU1RfQUNDRVNTLAorICAgIENPTFVNTl9TRUNVUkUsCisgICAgQ09MVU1OX0hU
VFBfT05MWQorfTsKKworc3RhdGljIGJvb2wgd2Via2l0U291cENvb2tpZUphclNxbGl0ZU9wZW5E
YXRhYmFzZShXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlKiBzcWxpdGVKYXIpCit7CisgICAgV2Vi
S2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHByaXYgPSBzcWxpdGVKYXItPnByaXY7Cisg
ICAgaWYgKHByaXYtPmRhdGFiYXNlLmlzT3BlbigpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIEFTU0VSVCghcHJpdi0+ZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSk7CisgICAgaWYgKCFwcml2
LT5kYXRhYmFzZS5vcGVuKHByaXYtPmRhdGFiYXNlUGF0aCkpIHsKKyAgICAgICAgZ193YXJuaW5n
KCJDYW4ndCBvcGVuIGRhdGFiYXNlICVzIiwgcHJpdi0+ZGF0YWJhc2VQYXRoLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdi0+ZGF0YWJhc2Uu
c2V0U3luY2hyb25vdXMoU1FMaXRlRGF0YWJhc2U6OlN5bmNPZmYpOworICAgIHByaXYtPmRhdGFi
YXNlLmV4ZWN1dGVDb21tYW5kKCJQUkFHTUEgc2VjdXJlX2RlbGV0ZSA9IDE7Iik7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgd2Via2l0U291cENvb2tpZUphclNxbGl0ZUNy
ZWF0ZVRhYmxlKFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUqIHNxbGl0ZUphcikKK3sKKyAgICBX
ZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSogcHJpdiA9IHNxbGl0ZUphci0+cHJpdjsK
KyAgICBpZiAocHJpdi0+ZGF0YWJhc2UudGFibGVFeGlzdHMoIm1vel9jb29raWVzIikpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFwcml2LT5kYXRhYmFzZS5leGVjdXRlQ29tbWFu
ZCgiQ1JFQVRFIFRBQkxFIG1vel9jb29raWVzIChpZCBJTlRFR0VSIFBSSU1BUlkgS0VZLCBuYW1l
IFRFWFQsIHZhbHVlIFRFWFQsIGhvc3QgVEVYVCwgcGF0aCBURVhULCBleHBpcnkgSU5URUdFUiwg
bGFzdEFjY2Vzc2VkIElOVEVHRVIsIGlzU2VjdXJlIElOVEVHRVIsIGlzSHR0cE9ubHkgSU5URUdF
UikiKSkgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBjcmVhdGUgdGFibGUgbW96X2Nv
b2tpZXM6ICglaSkgLSAlcyIsIHByaXYtPmRhdGFiYXNlLmxhc3RFcnJvcigpLCBwcml2LT5kYXRh
YmFzZS5sYXN0RXJyb3JNc2coKSk7CisgICAgICAgIHByaXYtPmRhdGFiYXNlLmNsb3NlKCk7CisK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlTG9hZChXZWJLaXRTb3VwQ29va2ll
SmFyU3FsaXRlKiBzcWxpdGVKYXIpCit7CisgICAgaWYgKCF3ZWJraXRTb3VwQ29va2llSmFyU3Fs
aXRlT3BlbkRhdGFiYXNlKHNxbGl0ZUphcikpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXdl
YmtpdFNvdXBDb29raWVKYXJTcWxpdGVDcmVhdGVUYWJsZShzcWxpdGVKYXIpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSogcHJpdiA9IHNx
bGl0ZUphci0+cHJpdjsKKyAgICBwcml2LT5pc0xvYWRpbmcgPSB0cnVlOworICAgIFNRTGl0ZVN0
YXRlbWVudCBxdWVyeShwcml2LT5kYXRhYmFzZSwgIlNFTEVDVCBpZCwgbmFtZSwgdmFsdWUsIGhv
c3QsIHBhdGgsIGV4cGlyeSwgbGFzdEFjY2Vzc2VkLCBpc1NlY3VyZSwgaXNIdHRwT25seSBGUk9N
IG1vel9jb29raWVzOyIpOworICAgIGlmIChxdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2sp
IHsKKyAgICAgICAgZ193YXJuaW5nKCJGYWlsZWQgdG8gcHJlcGFyZSBhbGwgY29va2llcyBxdWVy
eSIpOworICAgICAgICBwcml2LT5pc0xvYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFNvdXBDb29raWVKYXIqIGphciA9IFNPVVBfQ09PS0lFX0pBUihzcWxpdGVK
YXIpOworICAgIHRpbWVfdCBub3cgPSB0aW1lKDApOworICAgIGludCByZXN1bHQ7CisgICAgd2hp
bGUgKChyZXN1bHQgPSBxdWVyeS5zdGVwKCkpID09IFNRTFJlc3VsdFJvdykgeworICAgICAgICBp
bnQgZXhwaXJlVGltZSA9IHF1ZXJ5LmdldENvbHVtbkludChDT0xVTU5fRVhQSVJZKTsKKyAgICAg
ICAgaWYgKG5vdyA+PSBleHBpcmVUaW1lKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgU291cENvb2tpZSogY29va2llID0gc291cF9jb29raWVfbmV3KHF1ZXJ5LmdldENvbHVtblRl
eHQoQ09MVU1OX05BTUUpLnV0ZjgoKS5kYXRhKCksIHF1ZXJ5LmdldENvbHVtblRleHQoQ09MVU1O
X1ZBTFVFKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcXVlcnkuZ2V0Q29sdW1uVGV4dChDT0xVTU5fSE9TVCkudXRmOCgpLmRhdGEo
KSwgcXVlcnkuZ2V0Q29sdW1uVGV4dChDT0xVTU5fUEFUSCkudXRmOCgpLmRhdGEoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGlyZVRpbWUgLSBub3cg
PD0gR19NQVhJTlQgPyBleHBpcmVUaW1lIC0gbm93IDogR19NQVhJTlQpOworICAgICAgICBpZiAo
cXVlcnkuZ2V0Q29sdW1uSW50KENPTFVNTl9TRUNVUkUpKQorICAgICAgICAgICAgc291cF9jb29r
aWVfc2V0X3NlY3VyZShjb29raWUsIFRSVUUpOworICAgICAgICBpZiAocXVlcnkuZ2V0Q29sdW1u
SW50KENPTFVNTl9IVFRQX09OTFkpKQorICAgICAgICAgICAgc291cF9jb29raWVfc2V0X2h0dHBf
b25seShjb29raWUsIFRSVUUpOworCisgICAgICAgIHNvdXBfY29va2llX2phcl9hZGRfY29va2ll
KGphciwgY29va2llKTsKKyAgICB9CisKKyAgICBpZiAocmVzdWx0ICE9IFNRTFJlc3VsdERvbmUp
CisgICAgICAgIGdfd2FybmluZygiRXJyb3IgcmVhZGluZyBjb29raWVzIGZyb20gZGF0YWJhc2Ui
KTsKKyAgICBwcml2LT5pc0xvYWRpbmcgPSBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0
U291cENvb2tpZUphclNxbGl0ZUluc2VydENvb2tpZShXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRl
KiBzcWxpdGVKYXIsIFNvdXBDb29raWUqIGNvb2tpZSkKK3sKKyAgICBpZiAoIWNvb2tpZSB8fCAh
Y29va2llLT5leHBpcmVzKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCF3ZWJraXRTb3VwQ29v
a2llSmFyU3FsaXRlQ3JlYXRlVGFibGUoc3FsaXRlSmFyKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHByaXYgPSBzcWxpdGVKYXItPnBy
aXY7CisgICAgU1FMaXRlU3RhdGVtZW50IHF1ZXJ5KHByaXYtPmRhdGFiYXNlLCAiSU5TRVJUIElO
VE8gbW96X2Nvb2tpZXMgVkFMVUVTKE5VTEwsID8sID8sID8sID8sID8sIE5VTEwsID8sID8pOyIp
OworICAgIGlmIChxdWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKKyAgICAgICAgZ193
YXJuaW5nKCJGYWlsZWQgdG8gcHJlcGFyZSBpbnNlcnQgY29va2llcyBxdWVyeSIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgcXVlcnkuYmluZFRleHQoMSwgU3RyaW5nOjpmcm9tVVRG
OChjb29raWUtPm5hbWUpKTsKKyAgICBxdWVyeS5iaW5kVGV4dCgyLCBTdHJpbmc6OmZyb21VVEY4
KGNvb2tpZS0+dmFsdWUpKTsKKyAgICBxdWVyeS5iaW5kVGV4dCgzLCBTdHJpbmc6OmZyb21VVEY4
KGNvb2tpZS0+ZG9tYWluKSk7CisgICAgcXVlcnkuYmluZFRleHQoNCwgU3RyaW5nOjpmcm9tVVRG
OChjb29raWUtPnBhdGgpKTsKKyAgICBxdWVyeS5iaW5kSW50KDUsIChndWxvbmcpc291cF9kYXRl
X3RvX3RpbWVfdChjb29raWUtPmV4cGlyZXMpKTsKKyAgICBxdWVyeS5iaW5kSW50KDYsIGNvb2tp
ZS0+c2VjdXJlKTsKKyAgICBxdWVyeS5iaW5kSW50KDcsIGNvb2tpZS0+aHR0cF9vbmx5KTsKKyAg
ICBpZiAocXVlcnkuc3RlcCgpICE9IFNRTFJlc3VsdERvbmUpCisgICAgICAgIGdfd2FybmluZygi
RXJyb3IgYWRkaW5nIGNvb2tpZSAobmFtZT0lcywgZG9tYWluPSVzKSB0byBkYXRhYmFzZSIsIGNv
b2tpZS0+bmFtZSwgY29va2llLT5uYW1lKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0U291cENv
b2tpZUphclNxbGl0ZURlbGV0ZUNvb2tpZShXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlKiBzcWxp
dGVKYXIsIFNvdXBDb29raWUqIGNvb2tpZSkKK3sKKyAgICBpZiAoIWNvb2tpZSkKKyAgICAgICAg
cmV0dXJuOworICAgIGlmICghd2Via2l0U291cENvb2tpZUphclNxbGl0ZUNyZWF0ZVRhYmxlKHNx
bGl0ZUphcikpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxp
dGVQcml2YXRlKiBwcml2ID0gc3FsaXRlSmFyLT5wcml2OworICAgIFNRTGl0ZVN0YXRlbWVudCBx
dWVyeShwcml2LT5kYXRhYmFzZSwgIkRFTEVURSBGUk9NIG1vel9jb29raWVzIFdIRVJFIG5hbWUg
PSAoPykgQU5EIGhvc3QgPSAoPyk7Iik7CisgICAgaWYgKHF1ZXJ5LnByZXBhcmUoKSAhPSBTUUxS
ZXN1bHRPaykgeworICAgICAgICBnX3dhcm5pbmcoIkZhaWxlZCB0byBwcmVwYXJlIGRlbGV0ZSBj
b29raWVzIHF1ZXJ5Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBxdWVyeS5iaW5k
VGV4dCgxLCBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZS0+bmFtZSkpOworICAgIHF1ZXJ5LmJpbmRU
ZXh0KDIsIFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5kb21haW4pKTsKKyAgICBpZiAocXVlcnku
c3RlcCgpICE9IFNRTFJlc3VsdERvbmUpCisgICAgICAgIGdfd2FybmluZygiRXJyb3IgZGVsZXRp
bmcgY29va2llIChuYW1lPSVzLCBkb21haW49JXMpIGZyb20gZGF0YWJhc2UiLCBjb29raWUtPm5h
bWUsIGNvb2tpZS0+bmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBDb29raWVKYXJT
cWxpdGVDaGFuZ2VkKFNvdXBDb29raWVKYXIqIGphciwgU291cENvb2tpZSogb2xkQ29va2llLCBT
b3VwQ29va2llKiBuZXdDb29raWUpCit7CisgICAgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSog
c3FsaXRlSmFyID0gV0VCS0lUX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUoamFyKTsKKyAgICBpZiAo
c3FsaXRlSmFyLT5wcml2LT5pc0xvYWRpbmcpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXdl
YmtpdFNvdXBDb29raWVKYXJTcWxpdGVPcGVuRGF0YWJhc2Uoc3FsaXRlSmFyKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgd2Via2l0U291cENvb2tpZUphclNxbGl0ZURlbGV0ZUNvb2tpZShzcWxp
dGVKYXIsIG9sZENvb2tpZSk7CisgICAgd2Via2l0U291cENvb2tpZUphclNxbGl0ZUluc2VydENv
b2tpZShzcWxpdGVKYXIsIG5ld0Nvb2tpZSk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBD
b29raWVKYXJTcWxpdGVGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCit7CisgICAgV0VCS0lUX1NP
VVBfQ09PS0lFX0pBUl9TUUxJVEUob2JqZWN0KS0+cHJpdi0+fldlYktpdFNvdXBDb29raWVKYXJT
cWxpdGVQcml2YXRlKCk7CisgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3NvdXBfY29va2llX2ph
cl9zcWxpdGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVfaW5pdChXZWJLaXRTb3VwQ29va2llSmFy
U3FsaXRlKiBzcWxpdGVKYXIpCit7CisgICAgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZh
dGUqIHByaXYgPSBHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoc3FsaXRlSmFyLCBXRUJLSVRf
VFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFLCBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJp
dmF0ZSk7CisgICAgc3FsaXRlSmFyLT5wcml2ID0gcHJpdjsKKyAgICBuZXcgKHByaXYpIFdlYktp
dFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlKCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9z
b3VwX2Nvb2tpZV9qYXJfc3FsaXRlX2NsYXNzX2luaXQoV2ViS2l0U291cENvb2tpZUphclNxbGl0
ZUNsYXNzKiBzcWxpdGVKYXJDbGFzcykKK3sKKyAgICBTb3VwQ29va2llSmFyQ2xhc3MqIGNvb2tp
ZUphckNsYXNzID0gU09VUF9DT09LSUVfSkFSX0NMQVNTKHNxbGl0ZUphckNsYXNzKTsKKyAgICBj
b29raWVKYXJDbGFzcy0+Y2hhbmdlZCA9IHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVDaGFuZ2Vk
OworCisgICAgR09iamVjdENsYXNzKiBnT2JqZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhzcWxp
dGVKYXJDbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IHdlYmtpdFNvdXBDb29r
aWVKYXJTcWxpdGVGaW5hbGl6ZTsKKworICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZShzcWxp
dGVKYXJDbGFzcywgc2l6ZW9mKFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlKSk7Cit9
CisKK1NvdXBDb29raWVKYXIqIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVOZXcoY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZVBhdGgpCit7CisgICAgQVNTRVJUKCFwcml2LT5kYXRhYmFzZVBhdGguaXNF
bXB0eSgpKTsKKyAgICBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlKiBzcWxpdGVKYXIgPSBXRUJL
SVRfU09VUF9DT09LSUVfSkFSX1NRTElURShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU09VUF9D
T09LSUVfSkFSX1NRTElURSwgTlVMTCkpOworICAgIHNxbGl0ZUphci0+cHJpdi0+ZGF0YWJhc2VQ
YXRoID0gZGF0YWJhc2VQYXRoOworICAgIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVMb2FkKHNx
bGl0ZUphcik7CisgICAgcmV0dXJuIFNPVVBfQ09PS0lFX0pBUihzcWxpdGVKYXIpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291
cENvb2tpZUphclNxbGl0ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3Nv
dXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjg2YTA5MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmgKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlX2gKKyNkZWZpbmUgV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZV9oCisKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAtY29va2llLWphci5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgV0VCS0lU
X1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSAgICAgICAgICAgICh3ZWJraXRfc291cF9jb29r
aWVfamFyX3NxbGl0ZV9nZXRfdHlwZSgpKQorI2RlZmluZSBXRUJLSVRfU09VUF9DT09LSUVfSkFS
X1NRTElURShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2Jq
KSwgV0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSwgV2ViS2l0U291cENvb2tpZUph
clNxbGl0ZSkpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQX0NPT0tJRV9KQVJfU1FMSVRFKG9iaikg
ICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9T
T1VQX0NPT0tJRV9KQVJfU1FMSVRFKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQ09PS0lFX0pBUl9T
UUxJVEVfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwg
V0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSwgV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZUNsYXNzKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEVfQ0xB
U1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKG9iaiksIFdFQktJVF9UWVBFX1NP
VVBfQ09PS0lFX0pBUl9TUUxJVEUpKQorI2RlZmluZSBXRUJLSVRfU09VUF9DT09LSUVfSkFSX1NR
TElURV9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBX
RUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFLCBXZWJLaXRTb3VwQ29va2llSmFyU3Fs
aXRlQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSBX
ZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNvdXBDb29r
aWVKYXJTcWxpdGVDbGFzcyBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlQ2xhc3M7Cit0eXBlZGVm
IHN0cnVjdCBfV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUgV2ViS2l0U291cENvb2tp
ZUphclNxbGl0ZVByaXZhdGU7CisKK3N0cnVjdCBfV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSB7
CisgICAgU291cENvb2tpZUphciBwYXJlbnQ7CisKKyAgICBXZWJLaXRTb3VwQ29va2llSmFyU3Fs
aXRlUHJpdmF0ZSogcHJpdjsKK307CisKK3N0cnVjdCBfV2ViS2l0U291cENvb2tpZUphclNxbGl0
ZUNsYXNzIHsKKyAgICBTb3VwQ29va2llSmFyQ2xhc3MgcGFyZW50Q2xhc3M7Cit9OworCitHVHlw
ZSB3ZWJraXRfc291cF9jb29raWVfamFyX3NxbGl0ZV9nZXRfdHlwZSgpOworU291cENvb2tpZUph
ciogd2Via2l0U291cENvb2tpZUphclNxbGl0ZU5ldyhjb25zdCBTdHJpbmcmIGRhdGFiYXNlUGF0
aCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvLyBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRl
LmgK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151137</attachid>
            <date>2012-07-07 02:50:51 -0700</date>
            <delta_ts>2012-07-11 12:09:59 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-persistent-cookies3.diff</filename>
            <type>text/plain</type>
            <size>42205</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyZjU3N2Y2Li42MDVjN2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTItMDctMDYgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3BlcnNpc3Rl
bnRfc3RvcmFnZSgpIHRvIFdlYktpdDIgR1RLKyBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMDE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3Rv
cmFnZVNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c291cENvb2tpZXNDaGFuZ2VkKTogRG8g
bm90IG5vdGlmeSBhYm91dCBjaGFuZ2VzIGluCisgICAgICAgIG90aGVyIGNvb2tpZSBqYXJzIHRo
YW4gdGhlIGN1cnJlbnQgb25lLgorCiAyMDEyLTA3LTA2ICBBbGV4ZWkgRmlsaXBwb3YgIDxhbGV4
ZWlmQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBBZGQgbmF0aXZlIG1l
bW9yeSB1c2VkIGJ5IEdseXBoQ2FjaGUgdG8gdGhlIHNuYXBzaG90CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVN0b3JhZ2VTb3VwLmNw
cAppbmRleCAyZDcxNzQ3Li5mMzA5ZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVTdG9yYWdlU291cC5jcHAKQEAgLTM3LDgg
KzM3LDEwIEBAIHZvaWQgc2V0Q29va2llU3RvcmFnZVByaXZhdGVCcm93c2luZ0VuYWJsZWQoYm9v
bCBlbmFibGVkKQogfQogCiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCi1zdGF0aWMgdm9p
ZCBzb3VwQ29va2llc0NoYW5nZWQoU291cENvb2tpZUphciosIFNvdXBDb29raWUqLCBTb3VwQ29v
a2llKiwgZ3BvaW50ZXIpCitzdGF0aWMgdm9pZCBzb3VwQ29va2llc0NoYW5nZWQoU291cENvb2tp
ZUphciogamFyLCBTb3VwQ29va2llKiwgU291cENvb2tpZSosIGdwb2ludGVyKQogeworICAgIGlm
IChqYXIgIT0gc291cENvb2tpZUphcigpKQorICAgICAgICByZXR1cm47CiAgICAgcGxhdGZvcm1T
dHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5ub3RpZnlDb29raWVzQ2hhbmdlZCgpOwog
fQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggODVjMzVhYi4uYjQ4ODAxNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDY4IEBACiAyMDEyLTA3LTA2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAorICAgICAgICBbR1RLXSBBZGQgd2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3Nl
dF9wZXJzaXN0ZW50X3N0b3JhZ2UoKSB0byBXZWJLaXQyIEdUSysgQVBJCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzAxNgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGN1c3RvbSBpbXBsZW1lbnRh
dGlvbiBvZiBTb3VwQ29va2llSmFyU3FsaXRlIGJhc2VkIG9uCisgICAgICAgIGxpYnNvdXAgY29k
ZSBidXQgdXNpbmcgV2ViQ29yZSBTUUxpdGUgY2xhc3Nlcy4gU291cENvb2tpZUphclNxbGl0ZQor
ICAgICAgICBpcyBwYXJ0IG9mIGxpYnNvdXAtZ25vbWUsIGl0J3Mgbm90IGEgbG90IG9mIGNvZGUg
YW5kIGl0IGRvZXNuJ3QKKyAgICAgICAgY2hhbmdlIG9mdGVuLCBzbyBpdCdzIGJldHRlciB0byBz
aW1wbHkgaGF2ZSBvdXIgb3duIGltcGxlbWVudGF0aW9uCisgICAgICAgIGluc3RlYWQgb2YgbWFr
aW5nIHRoaXMgaW1wb3J0YW50IGZlYXR1cmUgZGVwZW5kIG9uIGFuIG9wdGlvbmFsCisgICAgICAg
IGRlcGVuZGVuY3kuIFRoZXJlIGFyZSBwbGFucyB0byBtb3ZlIHRoZSBpbXBsZW1lbnRhdGlvbiB0
byBsaWJzb3VwLAorICAgICAgICBpZiB0aGF0IGV2ZW50dWFsbHkgaGFwcGVucyB3ZSB3aWxsIHJl
bW92ZSBvdXIgY29kZSB0byB1c2UgbGlic291cAorICAgICAgICBkaXJlY3RseS4KKworICAgICAg
ICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQgbmV3IGRpcnMgdG8gaW5jbHVkZSBwYXRoLgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IEFkZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisg
ICAgICAgICogUGxhdGZvcm1FZmwuY21ha2U6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9zb3Vw
L1NvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvV2ViS2l0Q29va2llTWFuYWdlci5jcHA6CisgICAgICAgICh3ZWJraXRf
Y29va2llX21hbmFnZXJfc2V0X3BlcnNpc3RlbnRfc3RvcmFnZSk6IFNldCBhIHBlcnNpc3RlbnQK
KyAgICAgICAgc3RvcmFnZSBmb3IgY29va2llcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRDb29raWVNYW5hZ2VyLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvZG9j
cy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dDogQWRkIG5ldyBzeW1ib2xzCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdENvb2tpZU1hbmFnZXIuY3BwOgorICAgICAgICAodGVz
dENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZSk6CisgICAgICAgIChzZXJ2ZXJDYWxsYmFj
ayk6CisgICAgICAgIChiZWZvcmVBbGwpOgorICAgICAgICAoYWZ0ZXJBbGwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKFdlYkNvb2tpZU1h
bmFnZXJQcm94eSk6IEFkZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpIG1ldGhvZAorICAg
ICAgICB3aGVuIHVzaW5nIHNvdXAuCisgICAgICAgICogVUlQcm9jZXNzL3NvdXAvV2ViQ29va2ll
TWFuYWdlclByb3h5U291cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKTogU2VuZAorICAgICAgICBT
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSBtZXNzYWdlIHRvIHRoZSB3ZWIgcHJvY2Vzcy4KKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oOgorICAgICAgICAo
V2ViQ29va2llTWFuYWdlcik6IEFkZCBzZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZSgpIG1ldGhv
ZCB3aGVuCisgICAgICAgIHVzaW5nIHNvdXAuCisgICAgICAgICogV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW46IEFkZAorICAgICAgICBTZXRDb29raWVQZXJz
aXN0ZW50U3RvcmFnZSBtZXNzYWdlIHdoZW4gdXNpbmcgc291cC4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKTogQ3JlYXRl
IGEKKyAgICAgICAgbmV3IGNvb2tpZSBqYXIgZm9yIHRoZSBnaXZlbiBmaWxlbmFtZSBhbmQgc3Rv
cmFnZSB0eXBlIGFuZCBhZGQgaXQKKyAgICAgICAgdG8gdGhlIHNvdXAgc2Vzc2lvbi4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNw
cDogQWRkZWQuCisgICAgICAgICh3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlT3BlbkRhdGFiYXNl
KTogT3BlbiBTUUxpdGUgZGF0YWJhc2UuCisgICAgICAgICh3ZWJraXRTb3VwQ29va2llSmFyU3Fs
aXRlQ3JlYXRlVGFibGUpOiBDcmVhdGUgbW96X2Nvb2tpZXMgaWYgaXQKKyAgICAgICAgZG9lc24n
dCBleGlzdC4KKyAgICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVMb2FkKTogTG9hZCB0
aGUgaW5pdGlhbCBzZXQgb2YgY29va2llcworICAgICAgICBmcm9tIHRoZSBkYXRhYmFzZS4KKyAg
ICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVJbnNlcnRDb29raWUpOiBJbnNlcnQgYSBu
ZXcgY29va2llIGludG8KKyAgICAgICAgdGhlIGRhdGFiYXNlLgorICAgICAgICAod2Via2l0U291
cENvb2tpZUphclNxbGl0ZURlbGV0ZUNvb2tpZSk6IERlbGV0ZSBhbiBleGlzaW5nIGNvb2tpZQor
ICAgICAgICBmcm9tIHRoZSBkYXRhYmFzZS4KKyAgICAgICAgKHdlYmtpdFNvdXBDb29raWVKYXJT
cWxpdGVDaGFuZ2VkKTogSW5zZXJ0L2RlbGV0ZSBjb29raWVzCisgICAgICAgIGRlcGVuZGluZyBv
biB0aGUgY2hhbmdlLgorICAgICAgICAod2Via2l0U291cENvb2tpZUphclNxbGl0ZUZpbmFsaXpl
KToKKyAgICAgICAgKHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlX2luaXQpOgorICAgICAg
ICAod2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVfY2xhc3NfaW5pdCk6CisgICAgICAgICh3
ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlTmV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Nvb2tp
ZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmg6IEFkZGVkLgorCisyMDEyLTA3LTA2
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBb
R1RLXSBBZGQgc2l0ZSBzcGVjaWZpYyBxdWlya3Mgc2V0dGluZyB0byBXZWJLaXQyIEdUSysgQVBJ
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDY2Mwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJL
aXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE2ODIzMDUuLmE5ODA5YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2Vm
aWxlLmFtCkBAIC00MCw2ICs0MCw3IEBAIGxpYndlYmtpdDJndGtfQFdFQktJVEdUS19BUElfTUFK
T1JfVkVSU0lPTkBfQFdFQktJVEdUS19BUElfTUlOT1JfVkVSU0lPTkBfbGFfQ1BQCiAJLUkkKHNy
Y2RpcikvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEgXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQyBcCkBAIC00MTYsNiArNDE3
LDcgQEAgUHJvZ3JhbXNfV2ViS2l0UGx1Z2luUHJvY2Vzc19DUFBGTEFHUyA9IFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy8gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS8gXAorCS1JJChzcmNkaXIpL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9zb3VwIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNl
cy9XZWJLaXQyIFwKIAktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVkU291cmNlcy9XZWJLaXQyL2lu
Y2x1ZGUgXAogCS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzL1dlYktpdDIvaW5jbHVk
ZS9KYXZhU2NyaXB0Q29yZSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBhNzE1
NjI0Li4yMjY5NzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0
LmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQxOSw2ICs0
MTksNyBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0
aXN0aWNzRGF0YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0aWNzRGF0YS5o
IFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RyaW5nUGFpclZlY3Rvci5oIFwKKwlTb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmggXAog
CVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9UZXh0Q2hlY2tlclN0YXRlLmggXAogCVNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNvZGVycy5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
VXBkYXRlSW5mby5jcHAgXApAQCAtNzc1LDYgKzc3Niw3IEBAIHdlYmtpdDJfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NNb2RlbC5oIFwKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAgXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmggXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJDbGllbnQuaCBc
CiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3NvdXAvV2ViU291cFJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwIFwKQEAgLTg4OSw2ICs4OTEsOCBAQCB3ZWJraXQyX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcCBcCiAJU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAu
Y3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJLaXRTb3Vw
Q29va2llSmFyU3FsaXRlLmNwcCBcCisJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZC5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkLmggXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL0Rvd25sb2FkQXV0aGVudGljYXRpb25DbGllbnQuaCBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDdkMDYxODQuLjM4ZWNhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC01Miw2ICs1Miw3IEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJlZmVy
ZW5jZXNFZmwuY3BwCiAKKyAgICBVSVByb2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlT
b3VwLmNwcAogICAgIFVJUHJvY2Vzcy9zb3VwL1dlYlNvdXBSZXF1ZXN0TWFuYWdlckNsaWVudC5j
cHAKICAgICBVSVByb2Nlc3Mvc291cC9XZWJTb3VwUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKIApA
QCAtNjEsNiArNjIsNyBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nl
c3MvUGx1Z2lucy91bml4L1BsdWdpbkluZm9TdG9yZVVuaXguY3BwCiAKICAgICBXZWJQcm9jZXNz
L0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKKyAgICBXZWJQcm9jZXNzL0Nv
b2tpZXMvc291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcAogCiAgICAgV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkRWZsLmNwcAogICAgIFdlYlByb2Nlc3MvRG93bmxvYWRz
L2VmbC9GaWxlRG93bmxvYWRlckVmbC5jcHAKQEAgLTk1LDYgKzk3LDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3Jt
L25ldHdvcmsvc291cCIKICAgICAiJHtXRUJDT1JFX0RJUn0vc3ZnL2dyYXBoaWNzIgogICAgICIk
e1dFQktJVDJfRElSfS9TaGFyZWQvZWZsIgorICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvc291
cCIKICAgICAiJHtXRUJLSVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL2VmbCIKICAgICAiJHtXRUJL
SVQyX0RJUn0vVUlQcm9jZXNzL0FQSS9DL3NvdXAiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1VJUHJv
Y2Vzcy9BUEkvZWZsIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvU291
cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL3Nv
dXAvU291cENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjA2NjIxODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvc291cC9Tb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VUeXBlLmgKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFNvdXBDb29raWVQZXJz
aXN0ZW50U3RvcmFnZVR5cGVfaAorI2RlZmluZSBTb3VwQ29va2llUGVyc2lzdGVudFN0b3JhZ2VU
eXBlX2gKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2VudW0geworICAgIFNvdXBDb29raWVQZXJz
aXN0ZW50U3RvcmFnZVRleHQgPSAwLAorICAgIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNR
TGl0ZSA9IDEKK307Cit0eXBlZGVmIHVuc2lnbmVkIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFn
ZVR5cGU7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gU291cENvb2tpZVBl
cnNpc3RlbnRTdG9yYWdlVHlwZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdENvb2tpZU1hbmFnZXIuY3BwCmluZGV4IDdkOGExMGUuLjg3OTBj
N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdENv
b2tpZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvb2tpZU1hbmFnZXIuY3BwCkBAIC0yMCw2ICsyMCw4IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiV2ViS2l0Q29va2llTWFuYWdlci5oIgogCisjaW5jbHVkZSAiU291cENv
b2tpZVBlcnNpc3RlbnRTdG9yYWdlVHlwZS5oIgorI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oIgogI2luY2x1ZGUgIldlYktpdENvb2tpZU1hbmFnZXJQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RW51bVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgpA
QCAtNDEsNiArNDMsOSBAQCBzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAs
IH07CiAKIEdfREVGSU5FX1RZUEUoV2ViS2l0Q29va2llTWFuYWdlciwgd2Via2l0X2Nvb2tpZV9t
YW5hZ2VyLCBHX1RZUEVfT0JKRUNUKQogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdF
QktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1RFWFQsIFNvdXBDb29raWVQZXJzaXN0ZW50
U3RvcmFnZVRleHQpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQ09PS0lF
X1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEUsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNR
TGl0ZSk7CisKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0NPT0tJRV9QT0xJ
Q1lfQUNDRVBUX0FMV0FZUywga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyk7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJVF9DT09LSUVfUE9MSUNZX0FDQ0VQVF9ORVZF
Uiwga1dLSFRUUENvb2tpZUFjY2VwdFBvbGljeU5ldmVyKTsKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBUX05PX1RISVJEX1BBUlRZLCBrV0tI
VFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pOwpAQCAtMTA0
LDYgKzEwOSwzMCBAQCBXZWJLaXRDb29raWVNYW5hZ2VyKiB3ZWJraXRDb29raWVNYW5hZ2VyQ3Jl
YXRlKFdLQ29va2llTWFuYWdlclJlZiB3a0Nvb2tpZU1hbmFnZQogfQogCiAvKioKKyAqIHdlYmtp
dF9jb29raWVfbWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlOgorICogQGNvb2tpZV9tYW5h
Z2VyOiBhICNXZWJLaXRDb29raWVNYW5hZ2VyCisgKiBAZmlsZW5hbWU6IHRoZSBmaWxlbmFtZSB0
byByZWFkIHRvL3dyaXRlIGZyb20KKyAqIEBzdG9yYWdlOiBhICNXZWJLaXRDb29raWVQZXJzaXN0
ZW50U3RvcmFnZQorICoKKyAqIFNldCB0aGUgQGZpbGVuYW1lIHdoZXJlIG5vbi1zZXNzaW9uIGNv
b2tpZXMgYXJlIHN0b3JlZCBwZXJzaXN0ZW50bHkgdXNpbmcKKyAqIEBzdG9yYWdlIGFzIHRoZSBm
b3JtYXQgdG8gcmVhZC93cml0ZSB0aGUgY29va2llcy4KKyAqIENvb2tpZXMgYXJlIGluaXRpYWxs
eSByZWFkIGZyb20gQGZpbGVuYW1lIHRvIGNyZWF0ZSBhbiBpbml0aWFsIHNldCBvZiBjb29raWVz
LgorICogVGhlbiwgbm9uLXNlc3Npb24gY29va2llcyB3aWxsIGJlIHdyaXR0ZW4gdG8gQGZpbGVu
YW1lIHdoZW4gdGhlIFdlYktpdENvb2tpZU1hbmFnZXI6OmNoYW5nZWQKKyAqIHNpZ25hbCBpcyBl
bWl0dGVkLgorICogQnkgZGVmYXVsdCwgQGNvb2tpZV9tYW5hZ2VyIGRvZXNuJ3Qgc3RvcmUgdGhl
IGNvb2tpZXMgcGVyc2lzdGVubHksIHNvIHlvdSBuZWVkIHRvIGNhbGwgdGhpcworICogbWV0aG9k
IHRvIGtlZXAgY29va2llcyBzYXZlZCBhY3Jvc3Mgc2Vzc2lvbnMuCisgKi8KK3ZvaWQgd2Via2l0
X2Nvb2tpZV9tYW5hZ2VyX3NldF9wZXJzaXN0ZW50X3N0b3JhZ2UoV2ViS2l0Q29va2llTWFuYWdl
ciogbWFuYWdlciwgY29uc3QgY2hhciogZmlsZW5hbWUsIFdlYktpdENvb2tpZVBlcnNpc3RlbnRT
dG9yYWdlIHN0b3JhZ2UpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQ09PS0lF
X01BTkFHRVIobWFuYWdlcikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoZmlsZW5hbWUpOworCisg
ICAgV0tDb29raWVNYW5hZ2VyU3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMobWFuYWdlci0+cHJp
di0+d2tDb29raWVNYW5hZ2VyLmdldCgpKTsKKyAgICB0b0ltcGwobWFuYWdlci0+cHJpdi0+d2tD
b29raWVNYW5hZ2VyLmdldCgpKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoU3RyaW5nOjpm
cm9tVVRGOChmaWxlbmFtZSksIHN0b3JhZ2UpOworICAgIFdLQ29va2llTWFuYWdlclN0YXJ0T2Jz
ZXJ2aW5nQ29va2llQ2hhbmdlcyhtYW5hZ2VyLT5wcml2LT53a0Nvb2tpZU1hbmFnZXIuZ2V0KCkp
OworfQorCisvKioKICAqIHdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvbGljeToK
ICAqIEBjb29raWVfbWFuYWdlcjogYSAjV2ViS2l0Q29va2llTWFuYWdlcgogICogQHBvbGljeTog
YSAjV2ViS2l0Q29va2llQWNjZXB0UG9saWN5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRDb29raWVNYW5hZ2VyLmgKaW5kZXggMjQ3MmQ5Ni4uYzIw
OWQ0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0
Q29va2llTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdENvb2tpZU1hbmFnZXIuaApAQCAtNDIsNiArNDIsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdENvb2tpZU1hbmFnZXJDbGFzcyAgIFdlYktpdENvb2tpZU1hbmFnZXJDbGFzczsKIHR5cGVk
ZWYgc3RydWN0IF9XZWJLaXRDb29raWVNYW5hZ2VyUHJpdmF0ZSBXZWJLaXRDb29raWVNYW5hZ2Vy
UHJpdmF0ZTsKIAogLyoqCisgKiBXZWJLaXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZToKKyAqIEBX
RUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUOiBDb29raWVzIGFyZSBzdG9yZWQg
aW4gYSB0ZXh0CisgKiAgZmlsZSBpbiB0aGUgTW96aWxsYSAiY29va2llcy50eHQiIGZvcm1hdC4K
KyAqIEBXRUJLSVRfQ09PS0lFX1BFUlNJU1RFTlRfU1RPUkFHRV9TUUxJVEU6IENvb2tpZXMgYXJl
IHN0b3JlZCBpbiBhIFNRTGl0ZQorICogIGZpbGUgaW4gdGhlIG5ldyBNb3ppbGxhIGZvcm1hdC4K
KyAqCisgKiBFbnVtIHZhbHVlcyB1c2VkIHRvIGRlbm90ZSB0aGUgY29va2llIHBlcnNpc3RlbnQg
c3RvcmFnZSB0eXBlcy4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgICBXRUJLSVRfQ09PS0lFX1BF
UlNJU1RFTlRfU1RPUkFHRV9URVhULAorICAgIFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9S
QUdFX1NRTElURQorfSBXZWJLaXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZTsKKworLyoqCiAgKiBX
ZWJLaXRDb29raWVBY2NlcHRQb2xpY3k6CiAgKiBAV0VCS0lUX0NPT0tJRV9QT0xJQ1lfQUNDRVBU
X0FMV0FZUzogQWNjZXB0IGFsbCBjb29raWVzIHVuY29uZGl0aW9uYWxseS4KICAqIEBXRUJLSVRf
Q09PS0lFX1BPTElDWV9BQ0NFUFRfTkVWRVI6IFJlamVjdCBhbGwgY29va2llcyB1bmNvbmRpdGlv
bmFsbHkuCkBAIC02OSwzNyArODMsNDIgQEAgV0VCS0lUX0FQSSBHVHlwZQogd2Via2l0X2Nvb2tp
ZV9tYW5hZ2VyX2dldF90eXBlICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCiBXRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9jb29raWVfbWFuYWdlcl9zZXRfYWNjZXB0X3BvbGljeSAgICAg
ICAgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAqY29va2llX21hbmFnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViS2l0
Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSk7Cit3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X3Bl
cnNpc3RlbnRfc3RvcmFnZSAgICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgICAgICAq
Y29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAqZmlsZW5hbWUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2Vi
S2l0Q29va2llUGVyc2lzdGVudFN0b3JhZ2Ugc3RvcmFnZSk7CisKK1dFQktJVF9BUEkgdm9pZAor
d2Via2l0X2Nvb2tpZV9tYW5hZ2VyX3NldF9hY2NlcHRfcG9saWN5ICAgICAgICAgICAgICAgKFdl
YktpdENvb2tpZU1hbmFnZXIgICAgICAgICAgKmNvb2tpZV9tYW5hZ2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdENvb2tpZUFj
Y2VwdFBvbGljeSAgICAgIHBvbGljeSk7CiAKIFdFQktJVF9BUEkgdm9pZAotd2Via2l0X2Nvb2tp
ZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5ICAgICAgICAgICAgICAgKFdlYktpdENvb2tpZU1h
bmFnZXIgICAgICpjb29raWVfbWFuYWdlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAqY2FuY2Vs
bGFibGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0FzeW5jUmVhZHlDYWxsYmFjayAgICAgIGNhbGxiYWNrLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAg
ICAgICAgICB1c2VyX2RhdGEpOword2Via2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9s
aWN5ICAgICAgICAgICAgICAgKFdlYktpdENvb2tpZU1hbmFnZXIgICAgICAgICAgKmNvb2tpZV9t
YW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdDYW5jZWxsYWJsZSAgICAgICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jl
YWR5Q2FsbGJhY2sgICAgICAgICAgIGNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgICAgICAgICAgICAg
ICAgIHVzZXJfZGF0YSk7CiAKIFdFQktJVF9BUEkgV2ViS2l0Q29va2llQWNjZXB0UG9saWN5Ci13
ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2FjY2VwdF9wb2xpY3lfZmluaXNoICAgICAgICAoV2Vi
S2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3VsdCAgICAgICAg
ICAgICpyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAqKmVycm9yKTsKK3dlYmtpdF9jb29r
aWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeV9maW5pc2ggICAgICAgIChXZWJLaXRDb29raWVN
YW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgICAg
ICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICoqZXJyb3IpOwogCiBXRUJL
SVRfQVBJIHZvaWQKLXdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tp
ZXMgICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAqY29va2llX21hbmFnZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0NhbmNl
bGxhYmxlICAgICAgICAgICAgKmNhbmNlbGxhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgICAgICBj
YWxsYmFjaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBncG9pbnRlciAgICAgICAgICAgICAgICAgdXNlcl9kYXRhKTsKK3dlYmtpdF9jb29r
aWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXMgICAgICAgIChXZWJLaXRDb29raWVN
YW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ2FuY2VsbGFibGUgICAgICAgICAgICAg
ICAgICpjYW5jZWxsYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHQXN5bmNSZWFkeUNhbGxiYWNrICAgICAgICAgICBjYWxsYmFjaywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
cG9pbnRlciAgICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGEpOwogCiBXRUJLSVRfQVBJIGdj
aGFyICoqCi13ZWJraXRfY29va2llX21hbmFnZXJfZ2V0X2RvbWFpbnNfd2l0aF9jb29raWVzX2Zp
bmlzaCAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9tYW5hZ2VyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1Jlc3Vs
dCAgICAgICAgICAgICpyZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAqKmVycm9yKTsKK3dl
YmtpdF9jb29raWVfbWFuYWdlcl9nZXRfZG9tYWluc193aXRoX2Nvb2tpZXNfZmluaXNoIChXZWJL
aXRDb29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAg
ICAgICAgICAgICAgICpyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgICAgICAgICAgICAgICoqZXJyb3Ip
OwogCiBXRUJLSVRfQVBJIHZvaWQKLXdlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVfY29va2ll
c19mb3JfZG9tYWluICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAqY29va2llX21hbmFn
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgKmRvbWFpbik7Cit3ZWJraXRfY29va2llX21hbmFn
ZXJfZGVsZXRlX2Nvb2tpZXNfZm9yX2RvbWFpbiAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAg
ICAgICAgICAqY29va2llX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgICAgICAgICAgICAqZG9t
YWluKTsKIAogV0VCS0lUX0FQSSB2b2lkCi13ZWJraXRfY29va2llX21hbmFnZXJfZGVsZXRlX2Fs
bF9jb29raWVzICAgICAgICAgICAgICAoV2ViS2l0Q29va2llTWFuYWdlciAgICAgKmNvb2tpZV9t
YW5hZ2VyKTsKK3dlYmtpdF9jb29raWVfbWFuYWdlcl9kZWxldGVfYWxsX2Nvb2tpZXMgICAgICAg
ICAgICAgIChXZWJLaXRDb29raWVNYW5hZ2VyICAgICAgICAgICpjb29raWVfbWFuYWdlcik7CiAK
IEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL2RvY3Mvd2Via2l0Mmd0ay1zZWN0aW9ucy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9kb2NzL3dlYmtpdDJndGstc2VjdGlvbnMudHh0CmluZGV4IGM2ODc2YjUuLjVk
ZjY1ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL2RvY3Mv
d2Via2l0Mmd0ay1zZWN0aW9ucy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvZG9jcy93ZWJraXQyZ3RrLXNlY3Rpb25zLnR4dApAQCAtNjMzLDcgKzYzMyw5IEBAIHdl
YmtpdF9maW5kX2NvbnRyb2xsZXJfZ2V0X3R5cGUKIDxTRUNUSU9OPgogPEZJTEU+V2ViS2l0Q29v
a2llTWFuYWdlcjwvRklMRT4KIFdlYktpdENvb2tpZU1hbmFnZXIKK1dlYktpdENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlCiBXZWJLaXRDb29raWVBY2NlcHRQb2xpY3kKK3dlYmtpdF9jb29raWVfbWFu
YWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlCiB3ZWJraXRfY29va2llX21hbmFnZXJfc2V0X2Fj
Y2VwdF9wb2xpY3kKIHdlYmtpdF9jb29raWVfbWFuYWdlcl9nZXRfYWNjZXB0X3BvbGljeQogd2Vi
a2l0X2Nvb2tpZV9tYW5hZ2VyX2dldF9hY2NlcHRfcG9saWN5X2ZpbmlzaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdENvb2tpZU1hbmFnZXIu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdENvb2tpZU1h
bmFnZXIuY3BwCmluZGV4IDFkZGZkODIuLjJmZTg5OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RDb29raWVNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0Q29va2llTWFuYWdlci5j
cHAKQEAgLTIxLDggKzIxLDEwIEBACiAKICNpbmNsdWRlICJXZWJLaXRUZXN0U2VydmVyLmgiCiAj
aW5jbHVkZSAiV2ViVmlld1Rlc3QuaCIKKyNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogCiBzdGF0
aWMgV2ViS2l0VGVzdFNlcnZlcioga1NlcnZlcjsKK3N0YXRpYyBjaGFyKiBrVGVtcERpcmVjdG9y
eTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGtGaXJzdFBhcnR5RG9tYWluID0gIjEyNy4wLjAuMSI7
CiBzdGF0aWMgY29uc3QgY2hhcioga1RoaXJkUGFydHlEb21haW4gPSAibG9jYWxob3N0IjsKQEAg
LTU4LDYgKzYwLDMwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGdfc3RyZnJlZXYobV9kb21h
aW5zKTsKICAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9tYXRjaGVkKG1fY29v
a2llTWFuYWdlciwgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwgMCwgMCwgdGhpcyk7CisgICAg
ICAgIGlmIChtX2Nvb2tpZXNUZXh0RmlsZSkKKyAgICAgICAgICAgIGdfdW5saW5rKG1fY29va2ll
c1RleHRGaWxlLmdldCgpKTsKKyAgICAgICAgaWYgKG1fY29va2llc1NRTGl0ZUZpbGUpCisgICAg
ICAgICAgICBnX3VubGluayhtX2Nvb2tpZXNTUUxpdGVGaWxlLmdldCgpKTsKKyAgICB9CisKKyAg
ICB2b2lkIHNldFBlcnNpc3RlbnRTdG9yYWdlKFdlYktpdENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
IHN0b3JhZ2UpCisgICAgeworICAgICAgICBjb25zdCBjaGFyKiBmaWxlbmFtZSA9IDA7CisgICAg
ICAgIHN3aXRjaCAoc3RvcmFnZSkgeworICAgICAgICBjYXNlIFdFQktJVF9DT09LSUVfUEVSU0lT
VEVOVF9TVE9SQUdFX1RFWFQ6CisgICAgICAgICAgICBpZiAoIW1fY29va2llc1RleHRGaWxlKQor
ICAgICAgICAgICAgICAgIG1fY29va2llc1RleHRGaWxlLnNldChnX2J1aWxkX2ZpbGVuYW1lKGtU
ZW1wRGlyZWN0b3J5LCAiY29va2llcy50eHQiLCBOVUxMKSk7CisgICAgICAgICAgICBmaWxlbmFt
ZSA9IG1fY29va2llc1RleHRGaWxlLmdldCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgV0VCS0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfU1FMSVRFOgorICAgICAgICAg
ICAgaWYgKCFtX2Nvb2tpZXNTUUxpdGVGaWxlKQorICAgICAgICAgICAgICAgIG1fY29va2llc1NR
TGl0ZUZpbGUuc2V0KGdfYnVpbGRfZmlsZW5hbWUoa1RlbXBEaXJlY3RvcnksICJjb29raWVzLmRi
IiwgTlVMTCkpOworICAgICAgICAgICAgZmlsZW5hbWUgPSBtX2Nvb2tpZXNTUUxpdGVGaWxlLmdl
dCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBn
X2Fzc2VydF9ub3RfcmVhY2hlZCgpOworICAgICAgICB9CisgICAgICAgIHdlYmtpdF9jb29raWVf
bWFuYWdlcl9zZXRfcGVyc2lzdGVudF9zdG9yYWdlKG1fY29va2llTWFuYWdlciwgZmlsZW5hbWUs
IHN0b3JhZ2UpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIGdldEFjY2VwdFBvbGljeVJlYWR5
Q2FsbGJhY2soR09iamVjdCogb2JqZWN0LCBHQXN5bmNSZXN1bHQqIHJlc3VsdCwgZ3BvaW50ZXIg
dXNlckRhdGEpCkBAIC0xMjksNiArMTU1LDggQEAgcHVibGljOgogICAgIGNoYXIqKiBtX2RvbWFp
bnM7CiAgICAgYm9vbCBtX2Nvb2tpZXNDaGFuZ2VkOwogICAgIGJvb2wgbV9maW5pc2hMb29wV2hl
bkNvb2tpZXNDaGFuZ2U7CisgICAgR093blB0cjxjaGFyPiBtX2Nvb2tpZXNUZXh0RmlsZTsKKyAg
ICBHT3duUHRyPGNoYXI+IG1fY29va2llc1NRTGl0ZUZpbGU7CiB9OwogCiBzdGF0aWMgdm9pZCB0
ZXN0Q29va2llTWFuYWdlckFjY2VwdFBvbGljeShDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2Nv
bnN0cG9pbnRlcikKQEAgLTIwNCw2ICsyMzIsNTQgQEAgc3RhdGljIHZvaWQgdGVzdENvb2tpZU1h
bmFnZXJDb29raWVzQ2hhbmdlZChDb29raWVNYW5hZ2VyVGVzdCogdGVzdCwgZ2NvbnN0cG9pbnQK
ICAgICBnX2Fzc2VydCh0ZXN0LT5tX2Nvb2tpZXNDaGFuZ2VkKTsKIH0KIAorc3RhdGljIHZvaWQg
dGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZShDb29raWVNYW5hZ2VyVGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5zZXRBY2NlcHRQb2xpY3koV0VCS0lUX0NP
T0tJRV9QT0xJQ1lfQUNDRVBUX0FMV0FZUyk7CisKKyAgICAvLyBUZXh0IHN0b3JhZ2UgdXNpbmcg
YSBuZXcgZmlsZS4KKyAgICB0ZXN0LT5zZXRQZXJzaXN0ZW50U3RvcmFnZShXRUJLSVRfQ09PS0lF
X1BFUlNJU1RFTlRfU1RPUkFHRV9URVhUKTsKKyAgICBjaGFyKiogZG9tYWlucyA9IHRlc3QtPmdl
dERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
Z19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDApOworCisgICAgdGVzdC0+bG9hZFVSSShrU2Vy
dmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXguaHRtbCIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdl
ZCk7CisgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21h
aW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIp
OworCisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB1c2luZyBhIG5ldyBmaWxlLgorICAgIHRlc3Qt
PnNldFBlcnNpc3RlbnRTdG9yYWdlKFdFQktJVF9DT09LSUVfUEVSU0lTVEVOVF9TVE9SQUdFX1NR
TElURSk7CisgICAgZG9tYWlucyA9IHRlc3QtPmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChk
b21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0s
IDApOworCisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVyLT5nZXRVUklGb3JQYXRoKCIvaW5kZXgu
aHRtbCIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAg
Z19hc3NlcnQodGVzdC0+bV9jb29raWVzQ2hhbmdlZCk7CisgICAgZG9tYWlucyA9IHRlc3QtPmdl
dERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQo
Z19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIpOworCisgICAgLy8gVGV4dCBzdG9yYWdlIHVz
aW5nIGFuIGV4aXN0aW5nIGZpbGUuCisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VC
S0lUX0NPT0tJRV9QRVJTSVNURU5UX1NUT1JBR0VfVEVYVCk7CisgICAgZG9tYWlucyA9IHRlc3Qt
PmdldERvbWFpbnMoKTsKKyAgICBnX2Fzc2VydChkb21haW5zKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQoZ19zdHJ2X2xlbmd0aChkb21haW5zKSwgPT0sIDIpOworICAgIHRlc3QtPmRlbGV0ZUFsbENv
b2tpZXMoKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQoZ19zdHJ2X2xlbmd0aCh0ZXN0LT5nZXREb21h
aW5zKCkpLCA9PSwgMCk7CisKKyAgICAvLyBTUUxpdGUgc3RvcmFnZSB3aXRoIGFuIGV4aXN0aW5n
IGZpbGUuCisgICAgdGVzdC0+c2V0UGVyc2lzdGVudFN0b3JhZ2UoV0VCS0lUX0NPT0tJRV9QRVJT
SVNURU5UX1NUT1JBR0VfU1FMSVRFKTsKKyAgICBkb21haW5zID0gdGVzdC0+Z2V0RG9tYWlucygp
OworICAgIGdfYXNzZXJ0KGRvbWFpbnMpOworICAgIGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVu
Z3RoKGRvbWFpbnMpLCA9PSwgMik7CisgICAgdGVzdC0+ZGVsZXRlQWxsQ29va2llcygpOworICAg
IGdfYXNzZXJ0X2NtcGludChnX3N0cnZfbGVuZ3RoKHRlc3QtPmdldERvbWFpbnMoKSksID09LCAw
KTsKK30KKwogc3RhdGljIHZvaWQgc2VydmVyQ2FsbGJhY2soU291cFNlcnZlciogc2VydmVyLCBT
b3VwTWVzc2FnZSogbWVzc2FnZSwgY29uc3QgY2hhciogcGF0aCwgR0hhc2hUYWJsZSosIFNvdXBD
bGllbnRDb250ZXh0KiwgZ3BvaW50ZXIpCiB7CiAgICAgaWYgKG1lc3NhZ2UtPm1ldGhvZCAhPSBT
T1VQX01FVEhPRF9HRVQpIHsKQEAgLTIxNCwxMCArMjkwLDEwIEBAIHN0YXRpYyB2b2lkIHNlcnZl
ckNhbGxiYWNrKFNvdXBTZXJ2ZXIqIHNlcnZlciwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIGNvbnN0
IGNoYXIqCiAgICAgc291cF9tZXNzYWdlX3NldF9zdGF0dXMobWVzc2FnZSwgU09VUF9TVEFUVVNf
T0spOwogICAgIGlmIChnX3N0cl9lcXVhbChwYXRoLCAiL2luZGV4Lmh0bWwiKSkgewogICAgICAg
ICBjaGFyKiBpbmRleEh0bWwgPSBnX3N0cmR1cF9wcmludGYoa0luZGV4SHRtbEZvcm1hdCwgc291
cF9zZXJ2ZXJfZ2V0X3BvcnQoc2VydmVyKSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJz
X3JlcGxhY2UobWVzc2FnZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiZm9vPWJh
ciIpOworICAgICAgICBzb3VwX21lc3NhZ2VfaGVhZGVyc19yZXBsYWNlKG1lc3NhZ2UtPnJlc3Bv
bnNlX2hlYWRlcnMsICJTZXQtQ29va2llIiwgImZvbz1iYXI7IE1heC1BZ2U9NjAiKTsKICAgICAg
ICAgc291cF9tZXNzYWdlX2JvZHlfYXBwZW5kKG1lc3NhZ2UtPnJlc3BvbnNlX2JvZHksIFNPVVBf
TUVNT1JZX1RBS0UsIGluZGV4SHRtbCwgc3RybGVuKGluZGV4SHRtbCkpOwogICAgIH0gZWxzZSBp
ZiAoZ19zdHJfZXF1YWwocGF0aCwgIi9pbWFnZS5wbmciKSkKLSAgICAgICAgc291cF9tZXNzYWdl
X2hlYWRlcnNfcmVwbGFjZShtZXNzYWdlLT5yZXNwb25zZV9oZWFkZXJzLCAiU2V0LUNvb2tpZSIs
ICJiYXo9cXV4Iik7CisgICAgICAgIHNvdXBfbWVzc2FnZV9oZWFkZXJzX3JlcGxhY2UobWVzc2Fn
ZS0+cmVzcG9uc2VfaGVhZGVycywgIlNldC1Db29raWUiLCAiYmF6PXF1eDsgTWF4LUFnZT02MCIp
OwogICAgIGVsc2UKICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKICAgICBzb3VwX21l
c3NhZ2VfYm9keV9jb21wbGV0ZShtZXNzYWdlLT5yZXNwb25zZV9ib2R5KTsKQEAgLTIyOCwxMiAr
MzA0LDE3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBrU2VydmVyID0gbmV3IFdlYktpdFRlc3RT
ZXJ2ZXIoKTsKICAgICBrU2VydmVyLT5ydW4oc2VydmVyQ2FsbGJhY2spOwogCisgICAga1RlbXBE
aXJlY3RvcnkgPSBnX2Rpcl9tYWtlX3RtcCgiV2ViS2l0MlRlc3RzLVhYWFhYWCIsIDApOworICAg
IGdfYXNzZXJ0KGtUZW1wRGlyZWN0b3J5KTsKKwogICAgIENvb2tpZU1hbmFnZXJUZXN0OjphZGQo
IldlYktpdENvb2tpZU1hbmFnZXIiLCAiYWNjZXB0LXBvbGljeSIsIHRlc3RDb29raWVNYW5hZ2Vy
QWNjZXB0UG9saWN5KTsKICAgICBDb29raWVNYW5hZ2VyVGVzdDo6YWRkKCJXZWJLaXRDb29raWVN
YW5hZ2VyIiwgImRlbGV0ZS1jb29raWVzIiwgdGVzdENvb2tpZU1hbmFnZXJEZWxldGVDb29raWVz
KTsKICAgICBDb29raWVNYW5hZ2VyVGVzdDo6YWRkKCJXZWJLaXRDb29raWVNYW5hZ2VyIiwgImNv
b2tpZXMtY2hhbmdlZCIsIHRlc3RDb29raWVNYW5hZ2VyQ29va2llc0NoYW5nZWQpOworICAgIENv
b2tpZU1hbmFnZXJUZXN0OjphZGQoIldlYktpdENvb2tpZU1hbmFnZXIiLCAicGVyc2lzdGVudC1z
dG9yYWdlIiwgdGVzdENvb2tpZU1hbmFnZXJQZXJzaXN0ZW50U3RvcmFnZSk7CiB9CiAKIHZvaWQg
YWZ0ZXJBbGwoKQogewogICAgIGRlbGV0ZSBrU2VydmVyOworICAgIGdfcm1kaXIoa1RlbXBEaXJl
Y3RvcnkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tp
ZU1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oCmluZGV4IDdkYzIwZDUuLmNmMWMxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTcwLDYgKzcwLDEwIEBAIHB1
YmxpYzoKICAgICB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpOwogICAgIHZvaWQg
c3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsKIAorI2lmIFVTRShTT1VQKQorICAgIHZvaWQg
c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UoY29uc3QgU3RyaW5nJiBzdG9yYWdlUGF0aCwgdWlu
dDMyX3Qgc3RvcmFnZVR5cGUpOworI2VuZGlmCisKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOwogCiAgICAgYm9vbCBzaG91bGRUZXJtaW5hdGUoV2ViUHJvY2Vzc1Byb3h5
KikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mvc291cC9XZWJD
b29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9zb3Vw
L1dlYkNvb2tpZU1hbmFnZXJQcm94eVNvdXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjA4OTE0ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3Mvc291cC9XZWJDb29raWVNYW5hZ2VyUHJveHlTb3VwLmNwcApAQCAtMCwwICsxLDM5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHkuaCIKKworI2lu
Y2x1ZGUgIldlYkNvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyTWVzc2FnZXMu
aCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShjb25zdCBTdHJpbmcmIHN0b3JhZ2VQYXRoLCB1aW50
MzJfdCBzdG9yYWdlVHlwZSkKK3sKKyAgICBtX3dlYkNvbnRleHQtPnNlbmRUb0FsbFByb2Nlc3Nl
c1JlbGF1bmNoaW5nVGhlbUlmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpT
ZXRDb29raWVQZXJzaXN0ZW50U3RvcmFnZShzdG9yYWdlUGF0aCwgc3RvcmFnZVR5cGUpKTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29r
aWVNYW5hZ2VyLmgKaW5kZXggYzBiZDFmMy4uMmJiNjM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5oCkBAIC0zMCw2ICsz
MCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCisjaWYgVVNFKFNPVVApCisjaW5jbHVkZSAiU291cENvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlVHlwZS5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBDb3JlSVBDIHsKICAgICBj
bGFzcyBBcmd1bWVudERlY29kZXI7CiAgICAgY2xhc3MgQ29ubmVjdGlvbjsKQEAgLTYzLDYgKzY3
LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKTsK
ICAgICB2b2lkIHN0b3BPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCk7CiAKKyNpZiBVU0UoU09VUCkK
KyAgICB2b2lkIHNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdlKGNvbnN0IFN0cmluZyYgc3RvcmFn
ZVBhdGgsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOworI2VuZGlmCisKICAgICB2
b2lkIGRpZFJlY2VpdmVXZWJDb29raWVNYW5hZ2VyTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9u
KiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KaW5kZXggMTVkZTliNi4uMGFlMTE1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNv
b2tpZU1hbmFnZXIubWVzc2FnZXMuaW4KQEAgLTMzLDQgKzMzLDggQEAKICAgICAKICAgICB2b2lk
IFN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgdm9pZCBTdG9wT2JzZXJ2aW5nQ29v
a2llQ2hhbmdlcygpCisKKyNpZiBVU0UoU09VUCkKKyAgICBTZXRDb29raWVQZXJzaXN0ZW50U3Rv
cmFnZShXVEY6OlN0cmluZyBzdG9yYWdlUGF0aCwgdWludDMyX3Qgc3RvcmFnZVR5cGUpCisjZW5k
aWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9zb3Vw
L1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29v
a2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAppbmRleCBkYTIxODA4Li5jZWU1YjZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJD
b29raWVNYW5hZ2VyU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29r
aWVzL3NvdXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCkBAIC0yNiw4ICsyNiwxMiBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAorI2luY2x1
ZGUgIldlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tp
ZUphclNvdXAuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVk
ZSA8bGlic291cC9zb3VwLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTc3LDQgKzgxLDI3IEBAIEhUVFBDb29raWVBY2NlcHRQb2xpY3kgV2ViQ29va2llTWFuYWdl
cjo6cGxhdGZvcm1HZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCkKICAgICByZXR1cm4gcG9saWN5
OwogfQogCit2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnNldENvb2tpZVBlcnNpc3RlbnRTdG9yYWdl
KGNvbnN0IFN0cmluZyYgc3RvcmFnZVBhdGgsIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVR5
cGUgc3RvcmFnZVR5cGUpCit7CisgICAgR1JlZlB0cjxTb3VwQ29va2llSmFyPiBqYXI7CisgICAg
c3dpdGNoIChzdG9yYWdlVHlwZSkgeworICAgIGNhc2UgU291cENvb2tpZVBlcnNpc3RlbnRTdG9y
YWdlVGV4dDoKKyAgICAgICAgamFyID0gYWRvcHRHUmVmKHNvdXBfY29va2llX2phcl90ZXh0X25l
dyhzdG9yYWdlUGF0aC51dGY4KCkuZGF0YSgpLCBGQUxTRSkpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNvdXBDb29raWVQZXJzaXN0ZW50U3RvcmFnZVNRTGl0ZToKKyAgICAgICAgamFyID0g
YWRvcHRHUmVmKHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVOZXcoc3RvcmFnZVBhdGgpKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgfQorCisgICAgU291cENvb2tpZUphciogY3VycmVudEphciA9IFdlYkNvcmU6OnNvdXBD
b29raWVKYXIoKTsKKyAgICBzb3VwX2Nvb2tpZV9qYXJfc2V0X2FjY2VwdF9wb2xpY3koamFyLmdl
dCgpLCBzb3VwX2Nvb2tpZV9qYXJfZ2V0X2FjY2VwdF9wb2xpY3koY3VycmVudEphcikpOworICAg
IFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gUmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7
CisgICAgc291cF9zZXNzaW9uX3JlbW92ZV9mZWF0dXJlKHNlc3Npb24sIFNPVVBfU0VTU0lPTl9G
RUFUVVJFKGN1cnJlbnRKYXIpKTsKKyAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lv
biwgU09VUF9TRVNTSU9OX0ZFQVRVUkUoamFyLmdldCgpKSk7CisKKyAgICBXZWJDb3JlOjpzZXRT
b3VwQ29va2llSmFyKGphci5nZXQoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291
cENvb2tpZUphclNxbGl0ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMv
c291cC9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi40OTc0MGM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tpZUphclNxbGl0ZS5jcHAKQEAg
LTAsMCArMSwyMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2Vy
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlLmgi
CisKKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVTdGF0ZW1lbnQuaD4KKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KKwordXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0cnVjdCBfV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVBy
aXZhdGUgeworICAgIFN0cmluZyBkYXRhYmFzZVBhdGg7CisgICAgU1FMaXRlRGF0YWJhc2UgZGF0
YWJhc2U7CisgICAgYm9vbCBpc0xvYWRpbmc7Cit9OworCitHX0RFRklORV9UWVBFKFdlYktpdFNv
dXBDb29raWVKYXJTcWxpdGUsIHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlLCBTT1VQX1RZ
UEVfQ09PS0lFX0pBUikKKworZW51bSB7CisgICAgQ09MVU1OX0lELAorICAgIENPTFVNTl9OQU1F
LAorICAgIENPTFVNTl9WQUxVRSwKKyAgICBDT0xVTU5fSE9TVCwKKyAgICBDT0xVTU5fUEFUSCwK
KyAgICBDT0xVTU5fRVhQSVJZLAorICAgIENPTFVNTl9MQVNUX0FDQ0VTUywKKyAgICBDT0xVTU5f
U0VDVVJFLAorICAgIENPTFVNTl9IVFRQX09OTFkKK307CisKK3N0YXRpYyBib29sIHdlYmtpdFNv
dXBDb29raWVKYXJTcWxpdGVPcGVuRGF0YWJhc2UoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSog
c3FsaXRlSmFyKQoreworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlKiBwcml2
ID0gc3FsaXRlSmFyLT5wcml2OworICAgIGlmIChwcml2LT5kYXRhYmFzZS5pc09wZW4oKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBBU1NFUlQoIXByaXYtPmRhdGFiYXNlUGF0aC5pc0Vt
cHR5KCkpOworICAgIGlmICghcHJpdi0+ZGF0YWJhc2Uub3Blbihwcml2LT5kYXRhYmFzZVBhdGgp
KSB7CisgICAgICAgIGdfd2FybmluZygiQ2FuJ3Qgb3BlbiBkYXRhYmFzZSAlcyIsIHByaXYtPmRh
dGFiYXNlUGF0aC51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KworICAgIHByaXYtPmRhdGFiYXNlLnNldFN5bmNocm9ub3VzKFNRTGl0ZURhdGFiYXNlOjpTeW5j
T2ZmKTsKKyAgICBwcml2LT5kYXRhYmFzZS5leGVjdXRlQ29tbWFuZCgiUFJBR01BIHNlY3VyZV9k
ZWxldGUgPSAxOyIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIHdlYmtp
dFNvdXBDb29raWVKYXJTcWxpdGVDcmVhdGVUYWJsZShXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRl
KiBzcWxpdGVKYXIpCit7CisgICAgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHBy
aXYgPSBzcWxpdGVKYXItPnByaXY7CisgICAgaWYgKHByaXYtPmRhdGFiYXNlLnRhYmxlRXhpc3Rz
KCJtb3pfY29va2llcyIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmICghcHJpdi0+
ZGF0YWJhc2UuZXhlY3V0ZUNvbW1hbmQoIkNSRUFURSBUQUJMRSBtb3pfY29va2llcyAoaWQgSU5U
RUdFUiBQUklNQVJZIEtFWSwgbmFtZSBURVhULCB2YWx1ZSBURVhULCBob3N0IFRFWFQsIHBhdGgg
VEVYVCwgZXhwaXJ5IElOVEVHRVIsIGxhc3RBY2Nlc3NlZCBJTlRFR0VSLCBpc1NlY3VyZSBJTlRF
R0VSLCBpc0h0dHBPbmx5IElOVEVHRVIpIikpIHsKKyAgICAgICAgZ193YXJuaW5nKCJGYWlsZWQg
dG8gY3JlYXRlIHRhYmxlIG1vel9jb29raWVzOiAoJWkpIC0gJXMiLCBwcml2LT5kYXRhYmFzZS5s
YXN0RXJyb3IoKSwgcHJpdi0+ZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOworICAgICAgICBwcml2
LT5kYXRhYmFzZS5jbG9zZSgpOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0U291cENvb2tpZUphclNxbGl0
ZUxvYWQoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyKQoreworICAgIGlmICgh
d2Via2l0U291cENvb2tpZUphclNxbGl0ZU9wZW5EYXRhYmFzZShzcWxpdGVKYXIpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCF3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlQ3JlYXRlVGFibGUo
c3FsaXRlSmFyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZVByaXZhdGUqIHByaXYgPSBzcWxpdGVKYXItPnByaXY7CisgICAgcHJpdi0+aXNMb2FkaW5n
ID0gdHJ1ZTsKKyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkocHJpdi0+ZGF0YWJhc2UsICJTRUxF
Q1QgaWQsIG5hbWUsIHZhbHVlLCBob3N0LCBwYXRoLCBleHBpcnksIGxhc3RBY2Nlc3NlZCwgaXNT
ZWN1cmUsIGlzSHR0cE9ubHkgRlJPTSBtb3pfY29va2llczsiKTsKKyAgICBpZiAocXVlcnkucHJl
cGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIHBy
ZXBhcmUgYWxsIGNvb2tpZXMgcXVlcnkiKTsKKyAgICAgICAgcHJpdi0+aXNMb2FkaW5nID0gZmFs
c2U7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBT
T1VQX0NPT0tJRV9KQVIoc3FsaXRlSmFyKTsKKyAgICB0aW1lX3Qgbm93ID0gdGltZSgwKTsKKyAg
ICBpbnQgcmVzdWx0OworICAgIHdoaWxlICgocmVzdWx0ID0gcXVlcnkuc3RlcCgpKSA9PSBTUUxS
ZXN1bHRSb3cpIHsKKyAgICAgICAgaW50IGV4cGlyZVRpbWUgPSBxdWVyeS5nZXRDb2x1bW5JbnQo
Q09MVU1OX0VYUElSWSk7CisgICAgICAgIGlmIChub3cgPj0gZXhwaXJlVGltZSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHNvdXBfY29va2ll
X25ldyhxdWVyeS5nZXRDb2x1bW5UZXh0KENPTFVNTl9OQU1FKS51dGY4KCkuZGF0YSgpLCBxdWVy
eS5nZXRDb2x1bW5UZXh0KENPTFVNTl9WQUxVRSkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5LmdldENvbHVtblRleHQoQ09M
VU1OX0hPU1QpLnV0ZjgoKS5kYXRhKCksIHF1ZXJ5LmdldENvbHVtblRleHQoQ09MVU1OX1BBVEgp
LnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHBpcmVUaW1lIC0gbm93IDw9IEdfTUFYSU5UID8gZXhwaXJlVGltZSAtIG5vdyA6IEdf
TUFYSU5UKTsKKyAgICAgICAgaWYgKHF1ZXJ5LmdldENvbHVtbkludChDT0xVTU5fU0VDVVJFKSkK
KyAgICAgICAgICAgIHNvdXBfY29va2llX3NldF9zZWN1cmUoY29va2llLCBUUlVFKTsKKyAgICAg
ICAgaWYgKHF1ZXJ5LmdldENvbHVtbkludChDT0xVTU5fSFRUUF9PTkxZKSkKKyAgICAgICAgICAg
IHNvdXBfY29va2llX3NldF9odHRwX29ubHkoY29va2llLCBUUlVFKTsKKworICAgICAgICBzb3Vw
X2Nvb2tpZV9qYXJfYWRkX2Nvb2tpZShqYXIsIGNvb2tpZSk7CisgICAgfQorCisgICAgaWYgKHJl
c3VsdCAhPSBTUUxSZXN1bHREb25lKQorICAgICAgICBnX3dhcm5pbmcoIkVycm9yIHJlYWRpbmcg
Y29va2llcyBmcm9tIGRhdGFiYXNlIik7CisgICAgcHJpdi0+aXNMb2FkaW5nID0gZmFsc2U7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVJbnNlcnRDb29raWUoV2Vi
S2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyLCBTb3VwQ29va2llKiBjb29raWUpCit7
CisgICAgaWYgKCFjb29raWUgfHwgIWNvb2tpZS0+ZXhwaXJlcykKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghd2Via2l0U291cENvb2tpZUphclNxbGl0ZUNyZWF0ZVRhYmxlKHNxbGl0ZUphcikp
CisgICAgICAgIHJldHVybjsKKworICAgIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRl
KiBwcml2ID0gc3FsaXRlSmFyLT5wcml2OworICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShwcml2
LT5kYXRhYmFzZSwgIklOU0VSVCBJTlRPIG1vel9jb29raWVzIFZBTFVFUyhOVUxMLCA/LCA/LCA/
LCA/LCA/LCBOVUxMLCA/LCA/KTsiKTsKKyAgICBpZiAocXVlcnkucHJlcGFyZSgpICE9IFNRTFJl
c3VsdE9rKSB7CisgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIHByZXBhcmUgaW5zZXJ0IGNv
b2tpZXMgcXVlcnkiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHF1ZXJ5LmJpbmRU
ZXh0KDEsIFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5uYW1lKSk7CisgICAgcXVlcnkuYmluZFRl
eHQoMiwgU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPnZhbHVlKSk7CisgICAgcXVlcnkuYmluZFRl
eHQoMywgU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPmRvbWFpbikpOworICAgIHF1ZXJ5LmJpbmRU
ZXh0KDQsIFN0cmluZzo6ZnJvbVVURjgoY29va2llLT5wYXRoKSk7CisgICAgcXVlcnkuYmluZElu
dCg1LCAoZ3Vsb25nKXNvdXBfZGF0ZV90b190aW1lX3QoY29va2llLT5leHBpcmVzKSk7CisgICAg
cXVlcnkuYmluZEludCg2LCBjb29raWUtPnNlY3VyZSk7CisgICAgcXVlcnkuYmluZEludCg3LCBj
b29raWUtPmh0dHBfb25seSk7CisgICAgaWYgKHF1ZXJ5LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25l
KQorICAgICAgICBnX3dhcm5pbmcoIkVycm9yIGFkZGluZyBjb29raWUgKG5hbWU9JXMsIGRvbWFp
bj0lcykgdG8gZGF0YWJhc2UiLCBjb29raWUtPm5hbWUsIGNvb2tpZS0+bmFtZSk7Cit9CisKK3N0
YXRpYyB2b2lkIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVEZWxldGVDb29raWUoV2ViS2l0U291
cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyLCBTb3VwQ29va2llKiBjb29raWUpCit7CisgICAg
aWYgKCFjb29raWUpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoIXdlYmtpdFNvdXBDb29raWVK
YXJTcWxpdGVDcmVhdGVUYWJsZShzcWxpdGVKYXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBX
ZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSogcHJpdiA9IHNxbGl0ZUphci0+cHJpdjsK
KyAgICBTUUxpdGVTdGF0ZW1lbnQgcXVlcnkocHJpdi0+ZGF0YWJhc2UsICJERUxFVEUgRlJPTSBt
b3pfY29va2llcyBXSEVSRSBuYW1lID0gKD8pIEFORCBob3N0ID0gKD8pOyIpOworICAgIGlmIChx
dWVyeS5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spIHsKKyAgICAgICAgZ193YXJuaW5nKCJGYWls
ZWQgdG8gcHJlcGFyZSBkZWxldGUgY29va2llcyBxdWVyeSIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgcXVlcnkuYmluZFRleHQoMSwgU3RyaW5nOjpmcm9tVVRGOChjb29raWUtPm5h
bWUpKTsKKyAgICBxdWVyeS5iaW5kVGV4dCgyLCBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZS0+ZG9t
YWluKSk7CisgICAgaWYgKHF1ZXJ5LnN0ZXAoKSAhPSBTUUxSZXN1bHREb25lKQorICAgICAgICBn
X3dhcm5pbmcoIkVycm9yIGRlbGV0aW5nIGNvb2tpZSAobmFtZT0lcywgZG9tYWluPSVzKSBmcm9t
IGRhdGFiYXNlIiwgY29va2llLT5uYW1lLCBjb29raWUtPm5hbWUpOworfQorCitzdGF0aWMgdm9p
ZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlQ2hhbmdlZChTb3VwQ29va2llSmFyKiBqYXIsIFNv
dXBDb29raWUqIG9sZENvb2tpZSwgU291cENvb2tpZSogbmV3Q29va2llKQoreworICAgIFdlYktp
dFNvdXBDb29raWVKYXJTcWxpdGUqIHNxbGl0ZUphciA9IFdFQktJVF9TT1VQX0NPT0tJRV9KQVJf
U1FMSVRFKGphcik7CisgICAgaWYgKHNxbGl0ZUphci0+cHJpdi0+aXNMb2FkaW5nKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCF3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlT3BlbkRhdGFiYXNl
KHNxbGl0ZUphcikpCisgICAgICAgIHJldHVybjsKKworICAgIHdlYmtpdFNvdXBDb29raWVKYXJT
cWxpdGVEZWxldGVDb29raWUoc3FsaXRlSmFyLCBvbGRDb29raWUpOworICAgIHdlYmtpdFNvdXBD
b29raWVKYXJTcWxpdGVJbnNlcnRDb29raWUoc3FsaXRlSmFyLCBuZXdDb29raWUpOworfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRmluYWxpemUoR09iamVjdCogb2Jq
ZWN0KQoreworICAgIFdFQktJVF9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFKG9iamVjdCktPnByaXYt
Pn5XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSgpOworICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9i
amVjdCk7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2Nvb2tpZV9qYXJfc3FsaXRlX2lu
aXQoV2ViS2l0U291cENvb2tpZUphclNxbGl0ZSogc3FsaXRlSmFyKQoreworICAgIFdlYktpdFNv
dXBDb29raWVKYXJTcWxpdGVQcml2YXRlKiBwcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklW
QVRFKHNxbGl0ZUphciwgV0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSwgV2ViS2l0
U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUpOworICAgIHNxbGl0ZUphci0+cHJpdiA9IHByaXY7
CisgICAgbmV3IChwcml2KSBXZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlUHJpdmF0ZSgpOworfQor
CitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9jb29raWVfamFyX3NxbGl0ZV9jbGFzc19pbml0KFdl
YktpdFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcyogc3FsaXRlSmFyQ2xhc3MpCit7CisgICAgU291
cENvb2tpZUphckNsYXNzKiBjb29raWVKYXJDbGFzcyA9IFNPVVBfQ09PS0lFX0pBUl9DTEFTUyhz
cWxpdGVKYXJDbGFzcyk7CisgICAgY29va2llSmFyQ2xhc3MtPmNoYW5nZWQgPSB3ZWJraXRTb3Vw
Q29va2llSmFyU3FsaXRlQ2hhbmdlZDsKKworICAgIEdPYmplY3RDbGFzcyogZ09iamVjdENsYXNz
ID0gR19PQkpFQ1RfQ0xBU1Moc3FsaXRlSmFyQ2xhc3MpOworICAgIGdPYmplY3RDbGFzcy0+Zmlu
YWxpemUgPSB3ZWJraXRTb3VwQ29va2llSmFyU3FsaXRlRmluYWxpemU7CisKKyAgICBnX3R5cGVf
Y2xhc3NfYWRkX3ByaXZhdGUoc3FsaXRlSmFyQ2xhc3MsIHNpemVvZihXZWJLaXRTb3VwQ29va2ll
SmFyU3FsaXRlUHJpdmF0ZSkpOworfQorCitTb3VwQ29va2llSmFyKiB3ZWJraXRTb3VwQ29va2ll
SmFyU3FsaXRlTmV3KGNvbnN0IFN0cmluZyYgZGF0YWJhc2VQYXRoKQoreworICAgIEFTU0VSVCgh
cHJpdi0+ZGF0YWJhc2VQYXRoLmlzRW1wdHkoKSk7CisgICAgV2ViS2l0U291cENvb2tpZUphclNx
bGl0ZSogc3FsaXRlSmFyID0gV0VCS0lUX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUoZ19vYmplY3Rf
bmV3KFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUsIE5VTEwpKTsKKyAgICBzcWxp
dGVKYXItPnByaXYtPmRhdGFiYXNlUGF0aCA9IGRhdGFiYXNlUGF0aDsKKyAgICB3ZWJraXRTb3Vw
Q29va2llSmFyU3FsaXRlTG9hZChzcWxpdGVKYXIpOworICAgIHJldHVybiBTT1VQX0NPT0tJRV9K
QVIoc3FsaXRlSmFyKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
Q29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvQ29va2llcy9zb3VwL1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmEwOTA0Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3NvdXAvV2ViS2l0U291cENvb2tp
ZUphclNxbGl0ZS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
SWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiwxIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
KiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZV9oCisjZGVmaW5l
IFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVfaAorCisjaW5jbHVkZSA8bGlic291cC9zb3VwLWNv
b2tpZS1qYXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUgICAgICAg
ICAgICAod2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVfZ2V0X3R5cGUoKSkKKyNkZWZpbmUg
V0VCS0lUX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJ
VEUsIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGUpKQorI2RlZmluZSBXRUJLSVRfSVNfU09VUF9D
T09LSUVfSkFSX1NRTElURShvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBF
ICgob2JqKSwgV0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSkpCisjZGVmaW5lIFdF
QktJVF9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEUs
IFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcykpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQ
X0NPT0tJRV9KQVJfU1FMSVRFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUg
KChvYmopLCBXRUJLSVRfVFlQRV9TT1VQX0NPT0tJRV9KQVJfU1FMSVRFKSkKKyNkZWZpbmUgV0VC
S0lUX1NPVVBfQ09PS0lFX0pBUl9TUUxJVEVfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFO
Q0VfR0VUX0NMQVNTICgob2JqKSwgV0VCS0lUX1RZUEVfU09VUF9DT09LSUVfSkFSX1NRTElURSwg
V2ViS2l0U291cENvb2tpZUphclNxbGl0ZUNsYXNzKSkKKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktp
dFNvdXBDb29raWVKYXJTcWxpdGUgV2ViS2l0U291cENvb2tpZUphclNxbGl0ZTsKK3R5cGVkZWYg
c3RydWN0IF9XZWJLaXRTb3VwQ29va2llSmFyU3FsaXRlQ2xhc3MgV2ViS2l0U291cENvb2tpZUph
clNxbGl0ZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQ
cml2YXRlIFdlYktpdFNvdXBDb29raWVKYXJTcWxpdGVQcml2YXRlOworCitzdHJ1Y3QgX1dlYktp
dFNvdXBDb29raWVKYXJTcWxpdGUgeworICAgIFNvdXBDb29raWVKYXIgcGFyZW50OworCisgICAg
V2ViS2l0U291cENvb2tpZUphclNxbGl0ZVByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dl
YktpdFNvdXBDb29raWVKYXJTcWxpdGVDbGFzcyB7CisgICAgU291cENvb2tpZUphckNsYXNzIHBh
cmVudENsYXNzOworfTsKKworR1R5cGUgd2Via2l0X3NvdXBfY29va2llX2phcl9zcWxpdGVfZ2V0
X3R5cGUoKTsKK1NvdXBDb29raWVKYXIqIHdlYmtpdFNvdXBDb29raWVKYXJTcWxpdGVOZXcoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZVBhdGgpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLy8gV2Vi
S2l0U291cENvb2tpZUphclNxbGl0ZS5oCg==
</data>
<flag name="review"
          id="159530"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>