<?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>75848</bug_id>
          
          <creation_ts>2012-01-09 05:48:57 -0800</creation_ts>
          <short_desc>[EFL] Replace malloc/calloc/free to new/delete</short_desc>
          <delta_ts>2012-02-29 00:58:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Tomasz Morawski">t.morawski</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hyuki.kim</cc>
    
    <cc>jungjik.lee</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>532121</commentid>
    <comment_count>0</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-09 05:48:57 -0800</bug_when>
    <thetext>Replace malloc/calloc/free functions calls to new/delete operator calls</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532258</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-09 10:08:04 -0800</bug_when>
    <thetext>We shouldn&apos;t just blindly do that, see e.g. bug 45735. What specific instances of malloc/free would you like to change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532259</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-09 10:08:25 -0800</bug_when>
    <thetext>Or is this only about WebKit EFL layer, not WebCore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532727</commentid>
    <comment_count>3</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-09 17:45:21 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Or is this only about WebKit EFL layer, not WebCore?

AFAIK, this patch will focus on EFL layer. He will add [EFL] to Bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532840</commentid>
    <comment_count>4</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-09 23:24:16 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Or is this only about WebKit EFL layer, not WebCore?
Yes, it is EFL only. I am sorry for confusion. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542881</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-25 22:21:12 -0800</bug_when>
    <thetext>Any update ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542896</commentid>
    <comment_count>6</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-25 23:27:03 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Any update ?
I am working on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544089</commentid>
    <comment_count>7</comment_count>
      <attachid>124320</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-01-27 08:15:49 -0800</bug_when>
    <thetext>Created attachment 124320
First patch

This patch:
- does not change ewk_js file due to that changes for this file are very big. I would like to show this changes in separate patch for this bug or open a new bug.
- does not change realloc operations (separate patch will be prepared).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544910</commentid>
    <comment_count>8</comment_count>
      <attachid>124320</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-30 00:13:10 -0800</bug_when>
    <thetext>Comment on attachment 124320
First patch

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

&gt; Source/WebKit/efl/ewk/ewk_tiled_model.cpp:675
&gt; +            tileUnusedCache-&gt;entries.count--;

I think this code should be reviewed by backing store guys.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547069</commentid>
    <comment_count>9</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-02-01 07:14:30 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 124320 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124320&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/efl/ewk/ewk_tiled_model.cpp:675
&gt; &gt; +            tileUnusedCache-&gt;entries.count--;
&gt; 
&gt; I think this code should be reviewed by backing store guys.
It is a very simple change. Patch looks very bad only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565247</commentid>
    <comment_count>10</comment_count>
      <attachid>124320</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-26 18:12:39 -0800</bug_when>
    <thetext>Comment on attachment 124320
First patch

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

&gt;&gt;&gt; Source/WebKit/efl/ewk/ewk_tiled_model.cpp:675
&gt;&gt;&gt; +            tileUnusedCache-&gt;entries.count--;
&gt;&gt; 
&gt;&gt; I think this code should be reviewed by backing store guys.
&gt; 
&gt; It is a very simple change. Patch looks very bad only.

Ok, it looks this patch almost good. If jungjik and Kwanghyuk agree with this patch, this patch is r+ informally.
I think we need to land this patch for EFL port&apos;s code quality.

Jungjik and Kwanghyuk, could you review this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565260</commentid>
    <comment_count>11</comment_count>
      <attachid>124320</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-26 18:54:30 -0800</bug_when>
    <thetext>Comment on attachment 124320
First patch

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

Looks good overall, but there are some minor things to work out and you need to rebase it.

&gt; Source/WebKit/efl/ewk/ewk_history.cpp:251
&gt; +    item-&gt;title = 0;
&gt; +    item-&gt;alternateTitle = 0;
&gt; +    item-&gt;uri = 0;
&gt; +    item-&gt;originalUri = 0;

How about memset(item, 0, sizeof(*item)) before setting core?

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:478
&gt; +    OwnPtr&lt;Ewk_Tiled_Backing_Store_Item&gt; item = adoptPtr(new Ewk_Tiled_Backing_Store_Item);

It&apos;s safer to #include &lt;OwnPtr.h&gt; in this file.

&gt; Source/WebKit/efl/ewk/ewk_tiled_matrix.cpp:202
&gt; +    OwnPtr&lt;Ewk_Tile_Matrix&gt; tileMatrix = WTF::adoptPtr(new Ewk_Tile_Matrix);

PassOwnPtr.h adds a &quot;using WTF::adoptPtr()&quot; clause, so you can use just adoptPtr the same way you use just OwnPtr.

&gt; Source/WebKit/efl/ewk/ewk_view.cpp:641
&gt; +    priv-&gt;settings.encodingDefault = eina_stringshare_add(priv-&gt;pageSettings-&gt;defaultTextEncodingName().utf8().data());

I&apos;d rather not commit unrelated changes in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565284</commentid>
    <comment_count>12</comment_count>
    <who name="JungJik Lee">jungjik.lee</who>
    <bug_when>2012-02-26 20:30:14 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 124320 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124320&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/efl/ewk/ewk_tiled_model.cpp:675
&gt; &gt;&gt;&gt; +            tileUnusedCache-&gt;entries.count--;
&gt; &gt;&gt; 
&gt; &gt;&gt; I think this code should be reviewed by backing store guys.
&gt; &gt; 
&gt; &gt; It is a very simple change. Patch looks very bad only.
&gt; 
&gt; Ok, it looks this patch almost good. If jungjik and Kwanghyuk agree with this patch, this patch is r+ informally.
&gt; I think we need to land this patch for EFL port&apos;s code quality.
&gt; 
&gt; Jungjik and Kwanghyuk, could you review this patch?

This part of the code is okay. I think the logic is the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565621</commentid>
    <comment_count>13</comment_count>
      <attachid>129031</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-02-27 06:47:22 -0800</bug_when>
    <thetext>Created attachment 129031
Next patch

Fixed Raphael&apos;s comments.

Additional change:
I had to left malloc for Ewk_Tile object due to compilation error when &quot;new&quot; was used:

Source/WebKit/efl/ewk/ewk_tiled_model.cpp:189:16: error: uninitialized const member in ‘Ewk_Tile {aka struct _Ewk_Tile}’ using ‘new’ without new-initializer [-fpermissive]
Source/WebKit/efl/ewk/ewk_tiled_backing_store.h:71:22: note: ‘_Ewk_Tile::width’ should be initialized

Anyway, initialization of const fileds in Ewk_Tile looks very ugly. Do you have any good idea to fix this without use of base C++ features like constructor or private section?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566002</commentid>
    <comment_count>14</comment_count>
      <attachid>129031</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-27 15:05:51 -0800</bug_when>
    <thetext>Comment on attachment 129031
Next patch

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

&gt; Source/WebKit/efl/ewk/ewk_tiled_backing_store.cpp:29
&gt; +#include &lt;OwnPtr.h&gt;

You also need PassOwnPtr.h for the implementation of adoptPtr().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566009</commentid>
    <comment_count>15</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-27 15:10:03 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Anyway, initialization of const fileds in Ewk_Tile looks very ugly. Do you have any good idea to fix this without use of base C++ features like constructor or private section?

Nope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566439</commentid>
    <comment_count>16</comment_count>
      <attachid>129201</attachid>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-02-28 00:00:02 -0800</bug_when>
    <thetext>Created attachment 129201
Fixed Raphael&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566442</commentid>
    <comment_count>17</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-02-28 00:01:37 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; Anyway, initialization of const fileds in Ewk_Tile looks very ugly. Do you have any good idea to fix this without use of base C++ features like constructor or private section?
&gt; 
&gt; Nope.
Maybe it is a good point to find a good solution for this and future similar &quot;issues&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566583</commentid>
    <comment_count>18</comment_count>
      <attachid>129201</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-28 04:36:31 -0800</bug_when>
    <thetext>Comment on attachment 129201
Fixed Raphael&apos;s comment

It finally looks OK to me :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567437</commentid>
    <comment_count>19</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-02-28 23:50:55 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 129201 [details])
&gt; It finally looks OK to me :)
Thanks for infomal review. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567446</commentid>
    <comment_count>20</comment_count>
      <attachid>129201</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-29 00:05:29 -0800</bug_when>
    <thetext>Comment on attachment 129201
Fixed Raphael&apos;s comment

I hope these new-allocated structs have a constructor instead of memeset()-ed...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567455</commentid>
    <comment_count>21</comment_count>
    <who name="Tomasz Morawski">t.morawski</who>
    <bug_when>2012-02-29 00:23:03 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 129201 [details])
&gt; I hope these new-allocated structs have a constructor instead of memeset()-ed...

Currently, fileds are initialized when it is needed in functions that creates object and this patch doesn&apos;t changed this way. IMO, missing simple constructor that initialize structure fields could be an issue in EFL port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567478</commentid>
    <comment_count>22</comment_count>
      <attachid>129201</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 00:58:44 -0800</bug_when>
    <thetext>Comment on attachment 129201
Fixed Raphael&apos;s comment

Clearing flags on attachment: 129201

Committed r109205: &lt;http://trac.webkit.org/changeset/109205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567479</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 00:58:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124320</attachid>
            <date>2012-01-27 08:15:49 -0800</date>
            <delta_ts>2012-02-27 06:47:22 -0800</delta_ts>
            <desc>First patch</desc>
            <filename>mallocreplace.patch</filename>
            <type>text/plain</type>
            <size>31230</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCA4OGQzYWU5Li41NjVmYThhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNzAgQEAKKzIwMTItMDEtMjcgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVwbGFjZSBtYWxsb2MvY2FsbG9jL2ZyZWUg
dG8gbmV3L2RlbGV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZWQgYWxtb3N0IGFsbCBtYWxsb2MvY2FsbG9jL2ZyZWUgdG8gbmV3L2RlbGV0
ZSBvcGVyYXRvciBhbmQgd2hlcmUgaXQgd2FzIHBvc3NpYmxlIHNtYXJ0IHBvaW50ZXJzIHdlcmUg
YWxzbworICAgICAgICB1c2VkLiBMZWZ0IGZldyBjIG1lbW9yeSBhbGxvY2F0aW9uIGJ5IGludGVu
dGlvbiB0byBub3QgbWl4IGMgYW5kIGMrKyBtZW1vcnkgbWFuYWdtZW50LgorCisgICAgICAgICog
ZXdrL2V3a19hdXRoX3NvdXAuY3BwOgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6OnNlc3Npb25f
YXV0aGVudGljYXRlKToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpmcmVlX2F1dGhfZGF0YSk6
CisgICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6CisgICAgICAgIChld2tfY29udGV4
dF9tZW51X3VucmVmKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9uZXcpOgorICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6CisgICAgICAgIChld2tf
Y29va2llc19nZXRfYWxsKToKKyAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKKyAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9m
cmVlKToKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorICAgICAgICAqIGV3ay9l
d2tfaGlzdG9yeS5jcHA6CisgICAgICAgIChld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUp
OgorICAgICAgICAoX2V3a19oaXN0b3J5X2l0ZW1fZnJlZSk6CisgICAgICAgIChld2tfaGlzdG9y
eV9uZXcpOgorICAgICAgICAoZXdrX2hpc3RvcnlfZnJlZSk6CisgICAgICAgICogZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9JdGVtKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
cXVlc3RfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlcXVlc3RfZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfZmx1c2gpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9hZGQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZGVs
KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6CisgICAgICAgIChfZXdrX3Rp
bGVfbWF0cml4X3RpbGVfZnJlZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKKyAg
ICAgICAgKGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCk6CisgICAgICAgIChld2tfdGls
ZV9tYXRyaXhfaW52YWxpZGF0ZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZSk6Cisg
ICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6CisgICAgICAgICh0aWxlX2FjY291bnQp
OgorICAgICAgICAoZXdrX3RpbGVfbmV3KToKKyAgICAgICAgKGV3a190aWxlX2ZyZWUpOgorICAg
ICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX25ldyk6CisgICAgICAgIChfZXdrX3RpbGVfdW51
c2VkX2NhY2hlX2ZyZWUpOgorICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2NsZWFyKToK
KyAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCk6CisgICAgICAgIChld2tfdGls
ZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQpOgorICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hl
X3RpbGVfcHV0KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX3ByaXZhdGUuaDoKKyAgICAgICAg
KiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0YSk6Cisg
ICAgICAgIChfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcpOgorICAgICAgICAoX2V3a192aWV3X3By
aXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChld2tfdmll
d19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX25ldyk6CisgICAgICAg
IChld2tfdmlld19wb3B1cF9kZXN0cm95KToKKyAgICAgICAgKEVXS1ByaXZhdGU6OmNvcmVQYWdl
KToKKyAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6CisgICAgICAgIChld2tf
d2luZG93X2ZlYXR1cmVzX3VucmVmKToKKyAgICAgICAgKGV3a193aW5kb3dfZmVhdHVyZXNfbmV3
X2Zyb21fY29yZSk6CisKIDIwMTItMDEtMjYgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lA
c2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gQWRkZWQgbWlzc2luZyBORVRTQ0FQRV9QTFVH
SU5fQVBJIG1hY3JvLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRo
X3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCmluZGV4
IDgzNGRhYzcuLmQ4NTQyN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
YXV0aF9zb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5j
cHAKQEAgLTkzLDE5ICs5MywxMyBAQCBzdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShT
b3VwU2Vzc2lvbiogc2Vzc2lvbiwgU291cE1lc3NhZ2UqIG1lc3NhZ2UsIFNvdQogICAgIGlmICgh
ZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1
dGhlbnRpY2F0aW9uRGF0YSA9IHN0YXRpY19jYXN0PEV3a19BdXRoX0RhdGEqPihjYWxsb2MoMSwg
c2l6ZW9mKEV3a19BdXRoX0RhdGEpKSk7Ci0KLSAgICBpZiAoIWF1dGhlbnRpY2F0aW9uRGF0YSkg
ewotICAgICAgICBDUklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19BdXRoX0RhdGEiKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdl
KHNlc3Npb24sIG1lc3NhZ2UpOwogICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBtZXNz
YWdlIHN0aWNrcyBhcm91bmQgd2hlbiBwYXVzaW5nIGl0LgogICAgIGdfb2JqZWN0X3JlZihtZXNz
YWdlKTsKICAgICBnX29iamVjdF9yZWYoc2Vzc2lvbik7CiAgICAgZ19vYmplY3RfcmVmKGF1dGgp
OwogCisgICAgYXV0aGVudGljYXRpb25EYXRhID0gbmV3IEV3a19BdXRoX0RhdGE7CiAgICAgYXV0
aGVudGljYXRpb25EYXRhLT5tZXNzYWdlID0gbWVzc2FnZTsKICAgICBhdXRoZW50aWNhdGlvbkRh
dGEtPmF1dGggPSBhdXRoOwogICAgIGF1dGhlbnRpY2F0aW9uRGF0YS0+c2Vzc2lvbiA9IHNlc3Np
b247CkBAIC0xMjIsNyArMTE2LDcgQEAgc3RhdGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdrX0F1
dGhfRGF0YSogYXV0aERhdGEpCiAgICAgZ19vYmplY3RfdW5yZWYoYXV0aERhdGEtPm1lc3NhZ2Up
OwogICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5zZXNzaW9uKTsKICAgICBnX29iamVjdF91
bnJlZihhdXRoRGF0YS0+YXV0aCk7Ci0gICAgZnJlZShhdXRoRGF0YSk7CisgICAgZGVsZXRlIGF1
dGhEYXRhOwogfQogCiBzdGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5h
Z2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29udGV4dG1lbnUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250
ZXh0bWVudS5jcHAKaW5kZXggZDJiOWYxOS4uNmRmZTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19jb250ZXh0bWVudS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9pZCBld2tfY29udGV4
dF9tZW51X3VucmVmKEV3a19Db250ZXh0X01lbnUqIG1lbnUpCiAgICAgRUlOQV9MSVNUX0ZSRUUo
bWVudS0+aXRlbXMsIGl0ZW0pCiAgICAgICAgIGV3a19jb250ZXh0X21lbnVfaXRlbV9mcmVlKHN0
YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KGl0ZW0pKTsKIAotICAgIGZyZWUobWVu
dSk7CisgICAgZGVsZXRlIG1lbnU7CiB9CiAKIEVpbmFfQm9vbCBld2tfY29udGV4dF9tZW51X2Rl
c3Ryb3koRXdrX0NvbnRleHRfTWVudSogbWVudSkKQEAgLTEwMSwxMCArMTAxLDcgQEAgRXdrX0Nv
bnRleHRfTWVudV9JdGVtKiBld2tfY29udGV4dF9tZW51X2l0ZW1fbmV3KEV3a19Db250ZXh0X01l
bnVfSXRlbV9UeXBlIHR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBFd2tfQ29udGV4dF9NZW51X0FjdGlvbiBhY3Rpb24sIEV3a19Db250ZXh0X01l
bnUqIHN1Ym1lbnUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgY2hhciogdGl0bGUsIEVpbmFfQm9vbCBjaGVja2VkLCBFaW5hX0Jvb2wgZW5h
YmxlZCkKIHsKLSAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxF
d2tfQ29udGV4dF9NZW51X0l0ZW0qPihtYWxsb2Moc2l6ZW9mKCppdGVtKSkpOwotICAgIGlmICgh
aXRlbSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0
ZW0gPSBuZXcgRXdrX0NvbnRleHRfTWVudV9JdGVtOwogICAgIGl0ZW0tPnR5cGUgPSB0eXBlOwog
ICAgIGl0ZW0tPmFjdGlvbiA9IGFjdGlvbjsKICAgICBpdGVtLT50aXRsZSA9IGVpbmFfc3RyaW5n
c2hhcmVfYWRkKHRpdGxlKTsKQEAgLTEzNyw3ICsxMzQsNyBAQCB2b2lkIGV3a19jb250ZXh0X21l
bnVfaXRlbV9mcmVlKEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSkKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihpdGVtKTsKIAogICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGl0ZW0t
PnRpdGxlKTsKLSAgICBmcmVlKGl0ZW0pOworICAgIGRlbGV0ZSBpdGVtOwogfQogCiBFd2tfQ29u
dGV4dF9NZW51X0l0ZW1fVHlwZSBld2tfY29udGV4dF9tZW51X2l0ZW1fdHlwZV9nZXQoY29uc3Qg
RXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQpAQCAtMjI2LDExICsyMjMsNyBAQCBFd2tfQ29u
dGV4dF9NZW51KiBld2tfY29udGV4dF9tZW51X25ldyhFdmFzX09iamVjdCogdmlldywgV2ViQ29y
ZTo6Q29udGV4dE1lbnVDbwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTCh2aWV3
LCAwKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29udHJvbGxlciwgMCk7
CiAKLSAgICBtZW51ID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudSo+KG1hbGxvYyhzaXpl
b2YoKm1lbnUpKSk7Ci0gICAgaWYgKCFtZW51KSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBu
b3QgYWxsb2NhdGUgY29udGV4dCBtZW51IG1lbW9yeS4iKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgfQorICAgIG1lbnUgPSBuZXcgRXdrX0NvbnRleHRfTWVudTsKIAogICAgIG1lbnUtPl9fcmVm
ID0gMTsKICAgICBtZW51LT52aWV3ID0gdmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfY29va2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tp
ZXMuY3BwCmluZGV4IDM1ZTY0YWMuLjY2N2IwZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfY29va2llcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19j
b29raWVzLmNwcApAQCAtODYsNyArODYsNyBAQCBFaW5hX0xpc3QqIGV3a19jb29raWVzX2dldF9h
bGwodm9pZCkKICAgICBsaXN0ID0gc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUph
cik7CiAgICAgZm9yIChwID0gbGlzdDsgcDsgcCA9IHAtPm5leHQpIHsKICAgICAgICAgU291cENv
b2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KHAtPmRhdGEpOwotICAgICAg
ICBFd2tfQ29va2llKiBld2tDb29raWUgPSBzdGF0aWNfY2FzdDxFd2tfQ29va2llKj4obWFsbG9j
KHNpemVvZigqZXdrQ29va2llKSkpOworICAgICAgICBFd2tfQ29va2llKiBld2tDb29raWUgPSBu
ZXcgRXdrX0Nvb2tpZTsKICAgICAgICAgZXdrQ29va2llLT5uYW1lID0gc3RyZHVwKGNvb2tpZS0+
bmFtZSk7CiAgICAgICAgIGV3a0Nvb2tpZS0+dmFsdWUgPSBzdHJkdXAoY29va2llLT52YWx1ZSk7
CiAgICAgICAgIGV3a0Nvb2tpZS0+ZG9tYWluID0gc3RyZHVwKGNvb2tpZS0+ZG9tYWluKTsKQEAg
LTEzNCw3ICsxMzQsNyBAQCB2b2lkIGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKEV3a19Db29raWUq
IGNvb2tpZSkKICAgICBmcmVlKGNvb2tpZS0+dmFsdWUpOwogICAgIGZyZWUoY29va2llLT5kb21h
aW4pOwogICAgIGZyZWUoY29va2llLT5wYXRoKTsKLSAgICBmcmVlKGNvb2tpZSk7CisgICAgZGVs
ZXRlIGNvb2tpZTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmlu
ZGV4IDk2MWZhMGIuLmM2Yzg3MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfZnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBA
IC02NTgsNyArNjU4LDcgQEAgdm9pZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rl
c3QqIGhpdFRlc3QpCiAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0VGVzdC0+bGluay50aXRs
ZSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0VGVzdC0+aW1hZ2VfdXJpKTsKICAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChoaXRUZXN0LT5tZWRpYV91cmkpOwotICAgIGZyZWUoaGl0VGVz
dCk7CisgICAgZGVsZXRlIGhpdFRlc3Q7CiB9CiAKIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hp
dF90ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKQEAg
LTY3OSwxMiArNjc5LDcgQEAgRXdrX0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgaW50IHgsIGludCB5KQogICAgIGlmICghcmVzdWx0
LmlubmVyTm9kZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEV3a19IaXRfVGVzdCogaGl0
VGVzdCA9IHN0YXRpY19jYXN0PEV3a19IaXRfVGVzdCo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0hp
dF9UZXN0KSkpOwotICAgIGlmICghaGl0VGVzdCkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQg
bm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgaGl0IHRlc3QuIik7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQorICAgIEV3a19IaXRfVGVzdCogaGl0VGVzdCA9IG5ldyBFd2tfSGl0X1Rlc3Q7CiAg
ICAgaGl0VGVzdC0+eCA9IHJlc3VsdC5wb2ludCgpLngoKTsKICAgICBoaXRUZXN0LT55ID0gcmVz
dWx0LnBvaW50KCkueSgpOwogI2lmIDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3Bw
CmluZGV4IGEzOTg3NTkuLjhkYjgzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3
ay9ld2tfaGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5
LmNwcApAQCAtMjQxLDE0ICsyNDEsMTQgQEAgRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3Rvcnlf
aXRlbV9uZXdfZnJvbV9jb3JlKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiAKLSAgICBpdGVtID0gKEV3a19IaXN0b3J5X0l0ZW0qKWNhbGxvYygx
LCBzaXplb2YoRXdrX0hpc3RvcnlfSXRlbSkpOwotICAgIGlmICghaXRlbSkgewotICAgICAgICBD
UklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIGl0ZW0gbWVtb3J5LiIpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KICAgICBjb3JlLT5yZWYoKTsKKworICAgIGl0ZW0gPSBuZXcgRXdrX0hp
c3RvcnlfSXRlbTsKICAgICBpdGVtLT5jb3JlID0gY29yZTsKKyAgICBpdGVtLT50aXRsZSA9IDA7
CisgICAgaXRlbS0+YWx0ZXJuYXRlVGl0bGUgPSAwOworICAgIGl0ZW0tPnVyaSA9IDA7CisgICAg
aXRlbS0+b3JpZ2luYWxVcmkgPSAwOwogCiAgICAgcmV0dXJuIGl0ZW07CiB9CkBAIC0yNjUsNyAr
MjY1LDcgQEAgRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXcoY29uc3QgY2hh
ciogdXJpLCBjb25zdCBjaGFyKiB0aXRsZSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2hpc3Rv
cnlfaXRlbV9mcmVlKEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBjb3JlKQogewogICAgIGNvcmUtPmRlcmVmKCk7Ci0gICAgZnJlZShpdGVtKTsKKyAgICBkZWxl
dGUgaXRlbTsKIH0KIAogdm9pZCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSkKQEAgLTM5OSwxNCArMzk5LDkgQEAgRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25l
dyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKICAgICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKIAot
ICAgIGhpc3RvcnkgPSBzdGF0aWNfY2FzdDxFd2tfSGlzdG9yeSo+KG1hbGxvYyhzaXplb2YoRXdr
X0hpc3RvcnkpKSk7Ci0gICAgaWYgKCFoaXN0b3J5KSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3Vs
ZCBub3QgYWxsb2NhdGUgaGlzdG9yeSBtZW1vcnkuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIGNvcmUtPnJlZigpOworICAgIGhpc3RvcnkgPSBuZXcgRXdrX0hpc3Rvcnk7CiAg
ICAgaGlzdG9yeS0+Y29yZSA9IGNvcmU7CisgICAgY29yZS0+cmVmKCk7CiAKICAgICByZXR1cm4g
aGlzdG9yeTsKIH0KQEAgLTQyMyw3ICs0MTgsNyBAQCB2b2lkIGV3a19oaXN0b3J5X2ZyZWUoRXdr
X0hpc3RvcnkqIGhpc3RvcnkpCiB7CiAgICAgREJHKCJoaXN0b3J5PSVwIiwgaGlzdG9yeSk7CiAg
ICAgaGlzdG9yeS0+Y29yZS0+ZGVyZWYoKTsKLSAgICBmcmVlKGhpc3RvcnkpOworICAgIGRlbGV0
ZSBoaXN0b3J5OwogfQogCiBuYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAppbmRleCA0Y2RkNzJkLi5k
M2FlOTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS5jcHAKQEAgLTI0OCwxMSArMjQ4LDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3RpbGVfZGlzc29jaWF0ZV9hbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmUK
IAogc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9y
ZW5kZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgdW5z
aWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewotICAg
IEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdDsKLQot
ICAgIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVu
ZGVyX1JlcXVlc3QqPihtYWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSkpOwotICAgIGlmICghcmVxdWVz
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1By
ZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdCA9IG5ldyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9Q
cmVfUmVuZGVyX1JlcXVlc3Q7CiAKICAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMg
PSBlaW5hX2lubGlzdF9hcHBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzLCBFSU5BX0lOTElTVF9HRVQo
cmVxdWVzdCkpOwpAQCAtMjY4LDcgKzI2NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2RlbChFd2tfVGlsZWRfQmFjCiB7
CiAgICAgcHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzID0gZWluYV9pbmxpc3RfcmVtb3Zl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXYtPnJlbmRl
ci5wcmVSZW5kZXJSZXF1ZXN0cywgRUlOQV9JTkxJU1RfR0VUKHJlcXVlc3QpKTsKLSAgICBmcmVl
KHJlcXVlc3QpOworICAgIGRlbGV0ZSByZXF1ZXN0OwogfQogCiBzdGF0aWMgaW5saW5lIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdChjb25zdCBFd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9EYXRhKiBwcml2KQpAQCAtMjg1LDcgKzI4MSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2goRXdrX1RpbGVkX0JhY2tp
bmdfCiAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCog
cmVxdWVzdDsKICAgICAgICAgcmVxdWVzdCA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlcXVlc3RfZmlyc3QocHJpdik7CiAgICAgICAgICpwcmVSZW5kZXJMaXN0ID0gZWlu
YV9pbmxpc3RfcmVtb3ZlKCpwcmVSZW5kZXJMaXN0LCAqcHJlUmVuZGVyTGlzdCk7Ci0gICAgICAg
IGZyZWUocmVxdWVzdCk7CisgICAgICAgIGRlbGV0ZSByZXF1ZXN0OwogICAgIH0KIH0KIApAQCAt
MzAwLDcgKzI5Niw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlcXVlc3RfY2xlYXIoRXdrX1RpbGVkX0JhY2tpbmdfCiAgICAgICAgIHRtcCA9IGl0
ZXItPm5leHQ7CiAgICAgICAgICpwcmVSZW5kZXJMaXN0ID0gZWluYV9pbmxpc3RfcmVtb3ZlKCpw
cmVSZW5kZXJMaXN0LCBpdGVyKTsKICAgICAgICAgaXRlciA9IHRtcDsKLSAgICAgICAgZnJlZShy
ZXF1ZXN0KTsKKyAgICAgICAgZGVsZXRlIHJlcXVlc3Q7CiAgICAgfQogfQogCkBAIC00NzAsMzEg
KzQ2NiwyNSBAQCBlbmQ6CiAKIHN0YXRpYyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBf
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVf
RGF0YSogcHJpdiwgdW5zaWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93KQogewot
ICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0ZW07CiAgICAgRXZhc19Db29yZCB4
LCB5LCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQ7CiAKICAgICBEQkcoImV3a0JhY2tpbmdTdG9yZSVw
IiwgcHJpdi0+c2VsZik7CiAKLSAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVkX0JhY2tp
bmdfU3RvcmVfSXRlbSo+KG1hbGxvYyhzaXplb2YoKml0ZW0pKSk7Ci0gICAgaWYgKCFpdGVtKQot
ICAgICAgICByZXR1cm4gMDsKLQogICAgIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0
aDsKICAgICB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICB4ID0gcHJp
di0+dmlldy5vZmZzZXQuYmFzZS54ICsgcHJpdi0+dmlldy54ICsgdGlsZVdpZHRoICAqY29sdW1u
OwogICAgIHkgPSBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgKyBwcml2LT52aWV3LnkgKyB0aWxl
SGVpZ2h0ICAqcm93OwogCisgICAgT3duUHRyPEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0+
IGl0ZW0gPSBhZG9wdFB0cihuZXcgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk7CiAgICAg
aXRlbS0+dGlsZSA9IDA7Ci0KICAgICBpdGVtLT5zbW9vdGhfc2NhbGUgPSBwcml2LT52aWV3LnRp
bGUuem9vbVdlYWtTbW9vdGhTY2FsZTsKLSAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRl
bV9tb3ZlKGl0ZW0sIHgsIHkpOwotICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX3Jl
c2l6ZShpdGVtLCB0aWxlV2lkdGgsIHRpbGVIZWlnaHQpOwotICAgIGlmICghX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX2l0ZW1fZmlsbChwcml2LCBpdGVtLCBjb2x1bW4sIHJvdykpIHsKLSAgICAg
ICAgZnJlZShpdGVtKTsKKworICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX21vdmUo
aXRlbS5nZXQoKSwgeCwgeSk7CisgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcmVz
aXplKGl0ZW0uZ2V0KCksIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7CisgICAgaWYgKCFfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKHByaXYsIGl0ZW0uZ2V0KCksIGNvbHVtbiwgcm93
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgcmV0dXJuIGl0ZW07CisgICAgcmV0
dXJuIGl0ZW0ubGVha1B0cigpOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmVfaXRlbV9kZWwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgRXdrX1Rp
bGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbSkKQEAgLTUwNCw3ICs0OTQsNyBAQCBzdGF0aWMg
dm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9kZWwoRXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfRGF0YSogcHJpdgogICAgICAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfdGlsZV9k
aXNzb2NpYXRlKHByaXYsIGl0ZW0sIGxhc3RfdXNlZCk7CiAgICAgfQogCi0gICAgZnJlZShpdGVt
KTsKKyAgICBkZWxldGUgaXRlbTsKIH0KIAogc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX2l0ZW1fc21vb3RoX3NjYWxlX3NldChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9JdGVt
KiBpdGVtLCBFaW5hX0Jvb2wgc21vb3RoU2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3RpbGVkX21hdHJpeC5jcHAKaW5kZXggYWIwNjA0Mi4uZDUzYzdkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcApAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1
ZGUgImV3a190aWxlZF9iYWNraW5nX3N0b3JlLmgiCiAjaW5jbHVkZSAiZXdrX3RpbGVkX3ByaXZh
dGUuaCIKICNpbmNsdWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8T3duUHRyLmg+CisjaW5jbHVkZSA8
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8aW50dHlwZXMuaD4K
ICNpbmNsdWRlIDxtYXRoLmg+CkBAIC0xNzAsNyArMTcyLDcgQEAgc3RhdGljIHZvaWQgX2V3a190
aWxlX21hdHJpeF90aWxlX2ZyZWUodm9pZCogZGF0YSwgRXdrX1RpbGUqIHRpbGUpCiAgICAgaWYg
KCFlbnRyeS0+Y291bnQgJiYgZW50cnktPm1hdHJpeCAhPSB0aWxlTWF0cml4LT5tYXRyaXgpIHsK
ICAgICAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShlbnRyeS0+bWF0cml4KTsKICAgICAgICAg
dGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9yZW1vdmUodGlsZU1hdHJpeC0+bWF0
cmljZXMsIEVJTkFfSU5MSVNUX0dFVChlbnRyeSkpOwotICAgICAgICBmcmVlKGVudHJ5KTsKKyAg
ICAgICAgZGVsZXRlIGVudHJ5OwogICAgIH0KIAogICAgIGV3a190aWxlX2ZyZWUodGlsZSk7CkBA
IC0xOTcsMTggKzE5OSwxNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVfbWF0cml4X3RpbGVfZnJl
ZSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSkKICAqLwogRXdrX1RpbGVfTWF0cml4KiBld2tf
dGlsZV9tYXRyaXhfbmV3KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlLCB1
bnNpZ25lZCBsb25nIGNvbHVtbnMsIHVuc2lnbmVkIGxvbmcgcm93cywgZmxvYXQgem9vbUxldmVs
LCBFdmFzX0NvbG9yc3BhY2UgY29sb3JTcGFjZSwgdm9pZCAoKnJlbmRlckNhbGxiYWNrKSh2b2lk
KiBkYXRhLCBFd2tfVGlsZSogdGlsZSwgY29uc3QgRWluYV9SZWN0YW5nbGUqIHVwZGF0ZSksIGNv
bnN0IHZvaWQqIHJlbmRlckRhdGEpCiB7Ci0gICAgRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4
ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVfTWF0cml4Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVGls
ZV9NYXRyaXgpKSk7Ci0gICAgaWYgKCF0aWxlTWF0cml4KQotICAgICAgICByZXR1cm4gMDsKKyAg
ICBPd25QdHI8RXdrX1RpbGVfTWF0cml4PiB0aWxlTWF0cml4ID0gV1RGOjphZG9wdFB0cihuZXcg
RXdrX1RpbGVfTWF0cml4KTsKIAotICAgIHRpbGVNYXRyaXgtPm1hdHJpeCA9IGVpbmFfbWF0cml4
c3BhcnNlX25ldyhyb3dzLCBjb2x1bW5zLCBfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSwgdGls
ZU1hdHJpeCk7CisgICAgdGlsZU1hdHJpeC0+bWF0cml4ID0gZWluYV9tYXRyaXhzcGFyc2VfbmV3
KHJvd3MsIGNvbHVtbnMsIF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlLCB0aWxlTWF0cml4Lmdl
dCgpKTsKICAgICBpZiAoIXRpbGVNYXRyaXgtPm1hdHJpeCkgewogICAgICAgICBFUlIoImNvdWxk
IG5vdCBjcmVhdGUgc3BhcnNlIG1hdHJpeC4iKTsKLSAgICAgICAgZnJlZSh0aWxlTWF0cml4KTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2
ZWxfc2V0KHRpbGVNYXRyaXgsIHpvb21MZXZlbCk7CisgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMg
PSAwOworICAgIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCh0aWxlTWF0cml4LmdldCgp
LCB6b29tTGV2ZWwpOwogCiAgICAgaWYgKHRpbGVVbnVzZWRDYWNoZSkKICAgICAgICAgdGlsZU1h
dHJpeC0+dGlsaWVVbnVzZWRDYWNoZSA9IGV3a190aWxlX3VudXNlZF9jYWNoZV9yZWYodGlsZVVu
dXNlZENhY2hlKTsKQEAgLTIxNyw3ICsyMTcsNiBAQCBFd2tfVGlsZV9NYXRyaXgqIGV3a190aWxl
X21hdHJpeF9uZXcoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIHVucwog
ICAgICAgICBpZiAoIXRpbGVNYXRyaXgtPnRpbGllVW51c2VkQ2FjaGUpIHsKICAgICAgICAgICAg
IEVSUigibm8gY2FjaGUgb2YgdW51c2VkIHRpbGUhIik7CiAgICAgICAgICAgICBlaW5hX21hdHJp
eHNwYXJzZV9mcmVlKHRpbGVNYXRyaXgtPm1hdHJpeCk7Ci0gICAgICAgICAgICBmcmVlKHRpbGVN
YXRyaXgpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjcs
OCArMjI2LDE2IEBAIEV3a19UaWxlX01hdHJpeCogZXdrX3RpbGVfbWF0cml4X25ldyhFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwgdW5zCiAgICAgdGlsZU1hdHJpeC0+cmVu
ZGVyLmRhdGEgPSAodm9pZCopcmVuZGVyRGF0YTsKICAgICB0aWxlTWF0cml4LT50aWxlLndpZHRo
ID0gZGVmYXVsdFRpbGVXaWR0aDsKICAgICB0aWxlTWF0cml4LT50aWxlLmhlaWdodCA9IGRlZmF1
bHRUaWxlSGVpZ3RoOworICAgIHRpbGVNYXRyaXgtPmZyb3plbiA9IDA7CisgICAgdGlsZU1hdHJp
eC0+dXBkYXRlcyA9IDA7CiAKLSAgICByZXR1cm4gdGlsZU1hdHJpeDsKKyNpZmRlZiBERUJVR19N
RU1fTEVBS1MKKyAgICB0aWxlTWF0cml4LT5zdGF0cy50aWxlcy5hbGxvY2F0ZWQgPSAwOworICAg
IHRpbGVNYXRyaXgtPnN0YXRzLnRpbGVzLmZyZWVkID0gMDsKKyAgICB0aWxlTWF0cml4LT5zdGF0
cy5ieXRlcy5hbGxvY2F0ZWQgPSAwOworICAgIHRpbGVNYXRyaXgtPnN0YXRzLmJ5dGVzLmZyZWVk
ID0gMDsKKyNlbmRpZgorICAgIHJldHVybiB0aWxlTWF0cml4LmxlYWtQdHIoKTsKIH0KIAogdm9p
ZCBld2tfdGlsZV9tYXRyaXhfem9vbV9sZXZlbF9zZXQoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0
cml4LCBmbG9hdCB6b29tKQpAQCAtMjQ5LDEyICsyNTYsMTQgQEAgdm9pZCBld2tfdGlsZV9tYXRy
aXhfem9vbV9sZXZlbF9zZXQoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4LCBmbG9hdCB6b29t
KQogICAgIH0KIAogICAgIGlmICghZW50cnkpIHsKLSAgICAgICAgZW50cnkgPSBzdGF0aWNfY2Fz
dDxFd2tfVGlsZV9NYXRyaXhfRW50cnkqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19UaWxlX01hdHJp
eF9FbnRyeSkpKTsKLSAgICAgICAgZW50cnktPnpvb20gPSB6b29tOworICAgICAgICBlbnRyeSA9
IG5ldyBFd2tfVGlsZV9NYXRyaXhfRW50cnk7CisgICAgICAgIG1lbXNldChlbnRyeSwgMCwgc2l6
ZW9mKEV3a19UaWxlX01hdHJpeF9FbnRyeSkpOwogICAgICAgICBlbnRyeS0+bWF0cml4ID0gZWlu
YV9tYXRyaXhzcGFyc2VfbmV3KHJvd3MsIGNvbHVtbnMsIF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9m
cmVlLCB0aWxlTWF0cml4KTsKKyAgICAgICAgZW50cnktPmNvdW50ID0gMDsKKyAgICAgICAgZW50
cnktPnpvb20gPSB6b29tOwogICAgICAgICBpZiAoIWVudHJ5LT5tYXRyaXgpIHsKICAgICAgICAg
ICAgIEVSUigiY291bGQgbm90IGNyZWF0ZSBzcGFyc2UgbWF0cml4LiIpOwotICAgICAgICAgICAg
ZnJlZShlbnRyeSk7CisgICAgICAgICAgICBkZWxldGUgZW50cnk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlz
dF9wcmVwZW5kKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBFSU5BX0lOTElTVF9HRVQoZW50cnkpKTsK
QEAgLTI3Nyw3ICsyODYsNyBAQCB2b2lkIGV3a190aWxlX21hdHJpeF9pbnZhbGlkYXRlKEV3a19U
aWxlX01hdHJpeCogdGlsZU1hdHJpeCkKICAgICAgICAgaWYgKGl0ZXJhdG9yLT5tYXRyaXggIT0g
dGlsZU1hdHJpeC0+bWF0cml4KSB7CiAgICAgICAgICAgICBlaW5hX21hdHJpeHNwYXJzZV9mcmVl
KGl0ZXJhdG9yLT5tYXRyaXgpOwogICAgICAgICAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSBl
aW5hX2lubGlzdF9yZW1vdmUodGlsZU1hdHJpeC0+bWF0cmljZXMsIG1hdHJpeExpc3QpOwotICAg
ICAgICAgICAgZnJlZShpdGVyYXRvcik7CisgICAgICAgICAgICBkZWxldGUgaXRlcmF0b3I7CiAg
ICAgICAgIH0KIAogICAgICAgICBtYXRyaXhMaXN0ID0gbmV4dDsKQEAgLTMwMyw4ICszMTIsOCBA
QCB2b2lkIGV3a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkK
ICAgICBlbnRyeSA9IEVJTkFfSU5MSVNUX0NPTlRBSU5FUl9HRVQodGlsZU1hdHJpeC0+bWF0cmlj
ZXMsIEV3a19UaWxlX01hdHJpeF9FbnRyeSk7CiAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShl
bnRyeS0+bWF0cml4KTsKICAgICB0aWxlTWF0cml4LT5tYXRyaWNlcyA9IGVpbmFfaW5saXN0X3Jl
bW92ZSh0aWxlTWF0cml4LT5tYXRyaWNlcywgcmVpbnRlcnByZXRfY2FzdDxFaW5hX0lubGlzdCo+
KGVudHJ5KSk7Ci0gICAgZnJlZShlbnRyeSk7CiAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSAw
OworICAgIGRlbGV0ZSBlbnRyeTsKIAogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KHRp
bGVNYXRyaXgtPnRpbGllVW51c2VkQ2FjaGUpOwogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV91
bnJlZih0aWxlTWF0cml4LT50aWxpZVVudXNlZENhY2hlKTsKQEAgLTMzNSw3ICszNDQsNyBAQCB2
b2lkIGV3a190aWxlX21hdHJpeF9mcmVlKEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCkKICAg
ICAgICAgICAgIHRpbGVNYXRyaXgtPnN0YXRzLmJ5dGVzLmFsbG9jYXRlZCwgdGlsZU1hdHJpeC0+
c3RhdHMuYnl0ZXMuZnJlZWQpOwogI2VuZGlmCiAKLSAgICBmcmVlKHRpbGVNYXRyaXgpOworICAg
IGRlbGV0ZSB0aWxlTWF0cml4OwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfdGlsZWRfbW9kZWwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9tb2RlbC5jcHAKaW5kZXggODQwNDhjYi4uNDE4NWZiOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tb2RlbC5jcHAKQEAgLTE4NiwxMCArMTg2LDcgQEAgRXdrX1RpbGUq
IGV3a190aWxlX25ldyhFdmFzKiBldmFzLCBFdmFzX0Nvb3JkIHdpZHRoLCBFdmFzX0Nvb3JkIGhl
aWdodCwgZmxvYXQgem8KIAogICAgIERCRygic2l6ZTogJWR4JWQgKCVkKSwgem9vbTogJWYsIGNz
cGFjZT0lZCIsIHdpZHRoLCBoZWlnaHQsIGFyZWEsIChkb3VibGUpem9vbSwgY29sb3JTcGFjZSk7
CiAKLSAgICB0aWxlID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGUqPihtYWxsb2Moc2l6ZW9mKEV3a19U
aWxlKSkpOwotICAgIGlmICghdGlsZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KKyAgICB0aWxlID0g
bmV3IEV3a19UaWxlOwogICAgIHRpbGUtPmltYWdlID0gZXZhc19vYmplY3RfaW1hZ2VfYWRkKGV2
YXMpOwogCiAgICAgZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChldmFzKTsK
QEAgLTIzOCw3ICsyMzUsNyBAQCB2b2lkIGV3a190aWxlX2ZyZWUoRXdrX1RpbGUqIHRpbGUpCiAg
ICAgICAgIGVpbmFfdGlsZXJfZnJlZSh0aWxlLT51cGRhdGVzKTsKIAogICAgIGV2YXNfb2JqZWN0
X2RlbCh0aWxlLT5pbWFnZSk7Ci0gICAgZnJlZSh0aWxlKTsKKyAgICBkZWxldGUgdGlsZTsKIH0K
IAogLyoqCkBAIC00NDAsOSArNDM3LDggQEAgRXdrX1RpbGVfVW51c2VkX0NhY2hlKiBld2tfdGls
ZV91bnVzZWRfY2FjaGVfbmV3KHNpemVfdCBtYXgpCiB7CiAgICAgRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlKiB0aWxlVW51c2VkQ2FjaGU7CiAKLSAgICB0aWxlVW51c2VkQ2FjaGUgPSBzdGF0aWNfY2Fz
dDxFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19UaWxlX1VudXNl
ZF9DYWNoZSkpKTsKLSAgICBpZiAoIXRpbGVVbnVzZWRDYWNoZSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgdGlsZVVudXNlZENhY2hlID0gbmV3IEV3a19UaWxlX1VudXNlZF9DYWNoZTsKKyAgICBt
ZW1zZXQodGlsZVVudXNlZENhY2hlLCAwLCBzaXplb2YoRXdrX1RpbGVfVW51c2VkX0NhY2hlKSk7
CiAKICAgICBEQkcoInRpbGVVbnVzZWRDYWNoZT0lcCIsIHRpbGVVbnVzZWRDYWNoZSk7CiAgICAg
dGlsZVVudXNlZENhY2hlLT5tZW1vcnkubWF4ID0gbWF4OwpAQCAtNDkyLDcgKzQ4OCw3IEBAIHN0
YXRpYyB2b2lkIF9ld2tfdGlsZV91bnVzZWRfY2FjaGVfZnJlZShFd2tfVGlsZV9VbnVzZWRfQ2Fj
aGUqIHRpbGVVbnVzZWRDYWNoZSkKICAgICAgICAgdGlsZVVudXNlZENhY2hlLT5tZW1vcnkubWF4
LCB0aWxlVW51c2VkQ2FjaGUtPm1lbW9yeS51c2VkKTsKIAogICAgIGV3a190aWxlX3VudXNlZF9j
YWNoZV9jbGVhcih0aWxlVW51c2VkQ2FjaGUpOwotICAgIGZyZWUodGlsZVVudXNlZENhY2hlKTsK
KyAgICBkZWxldGUgdGlsZVVudXNlZENhY2hlOwogfQogCiAvKioKQEAgLTUxMiw3ICs1MDgsNyBA
QCB2b2lkIGV3a190aWxlX3VudXNlZF9jYWNoZV9jbGVhcihFd2tfVGlsZV9VbnVzZWRfQ2FjaGUq
IHRpbGVVbnVzZWRDYWNoZSkKICAgICBFSU5BX0xJU1RfRlJFRSh0aWxlVW51c2VkQ2FjaGUtPmVu
dHJpZXMubGlzdCwgaXRlbSkgewogICAgICAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50cnkq
IGl0ciA9IHN0YXRpY19jYXN0PEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeSo+KGl0ZW0pOwog
ICAgICAgICBpdHItPnRpbGVfZnJlZS5jYWxsYmFjayhpdHItPnRpbGVfZnJlZS5kYXRhLCBpdHIt
PnRpbGUpOwotICAgICAgICBmcmVlKGl0cik7CisgICAgICAgIGRlbGV0ZSBpdHI7CiAgICAgfQog
CiAgICAgdGlsZVVudXNlZENhY2hlLT5tZW1vcnkudXNlZCA9IDA7CkBAIC02MDUsNyArNjAxLDcg
QEAgc2l6ZV90IGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaChFd2tfVGlsZV9VbnVzZWRfQ2Fj
aGUqIHRpbGVVbnVzZWRDYWNoZSwgc2l6ZV8KICAgICAgICAgZG9uZSArPSBld2tfdGlsZV9tZW1v
cnlfc2l6ZV9nZXQoaXRyLT50aWxlKTsKICAgICAgICAgaXRyLT50aWxlX2ZyZWUuY2FsbGJhY2so
aXRyLT50aWxlX2ZyZWUuZGF0YSwgaXRyLT50aWxlKTsKICAgICAgICAgdGlsZVVudXNlZENhY2hl
LT5lbnRyaWVzLmxpc3QgPSBlaW5hX2xpc3RfcmVtb3ZlX2xpc3QodGlsZVVudXNlZENhY2hlLT5l
bnRyaWVzLmxpc3QsIGxpc3QpOwotICAgICAgICBmcmVlKGl0cik7CisgICAgICAgIGRlbGV0ZSBp
dHI7CiAgICAgICAgIGNvdW50Kys7CiAgICAgfQogCkBAIC02NzAsMjggKzY2NiwyMyBAQCB2b2lk
IGV3a190aWxlX3VudXNlZF9jYWNoZV90aGF3KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVu
dXNlZENhY2hlKQogICovCiBFaW5hX0Jvb2wgZXdrX3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfZ2V0
KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlLCBFd2tfVGlsZSogdGlsZSkK
IHsKLSAgICBFaW5hX0xpc3QqIGZvdW5kRW50cnksICppdGVyYXRlRW50cnk7Ci0KKyAgICBFaW5h
X0xpc3QqIGl0ZXJhdGVFbnRyeTsKICAgICB2b2lkKiBpdGVtOwotICAgIGZvdW5kRW50cnkgPSAw
OworCiAgICAgRUlOQV9MSVNUX0ZPUkVBQ0godGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmxpc3Qs
IGl0ZXJhdGVFbnRyeSwgaXRlbSkgewogICAgICAgICBFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50
cnkqIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVfVW51c2VkX0NhY2hlX0VudHJ5Kj4oaXRl
bSk7CiAgICAgICAgIGlmIChlbnRyeS0+dGlsZSA9PSB0aWxlKSB7Ci0gICAgICAgICAgICBmb3Vu
ZEVudHJ5ID0gaXRlcmF0ZUVudHJ5OwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB0
aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMuY291bnQtLTsKKyAgICAgICAgICAgIHRpbGVVbnVzZWRD
YWNoZS0+bWVtb3J5LnVzZWQgLT0gZXdrX3RpbGVfbWVtb3J5X3NpemVfZ2V0KHRpbGUpOworICAg
ICAgICAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmxpc3QgPSBlaW5hX2xpc3RfcmVtb3Zl
X2xpc3QodGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmxpc3QsIGl0ZXJhdGVFbnRyeSk7CisgICAg
ICAgICAgICBkZWxldGUgZW50cnk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQotICAgIGlmICghZm91bmRFbnRyeSkgewotICAgICAgICBFUlIoInRpbGUgJXAg
bm90IGZvdW5kIGluIGNhY2hlICVwIiwgdGlsZSwgdGlsZVVudXNlZENhY2hlKTsKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0KIAotICAgIHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5jb3Vu
dC0tOwotICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5LnVzZWQgLT0gZXdrX3RpbGVfbWVtb3J5
X3NpemVfZ2V0KHRpbGUpOwotICAgIHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWlu
YV9saXN0X3JlbW92ZV9saXN0KHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0LCBmb3VuZEVu
dHJ5KTsKLSAgICBmcmVlKGl0ZW0pOwotCi0gICAgcmV0dXJuIHRydWU7CisgICAgRVJSKCJ0aWxl
ICVwIG5vdCBmb3VuZCBpbiBjYWNoZSAlcCIsIHRpbGUsIHRpbGVVbnVzZWRDYWNoZSk7CisgICAg
cmV0dXJuIGZhbHNlOwogfQogCiAvKioKQEAgLTcyNSw5ICs3MTYsNyBAQCBFaW5hX0Jvb2wgZXdr
X3RpbGVfdW51c2VkX2NhY2hlX3RpbGVfcHV0KEV3a19UaWxlX1VudXNlZF9DYWNoZSogdGlsZVVu
dXNlZENhY2hlLAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdW51c2VkQ2Fj
aGVFbnRyeSA9IHN0YXRpY19jYXN0PEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeSo+KG1hbGxv
YyhzaXplb2YoRXdrX1RpbGVfVW51c2VkX0NhY2hlX0VudHJ5KSkpOwotICAgIGlmICghdW51c2Vk
Q2FjaGVFbnRyeSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHVudXNlZENhY2hlRW50cnkg
PSBuZXcgRXdrX1RpbGVfVW51c2VkX0NhY2hlX0VudHJ5OwogCiAgICAgdGlsZVVudXNlZENhY2hl
LT5lbnRyaWVzLmxpc3QgPSBlaW5hX2xpc3RfYXBwZW5kKHRpbGVVbnVzZWRDYWNoZS0+ZW50cmll
cy5saXN0LCB1bnVzZWRDYWNoZUVudHJ5KTsKICAgICBpZiAoZWluYV9lcnJvcl9nZXQoKSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmggYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaAppbmRleCA5NDg5NmM0Li44
YTE1YWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX3ByaXZhdGUuaApAQCAt
MjksMzQgKzI5LDQgQEAgZXh0ZXJuIGludCBfZXdrX3RpbGVkX2xvZ19kb207CiAjZGVmaW5lIFdS
TiguLi4pIEVJTkFfTE9HX0RPTV9XQVJOKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18p
CiAjZGVmaW5lIElORiguLi4pIEVJTkFfTE9HX0RPTV9JTkZPKF9ld2tfdGlsZWRfbG9nX2RvbSwg
X19WQV9BUkdTX18pCiAjZGVmaW5lIERCRyguLi4pIEVJTkFfTE9HX0RPTV9EQkcoX2V3a190aWxl
ZF9sb2dfZG9tLCBfX1ZBX0FSR1NfXykKLSNkZWZpbmUgT09NKG9wLCBzaXplKSBDUklUSUNBTCgi
Y291bGQgbm90ICVzICV6ZCBieXRlczogJXMiLCBvcCwgc2l6ZSwgc3RyZXJyb3IoZXJybm8pKQot
I2RlZmluZSBNQUxMT0NfT1JfT09NX1JFVChwdHIsIHNpemUsIC4uLikgICAgICAgXAotICAgIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwdHIg
PSBtYWxsb2Moc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBpZiAoIXB0ciAm
JiAoc2l6ZSkgPiAwKSB7ICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgT09NKCJtYWxsb2Mi
LCAoc2l6ZSkpOyAgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19f
OyAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApCi0KLSNkZWZpbmUgQ0FMTE9DX09SX09PTV9S
RVQocHRyLCBzaXplLCAuLi4pICAgICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcHRyID0gY2FsbG9jKDEsIHNpemUpOyAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKCFwdHIgJiYgKHNpemUpID4gMCkgeyAgICAgICAg
ICAgICAgIFwKLSAgICAgICAgICAgIE9PTSgiY2FsbG9jIiwgKHNpemUpKTsgICAgICAgICAgICAg
IFwKLSAgICAgICAgICAgIHJldHVybiBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdo
aWxlICgwKQotCi0jZGVmaW5lIFJFQUxMT0NfT1JfT09NX1JFVChwdHIsIHNpemUsIC4uLikgICAg
ICBcCi0gICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgICAgIHZvaWQqIF9fdG1wX3B0cjsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAg
IF9fdG1wX3B0ciA9IHJlYWxsb2MocHRyLCBzaXplKTsgICAgICAgICBcCi0gICAgICAgIGlmICgh
X190bXBfcHRyICYmIChzaXplKSA+IDApIHsgICAgICAgICBcCi0gICAgICAgICAgICBPT00oInJl
YWxsb2MiLCAoc2l6ZSkpOyAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gX19WQV9B
UkdTX187ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHB0ciA9IF9fdG1wX3B0cjsgICAgICAgICAgICAg
ICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKLQogI2VuZGlmIC8vIGV3a190aWxlZF9wcml2
YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IGE2OGJiYWIuLjdjODg5NmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRp
YyBjb25zdCBFdmFzX1NtYXJ0X0NiX0Rlc2NyaXB0aW9uIF9ld2tfdmlld19jYWxsYmFja19uYW1l
c1tdID0gewogICogQGludGVybmFsCiAgKi8KIHN0cnVjdCBfRXdrX1ZpZXdfUHJpdmF0ZV9EYXRh
IHsKLSAgICBXZWJDb3JlOjpQYWdlKiBwYWdlOworICAgIE93blB0cjxXZWJDb3JlOjpQYWdlPiBw
YWdlOwogICAgIFdlYkNvcmU6OlNldHRpbmdzKiBwYWdlU2V0dGluZ3M7CiAgICAgV2ViQ29yZTo6
RnJhbWUqIG1haW5GcmFtZTsKICAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9y
dEFyZ3VtZW50czsKQEAgLTU4OCwyMyArNTg4LDE4IEBAIHN0YXRpYyBXVEY6OlBhc3NSZWZQdHI8
V2ViQ29yZTo6RnJhbWU+IF9ld2tfdmlld19jb3JlX2ZyYW1lX25ldyhFd2tfVmlld19TbWFydF9E
CiAgICAgfQogICAgIGZyYW1lTG9hZGVyQ2xpZW50LT5zZXRDdXN0b21Vc2VyQWdlbnQoU3RyaW5n
Ojpmcm9tVVRGOChwcml2LT5zZXR0aW5ncy51c2VyQWdlbnQpKTsKIAotICAgIHJldHVybiBXZWJD
b3JlOjpGcmFtZTo6Y3JlYXRlKHByaXYtPnBhZ2UsIG93bmVyLCBmcmFtZUxvYWRlckNsaWVudCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OkZyYW1lOjpjcmVhdGUocHJpdi0+cGFnZS5nZXQoKSwgb3du
ZXIsIGZyYW1lTG9hZGVyQ2xpZW50KTsKIH0KIAogc3RhdGljIEV2YXNfU21hcnRfQ2xhc3MgX3Bh
cmVudF9zYyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxMOwogCiBzdGF0aWMgRXdrX1ZpZXdf
UHJpdmF0ZV9EYXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhKQogewotICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9Ci0gICAgICAgIHN0
YXRpY19jYXN0PEV3a19WaWV3X1ByaXZhdGVfRGF0YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX1Zp
ZXdfUHJpdmF0ZV9EYXRhKSkpOworICAgIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogcHJpdiA9IG5l
dyBFd2tfVmlld19Qcml2YXRlX0RhdGE7CisgICAgbWVtc2V0KHByaXYsIDAsIHNpemVvZihFd2tf
Vmlld19Qcml2YXRlX0RhdGEpKTsKICAgICBBdG9taWNTdHJpbmcgc3RyaW5nOwogICAgIFdlYkNv
cmU6OktVUkwgdXJsOwogCi0gICAgaWYgKCFwcml2KSB7Ci0gICAgICAgIENSSVRJQ0FMKCJjb3Vs
ZCBub3QgYWxsb2NhdGUgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIik7Ci0gICAgICAgIHJldHVybiAw
OwotICAgIH0KLQogICAgIFdlYkNvcmU6OlBhZ2U6OlBhZ2VDbGllbnRzIHBhZ2VDbGllbnRzOwog
ICAgIHBhZ2VDbGllbnRzLmNocm9tZUNsaWVudCA9IG5ldyBXZWJDb3JlOjpDaHJvbWVDbGllbnRF
Zmwoc21hcnREYXRhLT5zZWxmKTsKICAgICBwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQgPSBuZXcg
V2ViQ29yZTo6RWRpdG9yQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CkBAIC02MTQsMTcgKzYw
OSw4IEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tfdmlld19wcml2X25ldyhF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcGFnZUNsaWVudHMuZGV2aWNlTW90
aW9uQ2xpZW50ID0gbmV3IFdlYkNvcmU6OkRldmljZU1vdGlvbkNsaWVudEVmbDsKICAgICBwYWdl
Q2xpZW50cy5kZXZpY2VPcmllbnRhdGlvbkNsaWVudCA9IG5ldyBXZWJDb3JlOjpEZXZpY2VPcmll
bnRhdGlvbkNsaWVudEVmbDsKICNlbmRpZgotICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6
UGFnZShwYWdlQ2xpZW50cyk7Ci0gICAgaWYgKCFwcml2LT5wYWdlKSB7Ci0gICAgICAgIENSSVRJ
Q0FMKCJDb3VsZCBub3QgY3JlYXRlIFdlYktpdCBQYWdlIik7Ci0gICAgICAgIGdvdG8gZXJyb3Jf
cGFnZTsKLSAgICB9Ci0KKyAgICBwcml2LT5wYWdlID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OlBh
Z2UocGFnZUNsaWVudHMpKTsKICAgICBwcml2LT5wYWdlU2V0dGluZ3MgPSBwcml2LT5wYWdlLT5z
ZXR0aW5ncygpOwotICAgIGlmICghcHJpdi0+cGFnZVNldHRpbmdzKSB7Ci0gICAgICAgIENSSVRJ
Q0FMKCJDb3VsZCBub3QgZ2V0IHBhZ2Ugc2V0dGluZ3MuIik7Ci0gICAgICAgIGdvdG8gZXJyb3Jf
c2V0dGluZ3M7Ci0gICAgfQogCiAgICAgcHJpdi0+dmlld3BvcnRBcmd1bWVudHMud2lkdGggPSBX
ZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogICAgIHByaXYtPnZpZXdwb3J0
QXJndW1lbnRzLmhlaWdodCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87
CkBAIC02NTIsOCArNjM4LDcgQEAgc3RhdGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192
aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSkKICAgICB1cmwgPSBw
cml2LT5wYWdlU2V0dGluZ3MtPnVzZXJTdHlsZVNoZWV0TG9jYXRpb24oKTsKICAgICBwcml2LT5z
ZXR0aW5ncy51c2VyU3R5bGVzaGVldCA9IGVpbmFfc3RyaW5nc2hhcmVfYWRkKHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKIAotICAgIHByaXYtPnNldHRpbmdzLmVuY29kaW5nRGVmYXVsdCA9
IGVpbmFfc3RyaW5nc2hhcmVfYWRkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocHJpdi0+cGFnZVNldHRpbmdzLT5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgpLnV0
ZjgoKS5kYXRhKCkpOworICAgIHByaXYtPnNldHRpbmdzLmVuY29kaW5nRGVmYXVsdCA9IGVpbmFf
c3RyaW5nc2hhcmVfYWRkKHByaXYtPnBhZ2VTZXR0aW5ncy0+ZGVmYXVsdFRleHRFbmNvZGluZ05h
bWUoKS51dGY4KCkuZGF0YSgpKTsKICAgICBwcml2LT5zZXR0aW5ncy5lbmNvZGluZ0N1c3RvbSA9
IDA7CiAKICAgICBzdHJpbmcgPSBwcml2LT5wYWdlU2V0dGluZ3MtPmxvY2FsU3RvcmFnZURhdGFi
YXNlUGF0aCgpOwpAQCAtNzA4LDI3ICs2OTMsOSBAQCBzdGF0aWMgRXdrX1ZpZXdfUHJpdmF0ZV9E
YXRhKiBfZXdrX3ZpZXdfcHJpdl9uZXcoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQog
ICAgIHByaXYtPnNldHRpbmdzLmRvbVRpbWVySW50ZXJ2YWwgPSBwcml2LT5wYWdlU2V0dGluZ3Mt
PmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCk7CiAKICAgICBwcml2LT5tYWluRnJhbWUgPSBf
ZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoc21hcnREYXRhLCBwcml2LCAwKS5nZXQoKTsKLSAgICBp
ZiAoIXByaXYtPm1haW5GcmFtZSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0
ZSBtYWluIGZyYW1lLiIpOwotICAgICAgICBnb3RvIGVycm9yX21haW5fZnJhbWU7Ci0gICAgfQot
CiAgICAgcHJpdi0+aGlzdG9yeSA9IGV3a19oaXN0b3J5X25ldyhzdGF0aWNfY2FzdDxXZWJDb3Jl
OjpCYWNrRm9yd2FyZExpc3RJbXBsKj4ocHJpdi0+cGFnZS0+YmFja0ZvcndhcmRMaXN0KCkpKTsK
LSAgICBpZiAoIXByaXYtPmhpc3RvcnkpIHsKLSAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBj
cmVhdGUgaGlzdG9yeSBpbnN0YW5jZSBmb3Igdmlldy4iKTsKLSAgICAgICAgZ290byBlcnJvcl9o
aXN0b3J5OwotICAgIH0KIAogICAgIHJldHVybiBwcml2OwotCi1lcnJvcl9oaXN0b3J5OgotICAg
IC8vIGRlbGV0ZSBwcml2LT5tYWluX2ZyYW1lOyAvKiBkbyBub3QgZGVsZXRlIHByaXYtPm1haW5f
ZnJhbWUgKi8KLWVycm9yX21haW5fZnJhbWU6Ci1lcnJvcl9zZXR0aW5nczoKLSAgICBkZWxldGUg
cHJpdi0+cGFnZTsKLWVycm9yX3BhZ2U6Ci0gICAgZnJlZShwcml2KTsKLSAgICByZXR1cm4gMDsK
IH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVfRGF0
YSogcHJpdikKQEAgLTc1OCw4ICs3MjUsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJpdl9k
ZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogCiAgICAgZXdrX2hpc3RvcnlfZnJlZShw
cml2LT5oaXN0b3J5KTsKIAotICAgIGRlbGV0ZSBwcml2LT5wYWdlOwotICAgIGZyZWUocHJpdik7
CisgICAgZGVsZXRlIHByaXY7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9hZGQo
RXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0zMzg3LDcgKzMzNTMsNyBAQCBXZWJDb3JlOjpQYWdl
KiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogewog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAgICBy
ZXR1cm4gcHJpdi0+cGFnZTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS5nZXQoKTsKIH0KIAogLyoq
CkBAIC0zNDY2LDcgKzM0MzIsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09iamVj
dCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsCiAgICAgLy8gcG9w
dWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsKICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFd2tfTWVudV9JdGVt
KiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KG1hbGxvYyhzaXplb2YoKml0ZW0p
KSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBuZXcgRXdrX01lbnVfSXRlbTsKICAg
ICAgICAgaWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAgICAgaXRlbS0+
dHlwZSA9IEVXS19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5pdGVt
SXNMYWJlbChpKSkKQEAgLTM1MDAsNyArMzQ2Niw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19wb3B1
cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVJTkFfTElTVF9GUkVFKHByaXYt
PnBvcHVwLm1lbnUuaXRlbXMsIGl0ZW12KSB7CiAgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0g
PSBzdGF0aWNfY2FzdDxFd2tfTWVudV9JdGVtKj4oaXRlbXYpOwogICAgICAgICBlaW5hX3N0cmlu
Z3NoYXJlX2RlbChpdGVtLT50ZXh0KTsKLSAgICAgICAgZnJlZShpdGVtKTsKKyAgICAgICAgZGVs
ZXRlIGl0ZW07CiAgICAgfQogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQtPnBvcHVwRGlkSGlk
ZSgpOwogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQgPSAwOwpAQCAtMzkyNCw3ICszODkwLDcg
QEAgV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcpCiB7
CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwog
ICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwotICAg
IHJldHVybiBwcml2LT5wYWdlOworICAgIHJldHVybiBwcml2LT5wYWdlLmdldCgpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3dp
bmRvd19mZWF0dXJlcy5jcHAKaW5kZXggOTgyYzdmYS4uNjE4MWJkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2
b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93
RmVhdHVyZXMpCiAKICAgICBkZWxldGUgd2luZG93RmVhdHVyZXMtPmNvcmU7CiAgICAgd2luZG93
RmVhdHVyZXMtPmNvcmUgPSAwOwotICAgIGZyZWUod2luZG93RmVhdHVyZXMpOworICAgIGRlbGV0
ZSB3aW5kb3dGZWF0dXJlczsKIH0KIAogdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3JlZihFd2tf
V2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKQEAgLTEwOSwxMSArMTA5LDcgQEAgdm9p
ZCBld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRvd19G
ZWF0dXJlcyogd2luZG93RmVhdHUKICAqLwogRXdrX1dpbmRvd19GZWF0dXJlcyogZXdrX3dpbmRv
d19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKiBj
b3JlKQogewotICAgIEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcyA9IHN0YXRp
Y19jYXN0PEV3a19XaW5kb3dfRmVhdHVyZXMqPihtYWxsb2Moc2l6ZW9mKCp3aW5kb3dfZmVhdHVy
ZXMpKSk7Ci0gICAgaWYgKCF3aW5kb3dfZmVhdHVyZXMpIHsKLSAgICAgICAgQ1JJVElDQUwoIkNv
dWxkIG5vdCBhbGxvY2F0ZSBFd2tfV2luZG93X0ZlYXR1cmVzLiIpOwotICAgICAgICByZXR1cm4g
MDsKLSAgICB9CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzID0gbmV3
IEV3a19XaW5kb3dfRmVhdHVyZXM7CiAKICAgICBpZiAoY29yZSkKICAgICAgICAgd2luZG93X2Zl
YXR1cmVzLT5jb3JlID0gbmV3IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKCpjb3JlKTsK
</data>
<flag name="review"
          id="126333"
          type_id="1"
          status="-"
          setter="rakuco"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129031</attachid>
            <date>2012-02-27 06:47:22 -0800</date>
            <delta_ts>2012-02-28 00:00:02 -0800</delta_ts>
            <desc>Next patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>30669</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCAzZDVmOTE0Li45NzFkZjY4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTItMDItMjcgIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVwbGFjZSBtYWxsb2MvY2FsbG9jL2ZyZWUg
dG8gbmV3L2RlbGV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZWQgYWxtb3N0IGFsbCBtYWxsb2MvY2FsbG9jL2ZyZWUgdG8gbmV3L2RlbGV0
ZSBvcGVyYXRvciBhbmQgd2hlcmUgaXQgd2FzIHBvc3NpYmxlIHNtYXJ0IHBvaW50ZXJzIHdlcmUg
YWxzbworICAgICAgICB1c2VkLiBMZWZ0IGZldyBjIG1lbW9yeSBhbGxvY2F0aW9uIGJ5IGludGVu
dGlvbiB0byBub3QgbWl4IGMgYW5kIGMrKyBtZW1vcnkgbWFuYWdtZW50LiBMZWZ0IG1hbGxvYyBm
b3IgRXdrX1RpbGUKKyAgICAgICAgb2JqZWN0IGR1ZSB0byBjb25zdCBmaWVsZHMgcHJlc2VudCBp
biBFd2tfdGlsZSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6
CisgICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6CisgICAgICAgIChld2tfY29udGV4
dF9tZW51X3VucmVmKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9uZXcpOgorICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6CisgICAgICAgIChld2tf
Y29va2llc19nZXRfYWxsKToKKyAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKKyAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9m
cmVlKToKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorICAgICAgICAqIGV3ay9l
d2tfaGlzdG9yeS5jcHA6CisgICAgICAgIChld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUp
OgorICAgICAgICAoX2V3a19oaXN0b3J5X2l0ZW1fZnJlZSk6CisgICAgICAgIChld2tfaGlzdG9y
eV9uZXcpOgorICAgICAgICAoZXdrX2hpc3RvcnlfZnJlZSk6CisgICAgICAgICogZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9JdGVtKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
cXVlc3RfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlcXVlc3RfZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfZmx1c2gpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9hZGQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZGVs
KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6CisgICAgICAgIChfZXdrX3Rp
bGVfbWF0cml4X3RpbGVfZnJlZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKKyAg
ICAgICAgKGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCk6CisgICAgICAgIChld2tfdGls
ZV9tYXRyaXhfaW52YWxpZGF0ZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZSk6Cisg
ICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6CisgICAgICAgICh0aWxlX2FjY291bnQp
OgorICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX25ldyk6CisgICAgICAgIChfZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2ZyZWUpOgorICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2Ns
ZWFyKToKKyAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCk6CisgICAgICAgIChl
d2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQpOgorICAgICAgICAoZXdrX3RpbGVfdW51c2Vk
X2NhY2hlX3RpbGVfcHV0KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcpOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChl
d2tfdmlld19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX25ldyk6Cisg
ICAgICAgIChld2tfdmlld19wb3B1cF9kZXN0cm95KToKKyAgICAgICAgKEVXS1ByaXZhdGU6OmNv
cmVQYWdlKToKKyAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6CisgICAgICAg
IChld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKToKKyAgICAgICAgKGV3a193aW5kb3dfZmVhdHVy
ZXNfbmV3X2Zyb21fY29yZSk6CisKIDIwMTItMDItMjYgIEhhamltZSBNb3JyaXRhICA8bW9ycml0
YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTW92ZSBDaHJvbWVDbGllbnQ6OnNob3dDb250ZXh0
TWVudSgpIHRvIENvbnRleHRNZW51Q2xpZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2F1dGhfc291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhf
c291cC5jcHAKaW5kZXggODM0ZGFjNy4uZDg1NDI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfYXV0aF9zb3VwLmNwcApAQCAtOTMsMTkgKzkzLDEzIEBAIHN0YXRpYyB2b2lkIHNlc3Npb25f
YXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbWVzc2FnZSwg
U291CiAgICAgaWYgKCFld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjaykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0aGVudGljYXRpb25EYXRhID0gc3RhdGljX2Nhc3Q8RXdrX0F1dGhfRGF0
YSo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0F1dGhfRGF0YSkpKTsKLQotICAgIGlmICghYXV0aGVu
dGljYXRpb25EYXRhKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJjb3VsZCBub3QgYWxsb2NhdGUgRXdr
X0F1dGhfRGF0YSIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgc291cF9zZXNzaW9u
X3BhdXNlX21lc3NhZ2Uoc2Vzc2lvbiwgbWVzc2FnZSk7CiAgICAgLy8gV2UgbmVlZCB0byBtYWtl
IHN1cmUgdGhlIG1lc3NhZ2Ugc3RpY2tzIGFyb3VuZCB3aGVuIHBhdXNpbmcgaXQuCiAgICAgZ19v
YmplY3RfcmVmKG1lc3NhZ2UpOwogICAgIGdfb2JqZWN0X3JlZihzZXNzaW9uKTsKICAgICBnX29i
amVjdF9yZWYoYXV0aCk7CiAKKyAgICBhdXRoZW50aWNhdGlvbkRhdGEgPSBuZXcgRXdrX0F1dGhf
RGF0YTsKICAgICBhdXRoZW50aWNhdGlvbkRhdGEtPm1lc3NhZ2UgPSBtZXNzYWdlOwogICAgIGF1
dGhlbnRpY2F0aW9uRGF0YS0+YXV0aCA9IGF1dGg7CiAgICAgYXV0aGVudGljYXRpb25EYXRhLT5z
ZXNzaW9uID0gc2Vzc2lvbjsKQEAgLTEyMiw3ICsxMTYsNyBAQCBzdGF0aWMgdm9pZCBmcmVlX2F1
dGhfZGF0YShFd2tfQXV0aF9EYXRhKiBhdXRoRGF0YSkKICAgICBnX29iamVjdF91bnJlZihhdXRo
RGF0YS0+bWVzc2FnZSk7CiAgICAgZ19vYmplY3RfdW5yZWYoYXV0aERhdGEtPnNlc3Npb24pOwog
ICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5hdXRoKTsKLSAgICBmcmVlKGF1dGhEYXRhKTsK
KyAgICBkZWxldGUgYXV0aERhdGE7CiB9CiAKIHN0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lv
bkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb250ZXh0bWVudS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAppbmRleCBkMmI5ZjE5Li42ZGZlOTA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRtZW51LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2
b2lkIGV3a19jb250ZXh0X21lbnVfdW5yZWYoRXdrX0NvbnRleHRfTWVudSogbWVudSkKICAgICBF
SU5BX0xJU1RfRlJFRShtZW51LT5pdGVtcywgaXRlbSkKICAgICAgICAgZXdrX2NvbnRleHRfbWVu
dV9pdGVtX2ZyZWUoc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9JdGVtKj4oaXRlbSkpOwog
Ci0gICAgZnJlZShtZW51KTsKKyAgICBkZWxldGUgbWVudTsKIH0KIAogRWluYV9Cb29sIGV3a19j
b250ZXh0X21lbnVfZGVzdHJveShFd2tfQ29udGV4dF9NZW51KiBtZW51KQpAQCAtMTAxLDEwICsx
MDEsNyBAQCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXco
RXdrX0NvbnRleHRfTWVudV9JdGVtX1R5cGUgdHlwZQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEV3a19Db250ZXh0X01lbnVfQWN0aW9uIGFjdGlvbiwg
RXdrX0NvbnRleHRfTWVudSogc3VibWVudSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiB0aXRsZSwgRWluYV9Cb29sIGNoZWNrZWQs
IEVpbmFfQm9vbCBlbmFibGVkKQogewotICAgIEV3a19Db250ZXh0X01lbnVfSXRlbSogaXRlbSA9
IHN0YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnVfSXRlbSo+KG1hbGxvYyhzaXplb2YoKml0ZW0p
KSk7Ci0gICAgaWYgKCFpdGVtKQotICAgICAgICByZXR1cm4gMDsKLQorICAgIEV3a19Db250ZXh0
X01lbnVfSXRlbSogaXRlbSA9IG5ldyBFd2tfQ29udGV4dF9NZW51X0l0ZW07CiAgICAgaXRlbS0+
dHlwZSA9IHR5cGU7CiAgICAgaXRlbS0+YWN0aW9uID0gYWN0aW9uOwogICAgIGl0ZW0tPnRpdGxl
ID0gZWluYV9zdHJpbmdzaGFyZV9hZGQodGl0bGUpOwpAQCAtMTM3LDcgKzEzNCw3IEBAIHZvaWQg
ZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUoRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtKQog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKGl0ZW0pOwogCiAgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoaXRlbS0+dGl0bGUpOwotICAgIGZyZWUoaXRlbSk7CisgICAgZGVsZXRlIGl0ZW07
CiB9CiAKIEV3a19Db250ZXh0X01lbnVfSXRlbV9UeXBlIGV3a19jb250ZXh0X21lbnVfaXRlbV90
eXBlX2dldChjb25zdCBFd2tfQ29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCkBAIC0yMjYsMTEgKzIy
Myw3IEBAIEV3a19Db250ZXh0X01lbnUqIGV3a19jb250ZXh0X21lbnVfbmV3KEV2YXNfT2JqZWN0
KiB2aWV3LCBXZWJDb3JlOjpDb250ZXh0TWVudUNvCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHZpZXcsIDApOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChj
b250cm9sbGVyLCAwKTsKIAotICAgIG1lbnUgPSBzdGF0aWNfY2FzdDxFd2tfQ29udGV4dF9NZW51
Kj4obWFsbG9jKHNpemVvZigqbWVudSkpKTsKLSAgICBpZiAoIW1lbnUpIHsKLSAgICAgICAgQ1JJ
VElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBjb250ZXh0IG1lbnUgbWVtb3J5LiIpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9CisgICAgbWVudSA9IG5ldyBFd2tfQ29udGV4dF9NZW51OwogCiAg
ICAgbWVudS0+X19yZWYgPSAxOwogICAgIG1lbnUtPnZpZXcgPSB2aWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfY29va2llcy5jcHAKaW5kZXggNzk4MGMwMS4uNmVmMjAzNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2Nvb2tpZXMuY3BwCkBAIC03Niw3ICs3Niw3IEBAIEVpbmFfTGlzdCogZXdr
X2Nvb2tpZXNfZ2V0X2FsbCh2b2lkKQogICAgIGxpc3QgPSBzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nv
b2tpZXMoY29va2llSmFyKTsKICAgICBmb3IgKHAgPSBsaXN0OyBwOyBwID0gcC0+bmV4dCkgewog
ICAgICAgICBTb3VwQ29va2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4ocC0+
ZGF0YSk7Ci0gICAgICAgIEV3a19Db29raWUqIGV3a0Nvb2tpZSA9IHN0YXRpY19jYXN0PEV3a19D
b29raWUqPihtYWxsb2Moc2l6ZW9mKCpld2tDb29raWUpKSk7CisgICAgICAgIEV3a19Db29raWUq
IGV3a0Nvb2tpZSA9IG5ldyBFd2tfQ29va2llOwogICAgICAgICBld2tDb29raWUtPm5hbWUgPSBz
dHJkdXAoY29va2llLT5uYW1lKTsKICAgICAgICAgZXdrQ29va2llLT52YWx1ZSA9IHN0cmR1cChj
b29raWUtPnZhbHVlKTsKICAgICAgICAgZXdrQ29va2llLT5kb21haW4gPSBzdHJkdXAoY29va2ll
LT5kb21haW4pOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgZXdrX2Nvb2tpZXNfY29va2llX2Zy
ZWUoRXdrX0Nvb2tpZSogY29va2llKQogICAgIGZyZWUoY29va2llLT52YWx1ZSk7CiAgICAgZnJl
ZShjb29raWUtPmRvbWFpbik7CiAgICAgZnJlZShjb29raWUtPnBhdGgpOwotICAgIGZyZWUoY29v
a2llKTsKKyAgICBkZWxldGUgY29va2llOwogfQogCiB2b2lkIGV3a19jb29raWVzX3BvbGljeV9z
ZXQoRXdrX0Nvb2tpZV9Qb2xpY3kgY29va2llUG9saWN5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAppbmRleCAyOWZlNGYwLi5jMjI5ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcApAQCAtNjU5LDcgKzY1OSw3IEBAIHZvaWQgZXdrX2ZyYW1lX2hpdF90ZXN0X2ZyZWUo
RXdrX0hpdF9UZXN0KiBoaXRUZXN0KQogICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGhpdFRlc3Qt
PmxpbmsudGl0bGUpOwogICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGhpdFRlc3QtPmltYWdlX3Vy
aSk7CiAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaGl0VGVzdC0+bWVkaWFfdXJpKTsKLSAgICBm
cmVlKGhpdFRlc3QpOworICAgIGRlbGV0ZSBoaXRUZXN0OwogfQogCiBFd2tfSGl0X1Rlc3QqIGV3
a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBpbnQgeCwg
aW50IHkpCkBAIC02ODAsMTIgKzY4MCw3IEBAIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hpdF90
ZXN0X25ldyhjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKICAgICBp
ZiAoIXJlc3VsdC5pbm5lck5vZGUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBFd2tfSGl0
X1Rlc3QqIGhpdFRlc3QgPSBzdGF0aWNfY2FzdDxFd2tfSGl0X1Rlc3QqPihjYWxsb2MoMSwgc2l6
ZW9mKEV3a19IaXRfVGVzdCkpKTsKLSAgICBpZiAoIWhpdFRlc3QpIHsKLSAgICAgICAgQ1JJVElD
QUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIGhpdCB0ZXN0LiIpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KKyAgICBFd2tfSGl0X1Rlc3QqIGhpdFRlc3QgPSBuZXcgRXdrX0hp
dF9UZXN0OwogICAgIGhpdFRlc3QtPnggPSByZXN1bHQucG9pbnQoKS54KCk7CiAgICAgaGl0VGVz
dC0+eSA9IHJlc3VsdC5wb2ludCgpLnkoKTsKICNpZiAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19o
aXN0b3J5LmNwcAppbmRleCBmYWVmMGM4Li5jMGEwYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfaGlzdG9yeS5jcHAKQEAgLTI0MSwxMyArMjQxLDEwIEBAIEV3a19IaXN0b3J5X0l0ZW0qIGV3
a19oaXN0b3J5X2l0ZW1fbmV3X2Zyb21fY29yZShXZWJDb3JlOjpIaXN0b3J5SXRlbSogY29yZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaXRlbSA9IChFd2tfSGlzdG9yeV9JdGVt
KiljYWxsb2MoMSwgc2l6ZW9mKEV3a19IaXN0b3J5X0l0ZW0pKTsKLSAgICBpZiAoIWl0ZW0pIHsK
LSAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBpdGVtIG1lbW9yeS4iKTsKLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCiAgICAgY29yZS0+cmVmKCk7CisKKyAgICBpdGVtID0g
bmV3IEV3a19IaXN0b3J5X0l0ZW07CisgICAgbWVtc2V0KGl0ZW0sIDAsIHNpemVvZigqaXRlbSkp
OwogICAgIGl0ZW0tPmNvcmUgPSBjb3JlOwogCiAgICAgcmV0dXJuIGl0ZW07CkBAIC0yNjUsNyAr
MjYyLDcgQEAgRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXcoY29uc3QgY2hh
ciogdXJpLCBjb25zdCBjaGFyKiB0aXRsZSkKIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX2hpc3Rv
cnlfaXRlbV9mcmVlKEV3a19IaXN0b3J5X0l0ZW0qIGl0ZW0sIFdlYkNvcmU6Okhpc3RvcnlJdGVt
KiBjb3JlKQogewogICAgIGNvcmUtPmRlcmVmKCk7Ci0gICAgZnJlZShpdGVtKTsKKyAgICBkZWxl
dGUgaXRlbTsKIH0KIAogdm9pZCBld2tfaGlzdG9yeV9pdGVtX2ZyZWUoRXdrX0hpc3RvcnlfSXRl
bSogaXRlbSkKQEAgLTM5OSwxNCArMzk2LDkgQEAgRXdrX0hpc3RvcnkqIGV3a19oaXN0b3J5X25l
dyhXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3RJbXBsKiBjb3JlKQogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOX1ZBTChjb3JlLCAwKTsKICAgICBEQkcoImNvcmU9JXAiLCBjb3JlKTsKIAot
ICAgIGhpc3RvcnkgPSBzdGF0aWNfY2FzdDxFd2tfSGlzdG9yeSo+KG1hbGxvYyhzaXplb2YoRXdr
X0hpc3RvcnkpKSk7Ci0gICAgaWYgKCFoaXN0b3J5KSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3Vs
ZCBub3QgYWxsb2NhdGUgaGlzdG9yeSBtZW1vcnkuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLQotICAgIGNvcmUtPnJlZigpOworICAgIGhpc3RvcnkgPSBuZXcgRXdrX0hpc3Rvcnk7CiAg
ICAgaGlzdG9yeS0+Y29yZSA9IGNvcmU7CisgICAgY29yZS0+cmVmKCk7CiAKICAgICByZXR1cm4g
aGlzdG9yeTsKIH0KQEAgLTQyMyw3ICs0MTUsNyBAQCB2b2lkIGV3a19oaXN0b3J5X2ZyZWUoRXdr
X0hpc3RvcnkqIGhpc3RvcnkpCiB7CiAgICAgREJHKCJoaXN0b3J5PSVwIiwgaGlzdG9yeSk7CiAg
ICAgaGlzdG9yeS0+Y29yZS0+ZGVyZWYoKTsKLSAgICBmcmVlKGhpc3RvcnkpOworICAgIGRlbGV0
ZSBoaXN0b3J5OwogfQogCiBuYW1lc3BhY2UgRVdLUHJpdmF0ZSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcAppbmRleCBlMGRkZTRkLi5k
NGFkNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJld2tfdGlsZWRfcHJpdmF0
ZS5oIgogI2luY2x1ZGUgPEVjb3JlLmg+CiAjaW5jbHVkZSA8RWluYS5oPgorI2luY2x1ZGUgPE93
blB0ci5oPgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1
ZGUgPG1hdGguaD4KQEAgLTI0OSwxMSArMjUwLDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9i
YWNraW5nX3N0b3JlX3RpbGVfZGlzc29jaWF0ZV9hbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmUK
IAogc3RhdGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9y
ZW5kZXJfcmVxdWVzdF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgdW5z
aWduZWQgbG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewotICAg
IEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdDsKLQot
ICAgIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVu
ZGVyX1JlcXVlc3QqPihtYWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSkpOwotICAgIGlmICghcmVxdWVz
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1By
ZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdCA9IG5ldyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9Q
cmVfUmVuZGVyX1JlcXVlc3Q7CiAKICAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMg
PSBlaW5hX2lubGlzdF9hcHBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAocHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzLCBFSU5BX0lOTElTVF9HRVQo
cmVxdWVzdCkpOwpAQCAtMjY5LDcgKzI2Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3Rp
bGVkX2JhY2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2RlbChFd2tfVGlsZWRfQmFjCiB7
CiAgICAgcHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzID0gZWluYV9pbmxpc3RfcmVtb3Zl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXYtPnJlbmRl
ci5wcmVSZW5kZXJSZXF1ZXN0cywgRUlOQV9JTkxJU1RfR0VUKHJlcXVlc3QpKTsKLSAgICBmcmVl
KHJlcXVlc3QpOworICAgIGRlbGV0ZSByZXF1ZXN0OwogfQogCiBzdGF0aWMgaW5saW5lIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdChjb25zdCBFd2tfVGlsZWRfQmFja2luZ19T
dG9yZV9EYXRhKiBwcml2KQpAQCAtMjg2LDcgKzI4Myw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGls
ZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2goRXdrX1RpbGVkX0JhY2tp
bmdfCiAgICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCog
cmVxdWVzdDsKICAgICAgICAgcmVxdWVzdCA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlcXVlc3RfZmlyc3QocHJpdik7CiAgICAgICAgICpwcmVSZW5kZXJMaXN0ID0gZWlu
YV9pbmxpc3RfcmVtb3ZlKCpwcmVSZW5kZXJMaXN0LCAqcHJlUmVuZGVyTGlzdCk7Ci0gICAgICAg
IGZyZWUocmVxdWVzdCk7CisgICAgICAgIGRlbGV0ZSByZXF1ZXN0OwogICAgIH0KIH0KIApAQCAt
MzAxLDcgKzI5OCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVf
cmVuZGVyX3JlcXVlc3RfY2xlYXIoRXdrX1RpbGVkX0JhY2tpbmdfCiAgICAgICAgIG5leHQgPSBp
dGVyLT5uZXh0OwogICAgICAgICAqcHJlUmVuZGVyTGlzdCA9IGVpbmFfaW5saXN0X3JlbW92ZSgq
cHJlUmVuZGVyTGlzdCwgaXRlcik7CiAgICAgICAgIGl0ZXIgPSBuZXh0OwotICAgICAgICBmcmVl
KHJlcXVlc3QpOworICAgICAgICBkZWxldGUgcmVxdWVzdDsKICAgICB9CiB9CiAKQEAgLTQ3MSwz
MSArNDY4LDI1IEBAIGVuZDoKIAogc3RhdGljIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0q
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZChFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9EYXRhKiBwcml2LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCiB7
Ci0gICAgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKICAgICBFdmFzX0Nvb3Jk
IHgsIHksIHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKIAogICAgIERCRygiZXdrQmFja2luZ1N0b3Jl
PSVwIiwgcHJpdi0+c2VsZik7CiAKLSAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVkX0Jh
Y2tpbmdfU3RvcmVfSXRlbSo+KG1hbGxvYyhzaXplb2YoKml0ZW0pKSk7Ci0gICAgaWYgKCFpdGVt
KQotICAgICAgICByZXR1cm4gMDsKLQogICAgIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53
aWR0aDsKICAgICB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICB4ID0g
cHJpdi0+dmlldy5vZmZzZXQuYmFzZS54ICsgcHJpdi0+dmlldy54ICsgdGlsZVdpZHRoICogY29s
dW1uOwogICAgIHkgPSBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgKyBwcml2LT52aWV3LnkgKyB0
aWxlSGVpZ2h0ICogcm93OwogCisgICAgT3duUHRyPEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0
ZW0+IGl0ZW0gPSBhZG9wdFB0cihuZXcgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk7CiAg
ICAgaXRlbS0+dGlsZSA9IDA7Ci0KICAgICBpdGVtLT5zbW9vdGhTY2FsZSA9IHByaXYtPnZpZXcu
dGlsZS56b29tV2Vha1Ntb290aFNjYWxlOwotICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9p
dGVtX21vdmUoaXRlbSwgeCwgeSk7Ci0gICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1f
cmVzaXplKGl0ZW0sIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7Ci0gICAgaWYgKCFfZXdrX3RpbGVk
X2JhY2tpbmdfc3RvcmVfaXRlbV9maWxsKHByaXYsIGl0ZW0sIGNvbHVtbiwgcm93KSkgewotICAg
ICAgICBmcmVlKGl0ZW0pOworCisgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92
ZShpdGVtLmdldCgpLCB4LCB5KTsKKyAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9y
ZXNpemUoaXRlbS5nZXQoKSwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICBpZiAoIV9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2ZpbGwocHJpdiwgaXRlbS5nZXQoKSwgY29sdW1uLCBy
b3cpKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICByZXR1cm4gaXRlbTsKKyAgICBy
ZXR1cm4gaXRlbS5sZWFrUHRyKCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2lu
Z19zdG9yZV9pdGVtX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFd2tf
VGlsZWRfQmFja2luZ19TdG9yZV9JdGVtKiBpdGVtKQpAQCAtNTA1LDcgKzQ5Niw3IEBAIHN0YXRp
YyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2RlbChFd2tfVGlsZWRfQmFja2lu
Z19TdG9yZV9EYXRhKiBwcml2CiAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxl
X2Rpc3NvY2lhdGUocHJpdiwgaXRlbSwgbGFzdF91c2VkKTsKICAgICB9CiAKLSAgICBmcmVlKGl0
ZW0pOworICAgIGRlbGV0ZSBpdGVtOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9zbW9vdGhfc2NhbGVfc2V0KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0
ZW0qIGl0ZW0sIEVpbmFfQm9vbCBzbW9vdGhTY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9l
d2tfdGlsZWRfbWF0cml4LmNwcAppbmRleCA1ZDk5MWI0Li41NWEwZjVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5j
bHVkZSAiZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfcHJp
dmF0ZS5oIgogI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxPd25QdHIuaD4KKyNpbmNsdWRl
IDxQYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxpbnR0eXBlcy5o
PgogI2luY2x1ZGUgPG1hdGguaD4KQEAgLTE3MCw3ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCBfZXdr
X3RpbGVfbWF0cml4X3RpbGVfZnJlZSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSkKICAgICBp
ZiAoIWVudHJ5LT5jb3VudCAmJiBlbnRyeS0+bWF0cml4ICE9IHRpbGVNYXRyaXgtPm1hdHJpeCkg
ewogICAgICAgICBlaW5hX21hdHJpeHNwYXJzZV9mcmVlKGVudHJ5LT5tYXRyaXgpOwogICAgICAg
ICB0aWxlTWF0cml4LT5tYXRyaWNlcyA9IGVpbmFfaW5saXN0X3JlbW92ZSh0aWxlTWF0cml4LT5t
YXRyaWNlcywgRUlOQV9JTkxJU1RfR0VUKGVudHJ5KSk7Ci0gICAgICAgIGZyZWUoZW50cnkpOwor
ICAgICAgICBkZWxldGUgZW50cnk7CiAgICAgfQogCiAgICAgZXdrX3RpbGVfZnJlZSh0aWxlKTsK
QEAgLTE5NywxOCArMTk5LDE2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZV9tYXRyaXhfdGlsZV9m
cmVlKHZvaWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlKQogICovCiBFd2tfVGlsZV9NYXRyaXgqIGV3
a190aWxlX21hdHJpeF9uZXcoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUs
IHVuc2lnbmVkIGxvbmcgY29sdW1ucywgdW5zaWduZWQgbG9uZyByb3dzLCBmbG9hdCB6b29tTGV2
ZWwsIEV2YXNfQ29sb3JzcGFjZSBjb2xvclNwYWNlLCB2b2lkICgqcmVuZGVyQ2FsbGJhY2spKHZv
aWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlKSwg
Y29uc3Qgdm9pZCogcmVuZGVyRGF0YSkKIHsKLSAgICBFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRy
aXggPSBzdGF0aWNfY2FzdDxFd2tfVGlsZV9NYXRyaXgqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19U
aWxlX01hdHJpeCkpKTsKLSAgICBpZiAoIXRpbGVNYXRyaXgpCi0gICAgICAgIHJldHVybiAwOwor
ICAgIE93blB0cjxFd2tfVGlsZV9NYXRyaXg+IHRpbGVNYXRyaXggPSBhZG9wdFB0cihuZXcgRXdr
X1RpbGVfTWF0cml4KTsKIAotICAgIHRpbGVNYXRyaXgtPm1hdHJpeCA9IGVpbmFfbWF0cml4c3Bh
cnNlX25ldyhyb3dzLCBjb2x1bW5zLCBfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSwgdGlsZU1h
dHJpeCk7CisgICAgdGlsZU1hdHJpeC0+bWF0cml4ID0gZWluYV9tYXRyaXhzcGFyc2VfbmV3KHJv
d3MsIGNvbHVtbnMsIF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlLCB0aWxlTWF0cml4LmdldCgp
KTsKICAgICBpZiAoIXRpbGVNYXRyaXgtPm1hdHJpeCkgewogICAgICAgICBFUlIoImNvdWxkIG5v
dCBjcmVhdGUgc3BhcnNlIG1hdHJpeC4iKTsKLSAgICAgICAgZnJlZSh0aWxlTWF0cml4KTsKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxf
c2V0KHRpbGVNYXRyaXgsIHpvb21MZXZlbCk7CisgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSAw
OworICAgIGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCh0aWxlTWF0cml4LmdldCgpLCB6
b29tTGV2ZWwpOwogCiAgICAgaWYgKHRpbGVVbnVzZWRDYWNoZSkKICAgICAgICAgdGlsZU1hdHJp
eC0+dGlsZVVudXNlZENhY2hlID0gZXdrX3RpbGVfdW51c2VkX2NhY2hlX3JlZih0aWxlVW51c2Vk
Q2FjaGUpOwpAQCAtMjE3LDcgKzIxNyw2IEBAIEV3a19UaWxlX01hdHJpeCogZXdrX3RpbGVfbWF0
cml4X25ldyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwgdW5zCiAgICAg
ICAgIGlmICghdGlsZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlKSB7CiAgICAgICAgICAgICBFUlIo
Im5vIGNhY2hlIG9mIHVudXNlZCB0aWxlISIpOwogICAgICAgICAgICAgZWluYV9tYXRyaXhzcGFy
c2VfZnJlZSh0aWxlTWF0cml4LT5tYXRyaXgpOwotICAgICAgICAgICAgZnJlZSh0aWxlTWF0cml4
KTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI3LDggKzIy
NiwxNiBAQCBFd2tfVGlsZV9NYXRyaXgqIGV3a190aWxlX21hdHJpeF9uZXcoRXdrX1RpbGVfVW51
c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIHVucwogICAgIHRpbGVNYXRyaXgtPnJlbmRlci5k
YXRhID0gKHZvaWQqKXJlbmRlckRhdGE7CiAgICAgdGlsZU1hdHJpeC0+dGlsZS53aWR0aCA9IGRl
ZmF1bHRUaWxlV2lkdGg7CiAgICAgdGlsZU1hdHJpeC0+dGlsZS5oZWlnaHQgPSBkZWZhdWx0VGls
ZUhlaWd0aDsKKyAgICB0aWxlTWF0cml4LT5mcm96ZW4gPSAwOworICAgIHRpbGVNYXRyaXgtPnVw
ZGF0ZXMgPSAwOwogCi0gICAgcmV0dXJuIHRpbGVNYXRyaXg7CisjaWZkZWYgREVCVUdfTUVNX0xF
QUtTCisgICAgdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuYWxsb2NhdGVkID0gMDsKKyAgICB0aWxl
TWF0cml4LT5zdGF0cy50aWxlcy5mcmVlZCA9IDA7CisgICAgdGlsZU1hdHJpeC0+c3RhdHMuYnl0
ZXMuYWxsb2NhdGVkID0gMDsKKyAgICB0aWxlTWF0cml4LT5zdGF0cy5ieXRlcy5mcmVlZCA9IDA7
CisjZW5kaWYKKyAgICByZXR1cm4gdGlsZU1hdHJpeC5sZWFrUHRyKCk7CiB9CiAKIHZvaWQgZXdr
X3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwg
ZmxvYXQgem9vbSkKQEAgLTI0OSwxMiArMjU2LDE0IEBAIHZvaWQgZXdrX3RpbGVfbWF0cml4X3pv
b21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgZmxvYXQgem9vbSkKICAg
ICB9CiAKICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RXdr
X1RpbGVfTWF0cml4X0VudHJ5Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVGlsZV9NYXRyaXhfRW50
cnkpKSk7Ci0gICAgICAgIGVudHJ5LT56b29tID0gem9vbTsKKyAgICAgICAgZW50cnkgPSBuZXcg
RXdrX1RpbGVfTWF0cml4X0VudHJ5OworICAgICAgICBtZW1zZXQoZW50cnksIDAsIHNpemVvZihF
d2tfVGlsZV9NYXRyaXhfRW50cnkpKTsKICAgICAgICAgZW50cnktPm1hdHJpeCA9IGVpbmFfbWF0
cml4c3BhcnNlX25ldyhyb3dzLCBjb2x1bW5zLCBfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSwg
dGlsZU1hdHJpeCk7CisgICAgICAgIGVudHJ5LT5jb3VudCA9IDA7CisgICAgICAgIGVudHJ5LT56
b29tID0gem9vbTsKICAgICAgICAgaWYgKCFlbnRyeS0+bWF0cml4KSB7CiAgICAgICAgICAgICBF
UlIoImNvdWxkIG5vdCBjcmVhdGUgc3BhcnNlIG1hdHJpeC4iKTsKLSAgICAgICAgICAgIGZyZWUo
ZW50cnkpOworICAgICAgICAgICAgZGVsZXRlIGVudHJ5OwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gZWluYV9pbmxpc3RfcHJl
cGVuZCh0aWxlTWF0cml4LT5tYXRyaWNlcywgRUlOQV9JTkxJU1RfR0VUKGVudHJ5KSk7CkBAIC0y
NzcsNyArMjg2LDcgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tfVGlsZV9N
YXRyaXgqIHRpbGVNYXRyaXgpCiAgICAgICAgIGlmIChpdGVyYXRvci0+bWF0cml4ICE9IHRpbGVN
YXRyaXgtPm1hdHJpeCkgewogICAgICAgICAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShpdGVy
YXRvci0+bWF0cml4KTsKICAgICAgICAgICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gZWluYV9p
bmxpc3RfcmVtb3ZlKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBtYXRyaXhMaXN0KTsKLSAgICAgICAg
ICAgIGZyZWUoaXRlcmF0b3IpOworICAgICAgICAgICAgZGVsZXRlIGl0ZXJhdG9yOwogICAgICAg
ICB9CiAKICAgICAgICAgbWF0cml4TGlzdCA9IG5leHQ7CkBAIC0zMDMsOCArMzEyLDggQEAgdm9p
ZCBld2tfdGlsZV9tYXRyaXhfZnJlZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiAgICAg
ZW50cnkgPSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBF
d2tfVGlsZV9NYXRyaXhfRW50cnkpOwogICAgIGVpbmFfbWF0cml4c3BhcnNlX2ZyZWUoZW50cnkt
Pm1hdHJpeCk7CiAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9yZW1vdmUo
dGlsZU1hdHJpeC0+bWF0cmljZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9Jbmxpc3QqPihlbnRy
eSkpOwotICAgIGZyZWUoZW50cnkpOwogICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gMDsKKyAg
ICBkZWxldGUgZW50cnk7CiAKICAgICBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGhhdyh0aWxlTWF0
cml4LT50aWxlVW51c2VkQ2FjaGUpOwogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV91bnJlZih0
aWxlTWF0cml4LT50aWxlVW51c2VkQ2FjaGUpOwpAQCAtMzM1LDcgKzM0NCw3IEBAIHZvaWQgZXdr
X3RpbGVfbWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogICAgICAgICAg
ICAgdGlsZU1hdHJpeC0+c3RhdHMuYnl0ZXMuYWxsb2NhdGVkLCB0aWxlTWF0cml4LT5zdGF0cy5i
eXRlcy5mcmVlZCk7CiAjZW5kaWYKIAotICAgIGZyZWUodGlsZU1hdHJpeCk7CisgICAgZGVsZXRl
IHRpbGVNYXRyaXg7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a190aWxlZF9tb2RlbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21v
ZGVsLmNwcAppbmRleCA4N2ZhODNjLi44OWM2M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX3RpbGVkX21vZGVsLmNwcApAQCAtNDQwLDkgKzQ0MCw4IEBAIEV3a19UaWxlX1VudXNlZF9D
YWNoZSogZXdrX3RpbGVfdW51c2VkX2NhY2hlX25ldyhzaXplX3QgbWF4KQogewogICAgIEV3a19U
aWxlX1VudXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlOwogCi0gICAgdGlsZVVudXNlZENhY2hl
ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVfVW51c2VkX0NhY2hlKj4oY2FsbG9jKDEsIHNpemVvZihF
d2tfVGlsZV9VbnVzZWRfQ2FjaGUpKSk7Ci0gICAgaWYgKCF0aWxlVW51c2VkQ2FjaGUpCi0gICAg
ICAgIHJldHVybiAwOworICAgIHRpbGVVbnVzZWRDYWNoZSA9IG5ldyBFd2tfVGlsZV9VbnVzZWRf
Q2FjaGU7CisgICAgbWVtc2V0KHRpbGVVbnVzZWRDYWNoZSwgMCwgc2l6ZW9mKEV3a19UaWxlX1Vu
dXNlZF9DYWNoZSkpOwogCiAgICAgREJHKCJ0aWxlVW51c2VkQ2FjaGU9JXAiLCB0aWxlVW51c2Vk
Q2FjaGUpOwogICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5Lm1heCA9IG1heDsKQEAgLTQ5Miw3
ICs0OTEsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWUoRXdrX1Rp
bGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUpCiAgICAgICAgIHRpbGVVbnVzZWRDYWNo
ZS0+bWVtb3J5Lm1heCwgdGlsZVVudXNlZENhY2hlLT5tZW1vcnkudXNlZCk7CiAKICAgICBld2tf
dGlsZV91bnVzZWRfY2FjaGVfY2xlYXIodGlsZVVudXNlZENhY2hlKTsKLSAgICBmcmVlKHRpbGVV
bnVzZWRDYWNoZSk7CisgICAgZGVsZXRlIHRpbGVVbnVzZWRDYWNoZTsKIH0KIAogLyoqCkBAIC01
MTIsNyArNTExLDcgQEAgdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfY2xlYXIoRXdrX1RpbGVf
VW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUpCiAgICAgRUlOQV9MSVNUX0ZSRUUodGlsZVVu
dXNlZENhY2hlLT5lbnRyaWVzLmxpc3QsIGl0ZW0pIHsKICAgICAgICAgRXdrX1RpbGVfVW51c2Vk
X0NhY2hlX0VudHJ5KiBpdHIgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50
cnkqPihpdGVtKTsKICAgICAgICAgaXRyLT50aWxlX2ZyZWUuY2FsbGJhY2soaXRyLT50aWxlX2Zy
ZWUuZGF0YSwgaXRyLT50aWxlKTsKLSAgICAgICAgZnJlZShpdHIpOworICAgICAgICBkZWxldGUg
aXRyOwogICAgIH0KIAogICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5LnVzZWQgPSAwOwpAQCAt
NjA1LDcgKzYwNCw3IEBAIHNpemVfdCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZmx1c2goRXdrX1Rp
bGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIHNpemVfCiAgICAgICAgIGRvbmUgKz0g
ZXdrX3RpbGVfbWVtb3J5X3NpemVfZ2V0KGl0ci0+dGlsZSk7CiAgICAgICAgIGl0ci0+dGlsZV9m
cmVlLmNhbGxiYWNrKGl0ci0+dGlsZV9mcmVlLmRhdGEsIGl0ci0+dGlsZSk7CiAgICAgICAgIHRp
bGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWluYV9saXN0X3JlbW92ZV9saXN0KHRpbGVV
bnVzZWRDYWNoZS0+ZW50cmllcy5saXN0LCBsaXN0KTsKLSAgICAgICAgZnJlZShpdHIpOworICAg
ICAgICBkZWxldGUgaXRyOwogICAgICAgICBjb3VudCsrOwogICAgIH0KIApAQCAtNjcwLDI4ICs2
NjksMjMgQEAgdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGhhdyhFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUqIHRpbGVVbnVzZWRDYWNoZSkKICAqLwogRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9j
YWNoZV90aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwgRXdr
X1RpbGUqIHRpbGUpCiB7Ci0gICAgRWluYV9MaXN0KiBmb3VuZEVudHJ5LCAqaXRlcmF0ZUVudHJ5
OwotCisgICAgRWluYV9MaXN0KiBpdGVyYXRlRW50cnk7CiAgICAgdm9pZCogaXRlbTsKLSAgICBm
b3VuZEVudHJ5ID0gMDsKKwogICAgIEVJTkFfTElTVF9GT1JFQUNIKHRpbGVVbnVzZWRDYWNoZS0+
ZW50cmllcy5saXN0LCBpdGVyYXRlRW50cnksIGl0ZW0pIHsKICAgICAgICAgRXdrX1RpbGVfVW51
c2VkX0NhY2hlX0VudHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PEV3a19UaWxlX1VudXNlZF9DYWNo
ZV9FbnRyeSo+KGl0ZW0pOwogICAgICAgICBpZiAoZW50cnktPnRpbGUgPT0gdGlsZSkgewotICAg
ICAgICAgICAgZm91bmRFbnRyeSA9IGl0ZXJhdGVFbnRyeTsKLSAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmNvdW50LS07CisgICAgICAgICAg
ICB0aWxlVW51c2VkQ2FjaGUtPm1lbW9yeS51c2VkIC09IGV3a190aWxlX21lbW9yeV9zaXplX2dl
dCh0aWxlKTsKKyAgICAgICAgICAgIHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWlu
YV9saXN0X3JlbW92ZV9saXN0KHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0LCBpdGVyYXRl
RW50cnkpOworICAgICAgICAgICAgZGVsZXRlIGVudHJ5OworCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIWZvdW5kRW50cnkpIHsKLSAgICAgICAg
RVJSKCJ0aWxlICVwIG5vdCBmb3VuZCBpbiBjYWNoZSAlcCIsIHRpbGUsIHRpbGVVbnVzZWRDYWNo
ZSk7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB0aWxlVW51c2VkQ2FjaGUt
PmVudHJpZXMuY291bnQtLTsKLSAgICB0aWxlVW51c2VkQ2FjaGUtPm1lbW9yeS51c2VkIC09IGV3
a190aWxlX21lbW9yeV9zaXplX2dldCh0aWxlKTsKLSAgICB0aWxlVW51c2VkQ2FjaGUtPmVudHJp
ZXMubGlzdCA9IGVpbmFfbGlzdF9yZW1vdmVfbGlzdCh0aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMu
bGlzdCwgZm91bmRFbnRyeSk7Ci0gICAgZnJlZShpdGVtKTsKIAotICAgIHJldHVybiB0cnVlOwor
ICAgIEVSUigidGlsZSAlcCBub3QgZm91bmQgaW4gY2FjaGUgJXAiLCB0aWxlLCB0aWxlVW51c2Vk
Q2FjaGUpOworICAgIHJldHVybiBmYWxzZTsKIH0KIAogLyoqCkBAIC03MjUsOSArNzE5LDcgQEAg
RWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRf
Q2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHVudXNlZENhY2hlRW50cnkgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZV9VbnVzZWRfQ2FjaGVf
RW50cnkqPihtYWxsb2Moc2l6ZW9mKEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeSkpKTsKLSAg
ICBpZiAoIXVudXNlZENhY2hlRW50cnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnVz
ZWRDYWNoZUVudHJ5ID0gbmV3IEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeTsKIAogICAgIHRp
bGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWluYV9saXN0X2FwcGVuZCh0aWxlVW51c2Vk
Q2FjaGUtPmVudHJpZXMubGlzdCwgdW51c2VkQ2FjaGVFbnRyeSk7CiAgICAgaWYgKGVpbmFfZXJy
b3JfZ2V0KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRf
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmgKaW5k
ZXggOTQ4OTZjNC4uOGExNWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a190aWxlZF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9w
cml2YXRlLmgKQEAgLTI5LDM0ICsyOSw0IEBAIGV4dGVybiBpbnQgX2V3a190aWxlZF9sb2dfZG9t
OwogI2RlZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX3RpbGVkX2xvZ19kb20s
IF9fVkFfQVJHU19fKQogI2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX3Rp
bGVkX2xvZ19kb20sIF9fVkFfQVJHU19fKQogI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01f
REJHKF9ld2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE9PTShvcCwgc2l6
ZSkgQ1JJVElDQUwoImNvdWxkIG5vdCAlcyAlemQgYnl0ZXM6ICVzIiwgb3AsIHNpemUsIHN0cmVy
cm9yKGVycm5vKSkKLSNkZWZpbmUgTUFMTE9DX09SX09PTV9SRVQocHRyLCBzaXplLCAuLi4pICAg
ICAgIFwKLSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
LSAgICAgICAgcHRyID0gbWFsbG9jKHNpemUpOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgaWYgKCFwdHIgJiYgKHNpemUpID4gMCkgeyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAg
IE9PTSgibWFsbG9jIiwgKHNpemUpKTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVy
biBfX1ZBX0FSR1NfXzsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIENB
TExPQ19PUl9PT01fUkVUKHB0ciwgc2l6ZSwgLi4uKSAgICAgICBcCi0gICAgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHB0ciA9IGNhbGxvYygx
LCBzaXplKTsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICghcHRyICYmIChzaXplKSA+
IDApIHsgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBPT00oImNhbGxvYyIsIChzaXplKSk7
ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCi0gICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBSRUFMTE9DX09SX09PTV9SRVQocHRyLCBz
aXplLCAuLi4pICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICB2b2lkKiBfX3RtcF9wdHI7ICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICBfX3RtcF9wdHIgPSByZWFsbG9jKHB0ciwgc2l6ZSk7ICAgICAgICAgXAot
ICAgICAgICBpZiAoIV9fdG1wX3B0ciAmJiAoc2l6ZSkgPiAwKSB7ICAgICAgICAgXAotICAgICAg
ICAgICAgT09NKCJyZWFsbG9jIiwgKHNpemUpKTsgICAgICAgICAgICAgXAotICAgICAgICAgICAg
cmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwdHIgPSBfX3RtcF9wdHI7
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApCi0KICNlbmRpZiAvLyBl
d2tfdGlsZWRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA4YTk2
NzQwLi4xN2E2ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTEzMyw3ICsx
MzMsNyBAQCBzdGF0aWMgY29uc3QgRXZhc19TbWFydF9DYl9EZXNjcmlwdGlvbiBfZXdrX3ZpZXdf
Y2FsbGJhY2tfbmFtZXNbXSA9IHsKICAqIEBpbnRlcm5hbAogICovCiBzdHJ1Y3QgX0V3a19WaWV3
X1ByaXZhdGVfRGF0YSB7Ci0gICAgV2ViQ29yZTo6UGFnZSogcGFnZTsKKyAgICBPd25QdHI8V2Vi
Q29yZTo6UGFnZT4gcGFnZTsKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogcGFnZVNldHRpbmdzOwog
ICAgIFdlYkNvcmU6OkZyYW1lKiBtYWluRnJhbWU7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1
bWVudHMgdmlld3BvcnRBcmd1bWVudHM7CkBAIC01ODksNDcgKzU4OSwzNiBAQCBzdGF0aWMgV1RG
OjpQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdr
X1ZpZXdfU21hcnRfRAogICAgIH0KICAgICBmcmFtZUxvYWRlckNsaWVudC0+c2V0Q3VzdG9tVXNl
ckFnZW50KFN0cmluZzo6ZnJvbVVURjgocHJpdi0+c2V0dGluZ3MudXNlckFnZW50KSk7CiAKLSAg
ICByZXR1cm4gV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZShwcml2LT5wYWdlLCBvd25lciwgZnJhbWVM
b2FkZXJDbGllbnQpOworICAgIHJldHVybiBXZWJDb3JlOjpGcmFtZTo6Y3JlYXRlKHByaXYtPnBh
Z2UuZ2V0KCksIG93bmVyLCBmcmFtZUxvYWRlckNsaWVudCk7CiB9CiAKIHN0YXRpYyBFdmFzX1Nt
YXJ0X0NsYXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogc3Rh
dGljIEV3a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1Nt
YXJ0X0RhdGEqIHNtYXJ0RGF0YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYg
PQotICAgICAgICBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihjYWxsb2MoMSwg
c2l6ZW9mKEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0Rh
dGEqIHByaXYgPSBuZXcgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworICAgIG1lbXNldChwcml2LCAw
LCBzaXplb2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CiAgICAgQXRvbWljU3RyaW5nIHN0cmlu
ZzsKICAgICBXZWJDb3JlOjpLVVJMIHVybDsKIAotICAgIGlmICghcHJpdikgewotICAgICAgICBD
UklUSUNBTCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwotICAg
ICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50cyBw
YWdlQ2xpZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ29yZTo6
Q2hyb21lQ2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9y
Q2xpZW50ID0gbmV3IFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpOwog
ICAgIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViQ29yZTo6RHJhZ0NsaWVudEVmbDsK
ICAgICBwYWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6SW5zcGVjdG9y
Q2xpZW50RWZsOwotICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShwYWdlQ2xpZW50
cyk7Ci0gICAgaWYgKCFwcml2LT5wYWdlKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3Qg
Y3JlYXRlIFdlYktpdCBQYWdlIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfcGFnZTsKLSAgICB9CisK
KyAgICBwcml2LT5wYWdlID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVudHMp
KTsKKwogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgV2ViQ29yZTo6cHJvdmlk
ZURldmljZU1vdGlvblRvKHByaXYtPnBhZ2UsIG5ldyBXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGll
bnRFZmwpOwotICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKHByaXYtPnBh
Z2UsIG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbCk7CisgICAgV2ViQ29y
ZTo6cHJvdmlkZURldmljZU1vdGlvblRvKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpE
ZXZpY2VNb3Rpb25DbGllbnRFZmwpOworICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRh
dGlvblRvKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNs
aWVudEVmbCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgV2ViQ29yZTo6
cHJvdmlkZVZpYnJhdGlvblRvKHByaXYtPnBhZ2UsIG5ldyBXZWJDb3JlOjpWaWJyYXRpb25DbGll
bnRFZmwoc21hcnREYXRhLT5zZWxmKSk7CisgICAgV2ViQ29yZTo6cHJvdmlkZVZpYnJhdGlvblRv
KHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmwoc21hcnRE
YXRhLT5zZWxmKSk7CiAjZW5kaWYKIAogICAgIHByaXYtPnBhZ2VTZXR0aW5ncyA9IHByaXYtPnBh
Z2UtPnNldHRpbmdzKCk7Ci0gICAgaWYgKCFwcml2LT5wYWdlU2V0dGluZ3MpIHsKLSAgICAgICAg
Q1JJVElDQUwoIkNvdWxkIG5vdCBnZXQgcGFnZSBzZXR0aW5ncy4iKTsKLSAgICAgICAgZ290byBl
cnJvcl9zZXR0aW5nczsKLSAgICB9CiAKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy53aWR0
aCA9IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAgICAgcHJpdi0+dmll
d3BvcnRBcmd1bWVudHMuaGVpZ2h0ID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVl
QXV0bzsKQEAgLTcxNCwyOSArNzAzLDEyIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEq
IF9ld2tfdmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAg
cHJpdi0+c2V0dGluZ3MuZG9tVGltZXJJbnRlcnZhbCA9IHByaXYtPnBhZ2VTZXR0aW5ncy0+ZGVm
YXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKTsKIAogICAgIHByaXYtPm1haW5GcmFtZSA9IF9ld2tf
dmlld19jb3JlX2ZyYW1lX25ldyhzbWFydERhdGEsIHByaXYsIDApLmdldCgpOwotICAgIGlmICgh
cHJpdi0+bWFpbkZyYW1lKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIG1h
aW4gZnJhbWUuIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfbWFpbl9mcmFtZTsKLSAgICB9CiAKICAg
ICBwcml2LT5oaXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkpOwotICAg
IGlmICghcHJpdi0+aGlzdG9yeSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0
ZSBoaXN0b3J5IGluc3RhbmNlIGZvciB2aWV3LiIpOwotICAgICAgICBnb3RvIGVycm9yX2hpc3Rv
cnk7Ci0gICAgfQogCiAgICAgcHJpdi0+c291cFNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhh
bmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKIAogICAgIHJldHVybiBwcml2OwotCi1lcnJvcl9oaXN0
b3J5OgotICAgIC8vIGRlbGV0ZSBwcml2LT5tYWluX2ZyYW1lOyAvKiBkbyBub3QgZGVsZXRlIHBy
aXYtPm1haW5fZnJhbWUgKi8KLWVycm9yX21haW5fZnJhbWU6Ci1lcnJvcl9zZXR0aW5nczoKLSAg
ICBkZWxldGUgcHJpdi0+cGFnZTsKLWVycm9yX3BhZ2U6Ci0gICAgZnJlZShwcml2KTsKLSAgICBy
ZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1By
aXZhdGVfRGF0YSogcHJpdikKQEAgLTc2Niw4ICs3MzgsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfcHJpdl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogCiAgICAgZXdrX2hpc3Rv
cnlfZnJlZShwcml2LT5oaXN0b3J5KTsKIAotICAgIGRlbGV0ZSBwcml2LT5wYWdlOwotICAgIGZy
ZWUocHJpdik7CisgICAgZGVsZXRlIHByaXY7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19z
bWFydF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0zMzk1LDcgKzMzNjYsNyBAQCBXZWJD
b3JlOjpQYWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tW
aWV3KQogewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCAwKTsKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAw
KTsKLSAgICByZXR1cm4gcHJpdi0+cGFnZTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS5nZXQoKTsK
IH0KIAogLyoqCkBAIC0zNDc0LDcgKzM0NDUsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhF
dmFzX09iamVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsCiAg
ICAgLy8gcG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNp
emUoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFd2tf
TWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KG1hbGxvYyhzaXpl
b2YoKml0ZW0pKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBuZXcgRXdrX01lbnVf
SXRlbTsKICAgICAgICAgaWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAg
ICAgaXRlbS0+dHlwZSA9IEVXS19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xp
ZW50LT5pdGVtSXNMYWJlbChpKSkKQEAgLTM1MDgsNyArMzQ3OSw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19wb3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVJTkFfTElTVF9G
UkVFKHByaXYtPnBvcHVwLm1lbnUuaXRlbXMsIGl0ZW12KSB7CiAgICAgICAgIEV3a19NZW51X0l0
ZW0qIGl0ZW0gPSBzdGF0aWNfY2FzdDxFd2tfTWVudV9JdGVtKj4oaXRlbXYpOwogICAgICAgICBl
aW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50ZXh0KTsKLSAgICAgICAgZnJlZShpdGVtKTsKKyAg
ICAgICAgZGVsZXRlIGl0ZW07CiAgICAgfQogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQtPnBv
cHVwRGlkSGlkZSgpOwogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQgPSAwOwpAQCAtMzk1MSw3
ICszOTIyLDcgQEAgV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3
a1ZpZXcpCiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIDApOwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYs
IDApOwotICAgIHJldHVybiBwcml2LT5wYWdlOworICAgIHJldHVybiBwcml2LT5wYWdlLmdldCgp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAKaW5kZXggOTgyYzdmYS4uNjE4MWJkYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCB2b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJl
cyogd2luZG93RmVhdHVyZXMpCiAKICAgICBkZWxldGUgd2luZG93RmVhdHVyZXMtPmNvcmU7CiAg
ICAgd2luZG93RmVhdHVyZXMtPmNvcmUgPSAwOwotICAgIGZyZWUod2luZG93RmVhdHVyZXMpOwor
ICAgIGRlbGV0ZSB3aW5kb3dGZWF0dXJlczsKIH0KIAogdm9pZCBld2tfd2luZG93X2ZlYXR1cmVz
X3JlZihFd2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKQEAgLTEwOSwxMSArMTA5
LDcgQEAgdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdr
X1dpbmRvd19GZWF0dXJlcyogd2luZG93RmVhdHUKICAqLwogRXdrX1dpbmRvd19GZWF0dXJlcyog
ZXdrX3dpbmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0Zl
YXR1cmVzKiBjb3JlKQogewotICAgIEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJl
cyA9IHN0YXRpY19jYXN0PEV3a19XaW5kb3dfRmVhdHVyZXMqPihtYWxsb2Moc2l6ZW9mKCp3aW5k
b3dfZmVhdHVyZXMpKSk7Ci0gICAgaWYgKCF3aW5kb3dfZmVhdHVyZXMpIHsKLSAgICAgICAgQ1JJ
VElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfV2luZG93X0ZlYXR1cmVzLiIpOwotICAgICAg
ICByZXR1cm4gMDsKLSAgICB9CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1
cmVzID0gbmV3IEV3a19XaW5kb3dfRmVhdHVyZXM7CiAKICAgICBpZiAoY29yZSkKICAgICAgICAg
d2luZG93X2ZlYXR1cmVzLT5jb3JlID0gbmV3IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKCpjb3Jl
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129201</attachid>
            <date>2012-02-28 00:00:02 -0800</date>
            <delta_ts>2012-02-29 00:58:44 -0800</delta_ts>
            <desc>Fixed Raphael&apos;s comment</desc>
            <filename>memory2.patch</filename>
            <type>text/plain</type>
            <size>30720</size>
            <attacher name="Tomasz Morawski">t.morawski</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZwppbmRleCBjNTEzNTZkLi4yNzA1ZDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTItMDItMjggIFRvbWFzeiBNb3Jhd3NraSAgPHQubW9yYXdza2lA
c2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0VGTF0gUmVwbGFjZSBtYWxsb2MvY2FsbG9jL2ZyZWUg
dG8gbmV3L2RlbGV0ZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVwbGFjZWQgYWxtb3N0IGFsbCBtYWxsb2MvY2FsbG9jL2ZyZWUgdG8gbmV3L2RlbGV0
ZSBvcGVyYXRvciBhbmQgd2hlcmUgaXQgd2FzIHBvc3NpYmxlIHNtYXJ0IHBvaW50ZXJzIHdlcmUg
YWxzbworICAgICAgICB1c2VkLiBMZWZ0IGZldyBjIG1lbW9yeSBhbGxvY2F0aW9uIGJ5IGludGVu
dGlvbiB0byBub3QgbWl4IGMgYW5kIGMrKyBtZW1vcnkgbWFuYWdtZW50LiBMZWZ0IG1hbGxvYyBm
b3IgRXdrX1RpbGUKKyAgICAgICAgb2JqZWN0IGR1ZSB0byBjb25zdCBmaWVsZHMgcHJlc2VudCBp
biBFd2tfdGlsZSBzdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6
CisgICAgICAgICogZXdrL2V3a19jb250ZXh0bWVudS5jcHA6CisgICAgICAgIChld2tfY29udGV4
dF9tZW51X3VucmVmKToKKyAgICAgICAgKGV3a19jb250ZXh0X21lbnVfaXRlbV9uZXcpOgorICAg
ICAgICAoZXdrX2NvbnRleHRfbWVudV9pdGVtX2ZyZWUpOgorICAgICAgICAoZXdrX2NvbnRleHRf
bWVudV9uZXcpOgorICAgICAgICAqIGV3ay9ld2tfY29va2llcy5jcHA6CisgICAgICAgIChld2tf
Y29va2llc19nZXRfYWxsKToKKyAgICAgICAgKGV3a19jb29raWVzX2Nvb2tpZV9mcmVlKToKKyAg
ICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9m
cmVlKToKKyAgICAgICAgKGV3a19mcmFtZV9oaXRfdGVzdF9uZXcpOgorICAgICAgICAqIGV3ay9l
d2tfaGlzdG9yeS5jcHA6CisgICAgICAgIChld2tfaGlzdG9yeV9pdGVtX25ld19mcm9tX2NvcmUp
OgorICAgICAgICAoX2V3a19oaXN0b3J5X2l0ZW1fZnJlZSk6CisgICAgICAgIChld2tfaGlzdG9y
eV9uZXcpOgorICAgICAgICAoZXdrX2hpc3RvcnlfZnJlZSk6CisgICAgICAgICogZXdrL2V3a190
aWxlZF9iYWNraW5nX3N0b3JlLmNwcDoKKyAgICAgICAgKF9Fd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9JdGVtKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVyX3Jl
cXVlc3RfYWRkKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlcXVlc3RfZGVsKToKKyAgICAgICAgKF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVu
ZGVyX3JlcXVlc3RfZmx1c2gpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3By
ZV9yZW5kZXJfcmVxdWVzdF9jbGVhcik6CisgICAgICAgIChfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9hZGQpOgorICAgICAgICAoX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fZGVs
KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX21hdHJpeC5jcHA6CisgICAgICAgIChfZXdrX3Rp
bGVfbWF0cml4X3RpbGVfZnJlZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfbmV3KToKKyAg
ICAgICAgKGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCk6CisgICAgICAgIChld2tfdGls
ZV9tYXRyaXhfaW52YWxpZGF0ZSk6CisgICAgICAgIChld2tfdGlsZV9tYXRyaXhfZnJlZSk6Cisg
ICAgICAgICogZXdrL2V3a190aWxlZF9tb2RlbC5jcHA6CisgICAgICAgICh0aWxlX2FjY291bnQp
OgorICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX25ldyk6CisgICAgICAgIChfZXdrX3Rp
bGVfdW51c2VkX2NhY2hlX2ZyZWUpOgorICAgICAgICAoZXdrX3RpbGVfdW51c2VkX2NhY2hlX2Ns
ZWFyKToKKyAgICAgICAgKGV3a190aWxlX3VudXNlZF9jYWNoZV9mbHVzaCk6CisgICAgICAgIChl
d2tfdGlsZV91bnVzZWRfY2FjaGVfdGlsZV9nZXQpOgorICAgICAgICAoZXdrX3RpbGVfdW51c2Vk
X2NhY2hlX3RpbGVfcHV0KToKKyAgICAgICAgKiBld2svZXdrX3RpbGVkX3ByaXZhdGUuaDoKKyAg
ICAgICAgKiBld2svZXdrX3ZpZXcuY3BwOgorICAgICAgICAoX0V3a19WaWV3X1ByaXZhdGVfRGF0
YSk6CisgICAgICAgIChfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcpOgorICAgICAgICAoX2V3a192
aWV3X3ByaXZfbmV3KToKKyAgICAgICAgKF9ld2tfdmlld19wcml2X2RlbCk6CisgICAgICAgIChl
d2tfdmlld19jb3JlX3BhZ2VfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3BvcHVwX25ldyk6Cisg
ICAgICAgIChld2tfdmlld19wb3B1cF9kZXN0cm95KToKKyAgICAgICAgKEVXS1ByaXZhdGU6OmNv
cmVQYWdlKToKKyAgICAgICAgKiBld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHA6CisgICAgICAg
IChld2tfd2luZG93X2ZlYXR1cmVzX3VucmVmKToKKyAgICAgICAgKGV3a193aW5kb3dfZmVhdHVy
ZXNfbmV3X2Zyb21fY29yZSk6CisKIDIwMTItMDItMjcgIEp1bmdKaWsgTGVlICA8anVuZ2ppay5s
ZWVAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF0gUGFpcmluZyB1cCBiZXR3ZWVuIGV2YXNf
b2JqZWN0X2ltYWdlX2RhdGFfZ2V0IGFuZCBldmFzX29iamVjdF9pbWFnZV9kYXRhX3NldC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcAppbmRleCA4MzRkYWM3Li5kODU0Mjdk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3NvdXAuY3BwCkBAIC05MywxOSArOTMs
MTMgQEAgc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291cFNlc3Npb24qIHNlc3Np
b24sIFNvdXBNZXNzYWdlKiBtZXNzYWdlLCBTb3UKICAgICBpZiAoIWV3a19hdXRoX3Nob3dfZGlh
bG9nX2NhbGxiYWNrKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRoZW50aWNhdGlvbkRhdGEg
PSBzdGF0aWNfY2FzdDxFd2tfQXV0aF9EYXRhKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfQXV0aF9E
YXRhKSkpOwotCi0gICAgaWYgKCFhdXRoZW50aWNhdGlvbkRhdGEpIHsKLSAgICAgICAgQ1JJVElD
QUwoImNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfQXV0aF9EYXRhIik7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KICAgICBzb3VwX3Nlc3Npb25fcGF1c2VfbWVzc2FnZShzZXNzaW9uLCBtZXNzYWdl
KTsKICAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJvdW5k
IHdoZW4gcGF1c2luZyBpdC4KICAgICBnX29iamVjdF9yZWYobWVzc2FnZSk7CiAgICAgZ19vYmpl
Y3RfcmVmKHNlc3Npb24pOwogICAgIGdfb2JqZWN0X3JlZihhdXRoKTsKIAorICAgIGF1dGhlbnRp
Y2F0aW9uRGF0YSA9IG5ldyBFd2tfQXV0aF9EYXRhOwogICAgIGF1dGhlbnRpY2F0aW9uRGF0YS0+
bWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgYXV0aGVudGljYXRpb25EYXRhLT5hdXRoID0gYXV0aDsK
ICAgICBhdXRoZW50aWNhdGlvbkRhdGEtPnNlc3Npb24gPSBzZXNzaW9uOwpAQCAtMTIyLDcgKzEx
Niw3IEBAIHN0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19BdXRoX0RhdGEqIGF1dGhEYXRh
KQogICAgIGdfb2JqZWN0X3VucmVmKGF1dGhEYXRhLT5tZXNzYWdlKTsKICAgICBnX29iamVjdF91
bnJlZihhdXRoRGF0YS0+c2Vzc2lvbik7CiAgICAgZ19vYmplY3RfdW5yZWYoYXV0aERhdGEtPmF1
dGgpOwotICAgIGZyZWUoYXV0aERhdGEpOworICAgIGRlbGV0ZSBhdXRoRGF0YTsKIH0KIAogc3Rh
dGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24q
IHNlc3Npb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2NvbnRleHRt
ZW51LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1lbnUuY3BwCmluZGV4
IGQyYjlmMTkuLjZkZmU5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
Y29udGV4dG1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29udGV4dG1l
bnUuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgZXdrX2NvbnRleHRfbWVudV91bnJlZihFd2tf
Q29udGV4dF9NZW51KiBtZW51KQogICAgIEVJTkFfTElTVF9GUkVFKG1lbnUtPml0ZW1zLCBpdGVt
KQogICAgICAgICBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShzdGF0aWNfY2FzdDxFd2tfQ29u
dGV4dF9NZW51X0l0ZW0qPihpdGVtKSk7CiAKLSAgICBmcmVlKG1lbnUpOworICAgIGRlbGV0ZSBt
ZW51OwogfQogCiBFaW5hX0Jvb2wgZXdrX2NvbnRleHRfbWVudV9kZXN0cm95KEV3a19Db250ZXh0
X01lbnUqIG1lbnUpCkBAIC0xMDEsMTAgKzEwMSw3IEBAIEV3a19Db250ZXh0X01lbnVfSXRlbSog
ZXdrX2NvbnRleHRfbWVudV9pdGVtX25ldyhFd2tfQ29udGV4dF9NZW51X0l0ZW1fVHlwZSB0eXBl
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXdrX0Nv
bnRleHRfTWVudV9BY3Rpb24gYWN0aW9uLCBFd2tfQ29udGV4dF9NZW51KiBzdWJtZW51LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIq
IHRpdGxlLCBFaW5hX0Jvb2wgY2hlY2tlZCwgRWluYV9Cb29sIGVuYWJsZWQpCiB7Ci0gICAgRXdr
X0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX0NvbnRleHRfTWVudV9J
dGVtKj4obWFsbG9jKHNpemVvZigqaXRlbSkpKTsKLSAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJl
dHVybiAwOwotCisgICAgRXdrX0NvbnRleHRfTWVudV9JdGVtKiBpdGVtID0gbmV3IEV3a19Db250
ZXh0X01lbnVfSXRlbTsKICAgICBpdGVtLT50eXBlID0gdHlwZTsKICAgICBpdGVtLT5hY3Rpb24g
PSBhY3Rpb247CiAgICAgaXRlbS0+dGl0bGUgPSBlaW5hX3N0cmluZ3NoYXJlX2FkZCh0aXRsZSk7
CkBAIC0xMzcsNyArMTM0LDcgQEAgdm9pZCBld2tfY29udGV4dF9tZW51X2l0ZW1fZnJlZShFd2tf
Q29udGV4dF9NZW51X0l0ZW0qIGl0ZW0pCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4o
aXRlbSk7CiAKICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbChpdGVtLT50aXRsZSk7Ci0gICAgZnJl
ZShpdGVtKTsKKyAgICBkZWxldGUgaXRlbTsKIH0KIAogRXdrX0NvbnRleHRfTWVudV9JdGVtX1R5
cGUgZXdrX2NvbnRleHRfbWVudV9pdGVtX3R5cGVfZ2V0KGNvbnN0IEV3a19Db250ZXh0X01lbnVf
SXRlbSogaXRlbSkKQEAgLTIyNiwxMSArMjIzLDcgQEAgRXdrX0NvbnRleHRfTWVudSogZXdrX2Nv
bnRleHRfbWVudV9uZXcoRXZhc19PYmplY3QqIHZpZXcsIFdlYkNvcmU6OkNvbnRleHRNZW51Q28K
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwodmlldywgMCk7CiAgICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvbnRyb2xsZXIsIDApOwogCi0gICAgbWVudSA9IHN0
YXRpY19jYXN0PEV3a19Db250ZXh0X01lbnUqPihtYWxsb2Moc2l6ZW9mKCptZW51KSkpOwotICAg
IGlmICghbWVudSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIGNvbnRl
eHQgbWVudSBtZW1vcnkuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBtZW51ID0g
bmV3IEV3a19Db250ZXh0X01lbnU7CiAKICAgICBtZW51LT5fX3JlZiA9IDE7CiAgICAgbWVudS0+
dmlldyA9IHZpZXc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tp
ZXMuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19jb29raWVzLmNwcAppbmRleCA3OTgw
YzAxLi42ZWYyMDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Nvb2tp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfY29va2llcy5jcHAKQEAgLTc2
LDcgKzc2LDcgQEAgRWluYV9MaXN0KiBld2tfY29va2llc19nZXRfYWxsKHZvaWQpCiAgICAgbGlz
dCA9IHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpOwogICAgIGZvciAocCA9
IGxpc3Q7IHA7IHAgPSBwLT5uZXh0KSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0
YXRpY19jYXN0PFNvdXBDb29raWUqPihwLT5kYXRhKTsKLSAgICAgICAgRXdrX0Nvb2tpZSogZXdr
Q29va2llID0gc3RhdGljX2Nhc3Q8RXdrX0Nvb2tpZSo+KG1hbGxvYyhzaXplb2YoKmV3a0Nvb2tp
ZSkpKTsKKyAgICAgICAgRXdrX0Nvb2tpZSogZXdrQ29va2llID0gbmV3IEV3a19Db29raWU7CiAg
ICAgICAgIGV3a0Nvb2tpZS0+bmFtZSA9IHN0cmR1cChjb29raWUtPm5hbWUpOwogICAgICAgICBl
d2tDb29raWUtPnZhbHVlID0gc3RyZHVwKGNvb2tpZS0+dmFsdWUpOwogICAgICAgICBld2tDb29r
aWUtPmRvbWFpbiA9IHN0cmR1cChjb29raWUtPmRvbWFpbik7CkBAIC0xMjEsNyArMTIxLDcgQEAg
dm9pZCBld2tfY29va2llc19jb29raWVfZnJlZShFd2tfQ29va2llKiBjb29raWUpCiAgICAgZnJl
ZShjb29raWUtPnZhbHVlKTsKICAgICBmcmVlKGNvb2tpZS0+ZG9tYWluKTsKICAgICBmcmVlKGNv
b2tpZS0+cGF0aCk7Ci0gICAgZnJlZShjb29raWUpOworICAgIGRlbGV0ZSBjb29raWU7CiB9CiAK
IHZvaWQgZXdrX2Nvb2tpZXNfcG9saWN5X3NldChFd2tfQ29va2llX1BvbGljeSBjb29raWVQb2xp
Y3kpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCmluZGV4IDI5ZmU0ZjAuLmMyMjlmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCkBAIC02NTksNyArNjU5LDcgQEAgdm9p
ZCBld2tfZnJhbWVfaGl0X3Rlc3RfZnJlZShFd2tfSGl0X1Rlc3QqIGhpdFRlc3QpCiAgICAgZWlu
YV9zdHJpbmdzaGFyZV9kZWwoaGl0VGVzdC0+bGluay50aXRsZSk7CiAgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoaGl0VGVzdC0+aW1hZ2VfdXJpKTsKICAgICBlaW5hX3N0cmluZ3NoYXJlX2RlbCho
aXRUZXN0LT5tZWRpYV91cmkpOwotICAgIGZyZWUoaGl0VGVzdCk7CisgICAgZGVsZXRlIGhpdFRl
c3Q7CiB9CiAKIEV3a19IaXRfVGVzdCogZXdrX2ZyYW1lX2hpdF90ZXN0X25ldyhjb25zdCBFdmFz
X09iamVjdCogZXdrRnJhbWUsIGludCB4LCBpbnQgeSkKQEAgLTY4MCwxMiArNjgwLDcgQEAgRXdr
X0hpdF9UZXN0KiBld2tfZnJhbWVfaGl0X3Rlc3RfbmV3KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tG
cmFtZSwgaW50IHgsIGludCB5KQogICAgIGlmICghcmVzdWx0LmlubmVyTm9kZSgpKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIEV3a19IaXRfVGVzdCogaGl0VGVzdCA9IHN0YXRpY19jYXN0PEV3
a19IaXRfVGVzdCo+KGNhbGxvYygxLCBzaXplb2YoRXdrX0hpdF9UZXN0KSkpOwotICAgIGlmICgh
aGl0VGVzdCkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBm
b3IgaGl0IHRlc3QuIik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQorICAgIEV3a19IaXRf
VGVzdCogaGl0VGVzdCA9IG5ldyBFd2tfSGl0X1Rlc3Q7CiAgICAgaGl0VGVzdC0+eCA9IHJlc3Vs
dC5wb2ludCgpLngoKTsKICAgICBoaXRUZXN0LT55ID0gcmVzdWx0LnBvaW50KCkueSgpOwogI2lm
IDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2hpc3RvcnkuY3BwCmluZGV4IGZhZWYwYzguLmMwYTBi
MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaGlzdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19oaXN0b3J5LmNwcApAQCAtMjQxLDEzICsyNDEs
MTAgQEAgRXdrX0hpc3RvcnlfSXRlbSogZXdrX2hpc3RvcnlfaXRlbV9uZXdfZnJvbV9jb3JlKFdl
YkNvcmU6Okhpc3RvcnlJdGVtKiBjb3JlKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBpdGVtID0gKEV3a19IaXN0b3J5X0l0ZW0qKWNhbGxvYygxLCBzaXplb2YoRXdrX0hpc3Rvcnlf
SXRlbSkpOwotICAgIGlmICghaXRlbSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGFs
bG9jYXRlIGl0ZW0gbWVtb3J5LiIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KICAgICBj
b3JlLT5yZWYoKTsKKworICAgIGl0ZW0gPSBuZXcgRXdrX0hpc3RvcnlfSXRlbTsKKyAgICBtZW1z
ZXQoaXRlbSwgMCwgc2l6ZW9mKCppdGVtKSk7CiAgICAgaXRlbS0+Y29yZSA9IGNvcmU7CiAKICAg
ICByZXR1cm4gaXRlbTsKQEAgLTI2NSw3ICsyNjIsNyBAQCBFd2tfSGlzdG9yeV9JdGVtKiBld2tf
aGlzdG9yeV9pdGVtX25ldyhjb25zdCBjaGFyKiB1cmksIGNvbnN0IGNoYXIqIHRpdGxlKQogc3Rh
dGljIGlubGluZSB2b2lkIF9ld2tfaGlzdG9yeV9pdGVtX2ZyZWUoRXdrX0hpc3RvcnlfSXRlbSog
aXRlbSwgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGNvcmUpCiB7CiAgICAgY29yZS0+ZGVyZWYoKTsK
LSAgICBmcmVlKGl0ZW0pOworICAgIGRlbGV0ZSBpdGVtOwogfQogCiB2b2lkIGV3a19oaXN0b3J5
X2l0ZW1fZnJlZShFd2tfSGlzdG9yeV9JdGVtKiBpdGVtKQpAQCAtMzk5LDE0ICszOTYsOSBAQCBF
d2tfSGlzdG9yeSogZXdrX2hpc3RvcnlfbmV3KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdEltcGwq
IGNvcmUpCiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGNvcmUsIDApOwogICAg
IERCRygiY29yZT0lcCIsIGNvcmUpOwogCi0gICAgaGlzdG9yeSA9IHN0YXRpY19jYXN0PEV3a19I
aXN0b3J5Kj4obWFsbG9jKHNpemVvZihFd2tfSGlzdG9yeSkpKTsKLSAgICBpZiAoIWhpc3Rvcnkp
IHsKLSAgICAgICAgQ1JJVElDQUwoIkNvdWxkIG5vdCBhbGxvY2F0ZSBoaXN0b3J5IG1lbW9yeS4i
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgY29yZS0+cmVmKCk7CisgICAgaGlz
dG9yeSA9IG5ldyBFd2tfSGlzdG9yeTsKICAgICBoaXN0b3J5LT5jb3JlID0gY29yZTsKKyAgICBj
b3JlLT5yZWYoKTsKIAogICAgIHJldHVybiBoaXN0b3J5OwogfQpAQCAtNDIzLDcgKzQxNSw3IEBA
IHZvaWQgZXdrX2hpc3RvcnlfZnJlZShFd2tfSGlzdG9yeSogaGlzdG9yeSkKIHsKICAgICBEQkco
Imhpc3Rvcnk9JXAiLCBoaXN0b3J5KTsKICAgICBoaXN0b3J5LT5jb3JlLT5kZXJlZigpOwotICAg
IGZyZWUoaGlzdG9yeSk7CisgICAgZGVsZXRlIGhpc3Rvcnk7CiB9CiAKIG5hbWVzcGFjZSBFV0tQ
cml2YXRlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX2JhY2tpbmdf
c3RvcmUuY3BwCmluZGV4IGUwZGRlNGQuLjNhNDZjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfdGlsZWRfYmFja2luZ19zdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a190aWxlZF9iYWNraW5nX3N0b3JlLmNwcApAQCAtMjYsNiArMjYsOCBAQAog
I2luY2x1ZGUgImV3a190aWxlZF9wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmUuaD4KICNpbmNs
dWRlIDxFaW5hLmg+CisjaW5jbHVkZSA8T3duUHRyLmg+CisjaW5jbHVkZSA8UGFzc093blB0ci5o
PgogI2luY2x1ZGUgPGFsZ29yaXRobT4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPG1h
dGguaD4KQEAgLTI0OSwxMSArMjUxLDcgQEAgc3RhdGljIHZvaWQgX2V3a190aWxlZF9iYWNraW5n
X3N0b3JlX3RpbGVfZGlzc29jaWF0ZV9hbGwoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmUKIAogc3Rh
dGljIGlubGluZSBFaW5hX0Jvb2wgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX3ByZV9yZW5kZXJf
cmVxdWVzdF9hZGQoRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfRGF0YSogcHJpdiwgdW5zaWduZWQg
bG9uZyBjb2x1bW4sIHVuc2lnbmVkIGxvbmcgcm93LCBmbG9hdCB6b29tKQogewotICAgIEV3a19U
aWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVzdDsKLQotICAgIHJl
cXVlc3QgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVuZGVyX1Jl
cXVlc3QqPihtYWxsb2Moc2l6ZW9mKCpyZXF1ZXN0KSkpOwotICAgIGlmICghcmVxdWVzdCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5k
ZXJfUmVxdWVzdCogcmVxdWVzdCA9IG5ldyBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9QcmVfUmVu
ZGVyX1JlcXVlc3Q7CiAKICAgICBwcml2LT5yZW5kZXIucHJlUmVuZGVyUmVxdWVzdHMgPSBlaW5h
X2lubGlzdF9hcHBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAocHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzLCBFSU5BX0lOTElTVF9HRVQocmVxdWVz
dCkpOwpAQCAtMjY5LDcgKzI2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3RpbGVkX2Jh
Y2tpbmdfc3RvcmVfcHJlX3JlbmRlcl9yZXF1ZXN0X2RlbChFd2tfVGlsZWRfQmFjCiB7CiAgICAg
cHJpdi0+cmVuZGVyLnByZVJlbmRlclJlcXVlc3RzID0gZWluYV9pbmxpc3RfcmVtb3ZlCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByaXYtPnJlbmRlci5wcmVS
ZW5kZXJSZXF1ZXN0cywgRUlOQV9JTkxJU1RfR0VUKHJlcXVlc3QpKTsKLSAgICBmcmVlKHJlcXVl
c3QpOworICAgIGRlbGV0ZSByZXF1ZXN0OwogfQogCiBzdGF0aWMgaW5saW5lIEV3a19UaWxlZF9C
YWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogX2V3a190aWxlZF9iYWNraW5nX3N0b3Jl
X3ByZV9yZW5kZXJfcmVxdWVzdF9maXJzdChjb25zdCBFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9E
YXRhKiBwcml2KQpAQCAtMjg2LDcgKzI4NCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFj
a2luZ19zdG9yZV9wcmVfcmVuZGVyX3JlcXVlc3RfZmx1c2goRXdrX1RpbGVkX0JhY2tpbmdfCiAg
ICAgICAgIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX1ByZV9SZW5kZXJfUmVxdWVzdCogcmVxdWVz
dDsKICAgICAgICAgcmVxdWVzdCA9IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlcXVlc3RfZmlyc3QocHJpdik7CiAgICAgICAgICpwcmVSZW5kZXJMaXN0ID0gZWluYV9pbmxp
c3RfcmVtb3ZlKCpwcmVSZW5kZXJMaXN0LCAqcHJlUmVuZGVyTGlzdCk7Ci0gICAgICAgIGZyZWUo
cmVxdWVzdCk7CisgICAgICAgIGRlbGV0ZSByZXF1ZXN0OwogICAgIH0KIH0KIApAQCAtMzAxLDcg
KzI5OSw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9wcmVfcmVuZGVy
X3JlcXVlc3RfY2xlYXIoRXdrX1RpbGVkX0JhY2tpbmdfCiAgICAgICAgIG5leHQgPSBpdGVyLT5u
ZXh0OwogICAgICAgICAqcHJlUmVuZGVyTGlzdCA9IGVpbmFfaW5saXN0X3JlbW92ZSgqcHJlUmVu
ZGVyTGlzdCwgaXRlcik7CiAgICAgICAgIGl0ZXIgPSBuZXh0OwotICAgICAgICBmcmVlKHJlcXVl
c3QpOworICAgICAgICBkZWxldGUgcmVxdWVzdDsKICAgICB9CiB9CiAKQEAgLTQ3MSwzMSArNDY5
LDI1IEBAIGVuZDoKIAogc3RhdGljIEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIF9ld2tf
dGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2FkZChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRh
KiBwcml2LCB1bnNpZ25lZCBsb25nIGNvbHVtbiwgdW5zaWduZWQgbG9uZyByb3cpCiB7Ci0gICAg
RXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSogaXRlbTsKICAgICBFdmFzX0Nvb3JkIHgsIHks
IHRpbGVXaWR0aCwgdGlsZUhlaWdodDsKIAogICAgIERCRygiZXdrQmFja2luZ1N0b3JlPSVwIiwg
cHJpdi0+c2VsZik7CiAKLSAgICBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVkX0JhY2tpbmdf
U3RvcmVfSXRlbSo+KG1hbGxvYyhzaXplb2YoKml0ZW0pKSk7Ci0gICAgaWYgKCFpdGVtKQotICAg
ICAgICByZXR1cm4gMDsKLQogICAgIHRpbGVXaWR0aCA9IHByaXYtPnZpZXcudGlsZS53aWR0aDsK
ICAgICB0aWxlSGVpZ2h0ID0gcHJpdi0+dmlldy50aWxlLmhlaWdodDsKICAgICB4ID0gcHJpdi0+
dmlldy5vZmZzZXQuYmFzZS54ICsgcHJpdi0+dmlldy54ICsgdGlsZVdpZHRoICogY29sdW1uOwog
ICAgIHkgPSBwcml2LT52aWV3Lm9mZnNldC5iYXNlLnkgKyBwcml2LT52aWV3LnkgKyB0aWxlSGVp
Z2h0ICogcm93OwogCisgICAgT3duUHRyPEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0+IGl0
ZW0gPSBhZG9wdFB0cihuZXcgRXdrX1RpbGVkX0JhY2tpbmdfU3RvcmVfSXRlbSk7CiAgICAgaXRl
bS0+dGlsZSA9IDA7Ci0KICAgICBpdGVtLT5zbW9vdGhTY2FsZSA9IHByaXYtPnZpZXcudGlsZS56
b29tV2Vha1Ntb290aFNjYWxlOwotICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX21v
dmUoaXRlbSwgeCwgeSk7Ci0gICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fcmVzaXpl
KGl0ZW0sIHRpbGVXaWR0aCwgdGlsZUhlaWdodCk7Ci0gICAgaWYgKCFfZXdrX3RpbGVkX2JhY2tp
bmdfc3RvcmVfaXRlbV9maWxsKHByaXYsIGl0ZW0sIGNvbHVtbiwgcm93KSkgewotICAgICAgICBm
cmVlKGl0ZW0pOworCisgICAgX2V3a190aWxlZF9iYWNraW5nX3N0b3JlX2l0ZW1fbW92ZShpdGVt
LmdldCgpLCB4LCB5KTsKKyAgICBfZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmVfaXRlbV9yZXNpemUo
aXRlbS5nZXQoKSwgdGlsZVdpZHRoLCB0aWxlSGVpZ2h0KTsKKyAgICBpZiAoIV9ld2tfdGlsZWRf
YmFja2luZ19zdG9yZV9pdGVtX2ZpbGwocHJpdiwgaXRlbS5nZXQoKSwgY29sdW1uLCByb3cpKQog
ICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICByZXR1cm4gaXRlbTsKKyAgICByZXR1cm4g
aXRlbS5sZWFrUHRyKCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdGlsZWRfYmFja2luZ19zdG9y
ZV9pdGVtX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9yZV9EYXRhKiBwcml2LCBFd2tfVGlsZWRf
QmFja2luZ19TdG9yZV9JdGVtKiBpdGVtKQpAQCAtNTA1LDcgKzQ5Nyw3IEBAIHN0YXRpYyB2b2lk
IF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV9pdGVtX2RlbChFd2tfVGlsZWRfQmFja2luZ19TdG9y
ZV9EYXRhKiBwcml2CiAgICAgICAgIF9ld2tfdGlsZWRfYmFja2luZ19zdG9yZV90aWxlX2Rpc3Nv
Y2lhdGUocHJpdiwgaXRlbSwgbGFzdF91c2VkKTsKICAgICB9CiAKLSAgICBmcmVlKGl0ZW0pOwor
ICAgIGRlbGV0ZSBpdGVtOwogfQogCiBzdGF0aWMgdm9pZCBfZXdrX3RpbGVkX2JhY2tpbmdfc3Rv
cmVfaXRlbV9zbW9vdGhfc2NhbGVfc2V0KEV3a19UaWxlZF9CYWNraW5nX1N0b3JlX0l0ZW0qIGl0
ZW0sIEVpbmFfQm9vbCBzbW9vdGhTY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfdGlsZWRfbWF0cml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGls
ZWRfbWF0cml4LmNwcAppbmRleCA1ZDk5MWI0Li41NWEwZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a190aWxlZF9tYXRyaXguY3BwCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSAi
ZXdrX3RpbGVkX2JhY2tpbmdfc3RvcmUuaCIKICNpbmNsdWRlICJld2tfdGlsZWRfcHJpdmF0ZS5o
IgogI2luY2x1ZGUgPEVpbmEuaD4KKyNpbmNsdWRlIDxPd25QdHIuaD4KKyNpbmNsdWRlIDxQYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxpbnR0eXBlcy5oPgogI2lu
Y2x1ZGUgPG1hdGguaD4KQEAgLTE3MCw3ICsxNzIsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVf
bWF0cml4X3RpbGVfZnJlZSh2b2lkKiBkYXRhLCBFd2tfVGlsZSogdGlsZSkKICAgICBpZiAoIWVu
dHJ5LT5jb3VudCAmJiBlbnRyeS0+bWF0cml4ICE9IHRpbGVNYXRyaXgtPm1hdHJpeCkgewogICAg
ICAgICBlaW5hX21hdHJpeHNwYXJzZV9mcmVlKGVudHJ5LT5tYXRyaXgpOwogICAgICAgICB0aWxl
TWF0cml4LT5tYXRyaWNlcyA9IGVpbmFfaW5saXN0X3JlbW92ZSh0aWxlTWF0cml4LT5tYXRyaWNl
cywgRUlOQV9JTkxJU1RfR0VUKGVudHJ5KSk7Ci0gICAgICAgIGZyZWUoZW50cnkpOworICAgICAg
ICBkZWxldGUgZW50cnk7CiAgICAgfQogCiAgICAgZXdrX3RpbGVfZnJlZSh0aWxlKTsKQEAgLTE5
NywxOCArMTk5LDE2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdGlsZV9tYXRyaXhfdGlsZV9mcmVlKHZv
aWQqIGRhdGEsIEV3a19UaWxlKiB0aWxlKQogICovCiBFd2tfVGlsZV9NYXRyaXgqIGV3a190aWxl
X21hdHJpeF9uZXcoRXdrX1RpbGVfVW51c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIHVuc2ln
bmVkIGxvbmcgY29sdW1ucywgdW5zaWduZWQgbG9uZyByb3dzLCBmbG9hdCB6b29tTGV2ZWwsIEV2
YXNfQ29sb3JzcGFjZSBjb2xvclNwYWNlLCB2b2lkICgqcmVuZGVyQ2FsbGJhY2spKHZvaWQqIGRh
dGEsIEV3a19UaWxlKiB0aWxlLCBjb25zdCBFaW5hX1JlY3RhbmdsZSogdXBkYXRlKSwgY29uc3Qg
dm9pZCogcmVuZGVyRGF0YSkKIHsKLSAgICBFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXggPSBz
dGF0aWNfY2FzdDxFd2tfVGlsZV9NYXRyaXgqPihjYWxsb2MoMSwgc2l6ZW9mKEV3a19UaWxlX01h
dHJpeCkpKTsKLSAgICBpZiAoIXRpbGVNYXRyaXgpCi0gICAgICAgIHJldHVybiAwOworICAgIE93
blB0cjxFd2tfVGlsZV9NYXRyaXg+IHRpbGVNYXRyaXggPSBhZG9wdFB0cihuZXcgRXdrX1RpbGVf
TWF0cml4KTsKIAotICAgIHRpbGVNYXRyaXgtPm1hdHJpeCA9IGVpbmFfbWF0cml4c3BhcnNlX25l
dyhyb3dzLCBjb2x1bW5zLCBfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSwgdGlsZU1hdHJpeCk7
CisgICAgdGlsZU1hdHJpeC0+bWF0cml4ID0gZWluYV9tYXRyaXhzcGFyc2VfbmV3KHJvd3MsIGNv
bHVtbnMsIF9ld2tfdGlsZV9tYXRyaXhfY2VsbF9mcmVlLCB0aWxlTWF0cml4LmdldCgpKTsKICAg
ICBpZiAoIXRpbGVNYXRyaXgtPm1hdHJpeCkgewogICAgICAgICBFUlIoImNvdWxkIG5vdCBjcmVh
dGUgc3BhcnNlIG1hdHJpeC4iKTsKLSAgICAgICAgZnJlZSh0aWxlTWF0cml4KTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCi0gICAgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2ZWxfc2V0KHRp
bGVNYXRyaXgsIHpvb21MZXZlbCk7CisgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSAwOworICAg
IGV3a190aWxlX21hdHJpeF96b29tX2xldmVsX3NldCh0aWxlTWF0cml4LmdldCgpLCB6b29tTGV2
ZWwpOwogCiAgICAgaWYgKHRpbGVVbnVzZWRDYWNoZSkKICAgICAgICAgdGlsZU1hdHJpeC0+dGls
ZVVudXNlZENhY2hlID0gZXdrX3RpbGVfdW51c2VkX2NhY2hlX3JlZih0aWxlVW51c2VkQ2FjaGUp
OwpAQCAtMjE3LDcgKzIxNyw2IEBAIEV3a19UaWxlX01hdHJpeCogZXdrX3RpbGVfbWF0cml4X25l
dyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwgdW5zCiAgICAgICAgIGlm
ICghdGlsZU1hdHJpeC0+dGlsZVVudXNlZENhY2hlKSB7CiAgICAgICAgICAgICBFUlIoIm5vIGNh
Y2hlIG9mIHVudXNlZCB0aWxlISIpOwogICAgICAgICAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJl
ZSh0aWxlTWF0cml4LT5tYXRyaXgpOwotICAgICAgICAgICAgZnJlZSh0aWxlTWF0cml4KTsKICAg
ICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQpAQCAtMjI3LDggKzIyNiwxNiBA
QCBFd2tfVGlsZV9NYXRyaXgqIGV3a190aWxlX21hdHJpeF9uZXcoRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlKiB0aWxlVW51c2VkQ2FjaGUsIHVucwogICAgIHRpbGVNYXRyaXgtPnJlbmRlci5kYXRhID0g
KHZvaWQqKXJlbmRlckRhdGE7CiAgICAgdGlsZU1hdHJpeC0+dGlsZS53aWR0aCA9IGRlZmF1bHRU
aWxlV2lkdGg7CiAgICAgdGlsZU1hdHJpeC0+dGlsZS5oZWlnaHQgPSBkZWZhdWx0VGlsZUhlaWd0
aDsKKyAgICB0aWxlTWF0cml4LT5mcm96ZW4gPSAwOworICAgIHRpbGVNYXRyaXgtPnVwZGF0ZXMg
PSAwOwogCi0gICAgcmV0dXJuIHRpbGVNYXRyaXg7CisjaWZkZWYgREVCVUdfTUVNX0xFQUtTCisg
ICAgdGlsZU1hdHJpeC0+c3RhdHMudGlsZXMuYWxsb2NhdGVkID0gMDsKKyAgICB0aWxlTWF0cml4
LT5zdGF0cy50aWxlcy5mcmVlZCA9IDA7CisgICAgdGlsZU1hdHJpeC0+c3RhdHMuYnl0ZXMuYWxs
b2NhdGVkID0gMDsKKyAgICB0aWxlTWF0cml4LT5zdGF0cy5ieXRlcy5mcmVlZCA9IDA7CisjZW5k
aWYKKyAgICByZXR1cm4gdGlsZU1hdHJpeC5sZWFrUHRyKCk7CiB9CiAKIHZvaWQgZXdrX3RpbGVf
bWF0cml4X3pvb21fbGV2ZWxfc2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgZmxvYXQg
em9vbSkKQEAgLTI0OSwxMiArMjU2LDE0IEBAIHZvaWQgZXdrX3RpbGVfbWF0cml4X3pvb21fbGV2
ZWxfc2V0KEV3a19UaWxlX01hdHJpeCogdGlsZU1hdHJpeCwgZmxvYXQgem9vbSkKICAgICB9CiAK
ICAgICBpZiAoIWVudHJ5KSB7Ci0gICAgICAgIGVudHJ5ID0gc3RhdGljX2Nhc3Q8RXdrX1RpbGVf
TWF0cml4X0VudHJ5Kj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVGlsZV9NYXRyaXhfRW50cnkpKSk7
Ci0gICAgICAgIGVudHJ5LT56b29tID0gem9vbTsKKyAgICAgICAgZW50cnkgPSBuZXcgRXdrX1Rp
bGVfTWF0cml4X0VudHJ5OworICAgICAgICBtZW1zZXQoZW50cnksIDAsIHNpemVvZihFd2tfVGls
ZV9NYXRyaXhfRW50cnkpKTsKICAgICAgICAgZW50cnktPm1hdHJpeCA9IGVpbmFfbWF0cml4c3Bh
cnNlX25ldyhyb3dzLCBjb2x1bW5zLCBfZXdrX3RpbGVfbWF0cml4X2NlbGxfZnJlZSwgdGlsZU1h
dHJpeCk7CisgICAgICAgIGVudHJ5LT5jb3VudCA9IDA7CisgICAgICAgIGVudHJ5LT56b29tID0g
em9vbTsKICAgICAgICAgaWYgKCFlbnRyeS0+bWF0cml4KSB7CiAgICAgICAgICAgICBFUlIoImNv
dWxkIG5vdCBjcmVhdGUgc3BhcnNlIG1hdHJpeC4iKTsKLSAgICAgICAgICAgIGZyZWUoZW50cnkp
OworICAgICAgICAgICAgZGVsZXRlIGVudHJ5OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gZWluYV9pbmxpc3RfcHJlcGVuZCh0
aWxlTWF0cml4LT5tYXRyaWNlcywgRUlOQV9JTkxJU1RfR0VUKGVudHJ5KSk7CkBAIC0yNzcsNyAr
Mjg2LDcgQEAgdm9pZCBld2tfdGlsZV9tYXRyaXhfaW52YWxpZGF0ZShFd2tfVGlsZV9NYXRyaXgq
IHRpbGVNYXRyaXgpCiAgICAgICAgIGlmIChpdGVyYXRvci0+bWF0cml4ICE9IHRpbGVNYXRyaXgt
Pm1hdHJpeCkgewogICAgICAgICAgICAgZWluYV9tYXRyaXhzcGFyc2VfZnJlZShpdGVyYXRvci0+
bWF0cml4KTsKICAgICAgICAgICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gZWluYV9pbmxpc3Rf
cmVtb3ZlKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBtYXRyaXhMaXN0KTsKLSAgICAgICAgICAgIGZy
ZWUoaXRlcmF0b3IpOworICAgICAgICAgICAgZGVsZXRlIGl0ZXJhdG9yOwogICAgICAgICB9CiAK
ICAgICAgICAgbWF0cml4TGlzdCA9IG5leHQ7CkBAIC0zMDMsOCArMzEyLDggQEAgdm9pZCBld2tf
dGlsZV9tYXRyaXhfZnJlZShFd2tfVGlsZV9NYXRyaXgqIHRpbGVNYXRyaXgpCiAgICAgZW50cnkg
PSBFSU5BX0lOTElTVF9DT05UQUlORVJfR0VUKHRpbGVNYXRyaXgtPm1hdHJpY2VzLCBFd2tfVGls
ZV9NYXRyaXhfRW50cnkpOwogICAgIGVpbmFfbWF0cml4c3BhcnNlX2ZyZWUoZW50cnktPm1hdHJp
eCk7CiAgICAgdGlsZU1hdHJpeC0+bWF0cmljZXMgPSBlaW5hX2lubGlzdF9yZW1vdmUodGlsZU1h
dHJpeC0+bWF0cmljZXMsIHJlaW50ZXJwcmV0X2Nhc3Q8RWluYV9Jbmxpc3QqPihlbnRyeSkpOwot
ICAgIGZyZWUoZW50cnkpOwogICAgIHRpbGVNYXRyaXgtPm1hdHJpY2VzID0gMDsKKyAgICBkZWxl
dGUgZW50cnk7CiAKICAgICBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGhhdyh0aWxlTWF0cml4LT50
aWxlVW51c2VkQ2FjaGUpOwogICAgIGV3a190aWxlX3VudXNlZF9jYWNoZV91bnJlZih0aWxlTWF0
cml4LT50aWxlVW51c2VkQ2FjaGUpOwpAQCAtMzM1LDcgKzM0NCw3IEBAIHZvaWQgZXdrX3RpbGVf
bWF0cml4X2ZyZWUoRXdrX1RpbGVfTWF0cml4KiB0aWxlTWF0cml4KQogICAgICAgICAgICAgdGls
ZU1hdHJpeC0+c3RhdHMuYnl0ZXMuYWxsb2NhdGVkLCB0aWxlTWF0cml4LT5zdGF0cy5ieXRlcy5m
cmVlZCk7CiAjZW5kaWYKIAotICAgIGZyZWUodGlsZU1hdHJpeCk7CisgICAgZGVsZXRlIHRpbGVN
YXRyaXg7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190
aWxlZF9tb2RlbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3RpbGVkX21vZGVsLmNw
cAppbmRleCBlZGUxYjRiLi5jMGU3MDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX3RpbGVkX21vZGVsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Rp
bGVkX21vZGVsLmNwcApAQCAtNDM5LDkgKzQzOSw4IEBAIEV3a19UaWxlX1VudXNlZF9DYWNoZSog
ZXdrX3RpbGVfdW51c2VkX2NhY2hlX25ldyhzaXplX3QgbWF4KQogewogICAgIEV3a19UaWxlX1Vu
dXNlZF9DYWNoZSogdGlsZVVudXNlZENhY2hlOwogCi0gICAgdGlsZVVudXNlZENhY2hlID0gc3Rh
dGljX2Nhc3Q8RXdrX1RpbGVfVW51c2VkX0NhY2hlKj4oY2FsbG9jKDEsIHNpemVvZihFd2tfVGls
ZV9VbnVzZWRfQ2FjaGUpKSk7Ci0gICAgaWYgKCF0aWxlVW51c2VkQ2FjaGUpCi0gICAgICAgIHJl
dHVybiAwOworICAgIHRpbGVVbnVzZWRDYWNoZSA9IG5ldyBFd2tfVGlsZV9VbnVzZWRfQ2FjaGU7
CisgICAgbWVtc2V0KHRpbGVVbnVzZWRDYWNoZSwgMCwgc2l6ZW9mKEV3a19UaWxlX1VudXNlZF9D
YWNoZSkpOwogCiAgICAgREJHKCJ0aWxlVW51c2VkQ2FjaGU9JXAiLCB0aWxlVW51c2VkQ2FjaGUp
OwogICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5Lm1heCA9IG1heDsKQEAgLTQ5MSw3ICs0OTAs
NyBAQCBzdGF0aWMgdm9pZCBfZXdrX3RpbGVfdW51c2VkX2NhY2hlX2ZyZWUoRXdrX1RpbGVfVW51
c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUpCiAgICAgICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVt
b3J5Lm1heCwgdGlsZVVudXNlZENhY2hlLT5tZW1vcnkudXNlZCk7CiAKICAgICBld2tfdGlsZV91
bnVzZWRfY2FjaGVfY2xlYXIodGlsZVVudXNlZENhY2hlKTsKLSAgICBmcmVlKHRpbGVVbnVzZWRD
YWNoZSk7CisgICAgZGVsZXRlIHRpbGVVbnVzZWRDYWNoZTsKIH0KIAogLyoqCkBAIC01MTEsNyAr
NTEwLDcgQEAgdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfY2xlYXIoRXdrX1RpbGVfVW51c2Vk
X0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUpCiAgICAgRUlOQV9MSVNUX0ZSRUUodGlsZVVudXNlZENh
Y2hlLT5lbnRyaWVzLmxpc3QsIGl0ZW0pIHsKICAgICAgICAgRXdrX1RpbGVfVW51c2VkX0NhY2hl
X0VudHJ5KiBpdHIgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50cnkqPihp
dGVtKTsKICAgICAgICAgaXRyLT50aWxlX2ZyZWUuY2FsbGJhY2soaXRyLT50aWxlX2ZyZWUuZGF0
YSwgaXRyLT50aWxlKTsKLSAgICAgICAgZnJlZShpdHIpOworICAgICAgICBkZWxldGUgaXRyOwog
ICAgIH0KIAogICAgIHRpbGVVbnVzZWRDYWNoZS0+bWVtb3J5LnVzZWQgPSAwOwpAQCAtNjA0LDcg
KzYwMyw3IEBAIHNpemVfdCBld2tfdGlsZV91bnVzZWRfY2FjaGVfZmx1c2goRXdrX1RpbGVfVW51
c2VkX0NhY2hlKiB0aWxlVW51c2VkQ2FjaGUsIHNpemVfCiAgICAgICAgIGRvbmUgKz0gZXdrX3Rp
bGVfbWVtb3J5X3NpemVfZ2V0KGl0ci0+dGlsZSk7CiAgICAgICAgIGl0ci0+dGlsZV9mcmVlLmNh
bGxiYWNrKGl0ci0+dGlsZV9mcmVlLmRhdGEsIGl0ci0+dGlsZSk7CiAgICAgICAgIHRpbGVVbnVz
ZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWluYV9saXN0X3JlbW92ZV9saXN0KHRpbGVVbnVzZWRD
YWNoZS0+ZW50cmllcy5saXN0LCBsaXN0KTsKLSAgICAgICAgZnJlZShpdHIpOworICAgICAgICBk
ZWxldGUgaXRyOwogICAgICAgICBjb3VudCsrOwogICAgIH0KIApAQCAtNjY5LDI4ICs2NjgsMjMg
QEAgdm9pZCBld2tfdGlsZV91bnVzZWRfY2FjaGVfdGhhdyhFd2tfVGlsZV9VbnVzZWRfQ2FjaGUq
IHRpbGVVbnVzZWRDYWNoZSkKICAqLwogRWluYV9Cb29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90
aWxlX2dldChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUqIHRpbGVVbnVzZWRDYWNoZSwgRXdrX1RpbGUq
IHRpbGUpCiB7Ci0gICAgRWluYV9MaXN0KiBmb3VuZEVudHJ5LCAqaXRlcmF0ZUVudHJ5OwotCisg
ICAgRWluYV9MaXN0KiBpdGVyYXRlRW50cnk7CiAgICAgdm9pZCogaXRlbTsKLSAgICBmb3VuZEVu
dHJ5ID0gMDsKKwogICAgIEVJTkFfTElTVF9GT1JFQUNIKHRpbGVVbnVzZWRDYWNoZS0+ZW50cmll
cy5saXN0LCBpdGVyYXRlRW50cnksIGl0ZW0pIHsKICAgICAgICAgRXdrX1RpbGVfVW51c2VkX0Nh
Y2hlX0VudHJ5KiBlbnRyeSA9IHN0YXRpY19jYXN0PEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRy
eSo+KGl0ZW0pOwogICAgICAgICBpZiAoZW50cnktPnRpbGUgPT0gdGlsZSkgewotICAgICAgICAg
ICAgZm91bmRFbnRyeSA9IGl0ZXJhdGVFbnRyeTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgdGlsZVVudXNlZENhY2hlLT5lbnRyaWVzLmNvdW50LS07CisgICAgICAgICAgICB0aWxl
VW51c2VkQ2FjaGUtPm1lbW9yeS51c2VkIC09IGV3a190aWxlX21lbW9yeV9zaXplX2dldCh0aWxl
KTsKKyAgICAgICAgICAgIHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWluYV9saXN0
X3JlbW92ZV9saXN0KHRpbGVVbnVzZWRDYWNoZS0+ZW50cmllcy5saXN0LCBpdGVyYXRlRW50cnkp
OworICAgICAgICAgICAgZGVsZXRlIGVudHJ5OworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIWZvdW5kRW50cnkpIHsKLSAgICAgICAgRVJSKCJ0
aWxlICVwIG5vdCBmb3VuZCBpbiBjYWNoZSAlcCIsIHRpbGUsIHRpbGVVbnVzZWRDYWNoZSk7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB0aWxlVW51c2VkQ2FjaGUtPmVudHJp
ZXMuY291bnQtLTsKLSAgICB0aWxlVW51c2VkQ2FjaGUtPm1lbW9yeS51c2VkIC09IGV3a190aWxl
X21lbW9yeV9zaXplX2dldCh0aWxlKTsKLSAgICB0aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMubGlz
dCA9IGVpbmFfbGlzdF9yZW1vdmVfbGlzdCh0aWxlVW51c2VkQ2FjaGUtPmVudHJpZXMubGlzdCwg
Zm91bmRFbnRyeSk7Ci0gICAgZnJlZShpdGVtKTsKIAotICAgIHJldHVybiB0cnVlOworICAgIEVS
UigidGlsZSAlcCBub3QgZm91bmQgaW4gY2FjaGUgJXAiLCB0aWxlLCB0aWxlVW51c2VkQ2FjaGUp
OworICAgIHJldHVybiBmYWxzZTsKIH0KIAogLyoqCkBAIC03MjQsOSArNzE4LDcgQEAgRWluYV9C
b29sIGV3a190aWxlX3VudXNlZF9jYWNoZV90aWxlX3B1dChFd2tfVGlsZV9VbnVzZWRfQ2FjaGUq
IHRpbGVVbnVzZWRDYWNoZSwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHVu
dXNlZENhY2hlRW50cnkgPSBzdGF0aWNfY2FzdDxFd2tfVGlsZV9VbnVzZWRfQ2FjaGVfRW50cnkq
PihtYWxsb2Moc2l6ZW9mKEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeSkpKTsKLSAgICBpZiAo
IXVudXNlZENhY2hlRW50cnkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB1bnVzZWRDYWNo
ZUVudHJ5ID0gbmV3IEV3a19UaWxlX1VudXNlZF9DYWNoZV9FbnRyeTsKIAogICAgIHRpbGVVbnVz
ZWRDYWNoZS0+ZW50cmllcy5saXN0ID0gZWluYV9saXN0X2FwcGVuZCh0aWxlVW51c2VkQ2FjaGUt
PmVudHJpZXMubGlzdCwgdW51c2VkQ2FjaGVFbnRyeSk7CiAgICAgaWYgKGVpbmFfZXJyb3JfZ2V0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdGlsZWRfcHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRlLmgKaW5kZXggOTQ4
OTZjNC4uOGExNWFhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxl
ZF9wcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a190aWxlZF9wcml2YXRl
LmgKQEAgLTI5LDM0ICsyOSw0IEBAIGV4dGVybiBpbnQgX2V3a190aWxlZF9sb2dfZG9tOwogI2Rl
ZmluZSBXUk4oLi4uKSBFSU5BX0xPR19ET01fV0FSTihfZXdrX3RpbGVkX2xvZ19kb20sIF9fVkFf
QVJHU19fKQogI2RlZmluZSBJTkYoLi4uKSBFSU5BX0xPR19ET01fSU5GTyhfZXdrX3RpbGVkX2xv
Z19kb20sIF9fVkFfQVJHU19fKQogI2RlZmluZSBEQkcoLi4uKSBFSU5BX0xPR19ET01fREJHKF9l
d2tfdGlsZWRfbG9nX2RvbSwgX19WQV9BUkdTX18pCi0jZGVmaW5lIE9PTShvcCwgc2l6ZSkgQ1JJ
VElDQUwoImNvdWxkIG5vdCAlcyAlemQgYnl0ZXM6ICVzIiwgb3AsIHNpemUsIHN0cmVycm9yKGVy
cm5vKSkKLSNkZWZpbmUgTUFMTE9DX09SX09PTV9SRVQocHRyLCBzaXplLCAuLi4pICAgICAgIFwK
LSAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAg
ICAgcHRyID0gbWFsbG9jKHNpemUpOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYg
KCFwdHIgJiYgKHNpemUpID4gMCkgeyAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIE9PTSgi
bWFsbG9jIiwgKHNpemUpKTsgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHJldHVybiBfX1ZB
X0FSR1NfXzsgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICB9IHdoaWxlICgwKQotCi0jZGVmaW5lIENBTExPQ19P
Ul9PT01fUkVUKHB0ciwgc2l6ZSwgLi4uKSAgICAgICBcCi0gICAgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHB0ciA9IGNhbGxvYygxLCBzaXpl
KTsgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmICghcHRyICYmIChzaXplKSA+IDApIHsg
ICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBPT00oImNhbGxvYyIsIChzaXplKSk7ICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAg
ICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0g
ICAgfSB3aGlsZSAoMCkKLQotI2RlZmluZSBSRUFMTE9DX09SX09PTV9SRVQocHRyLCBzaXplLCAu
Li4pICAgICAgXAotICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICB2b2lkKiBfX3RtcF9wdHI7ICAgICAgICAgICAgICAgICAgICAgICAgXAot
ICAgICAgICBfX3RtcF9wdHIgPSByZWFsbG9jKHB0ciwgc2l6ZSk7ICAgICAgICAgXAotICAgICAg
ICBpZiAoIV9fdG1wX3B0ciAmJiAoc2l6ZSkgPiAwKSB7ICAgICAgICAgXAotICAgICAgICAgICAg
T09NKCJyZWFsbG9jIiwgKHNpemUpKTsgICAgICAgICAgICAgXAotICAgICAgICAgICAgcmV0dXJu
IF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgXAotICAgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBwdHIgPSBfX3RtcF9wdHI7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAotICAgIH0gd2hpbGUgKDApCi0KICNlbmRpZiAvLyBld2tfdGls
ZWRfcHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA4YTk2NzQwLi4x
N2E2ZWEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTEzMyw3ICsxMzMsNyBA
QCBzdGF0aWMgY29uc3QgRXZhc19TbWFydF9DYl9EZXNjcmlwdGlvbiBfZXdrX3ZpZXdfY2FsbGJh
Y2tfbmFtZXNbXSA9IHsKICAqIEBpbnRlcm5hbAogICovCiBzdHJ1Y3QgX0V3a19WaWV3X1ByaXZh
dGVfRGF0YSB7Ci0gICAgV2ViQ29yZTo6UGFnZSogcGFnZTsKKyAgICBPd25QdHI8V2ViQ29yZTo6
UGFnZT4gcGFnZTsKICAgICBXZWJDb3JlOjpTZXR0aW5ncyogcGFnZVNldHRpbmdzOwogICAgIFdl
YkNvcmU6OkZyYW1lKiBtYWluRnJhbWU7CiAgICAgV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHMg
dmlld3BvcnRBcmd1bWVudHM7CkBAIC01ODksNDcgKzU4OSwzNiBAQCBzdGF0aWMgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkZyYW1lPiBfZXdrX3ZpZXdfY29yZV9mcmFtZV9uZXcoRXdrX1ZpZXdf
U21hcnRfRAogICAgIH0KICAgICBmcmFtZUxvYWRlckNsaWVudC0+c2V0Q3VzdG9tVXNlckFnZW50
KFN0cmluZzo6ZnJvbVVURjgocHJpdi0+c2V0dGluZ3MudXNlckFnZW50KSk7CiAKLSAgICByZXR1
cm4gV2ViQ29yZTo6RnJhbWU6OmNyZWF0ZShwcml2LT5wYWdlLCBvd25lciwgZnJhbWVMb2FkZXJD
bGllbnQpOworICAgIHJldHVybiBXZWJDb3JlOjpGcmFtZTo6Y3JlYXRlKHByaXYtPnBhZ2UuZ2V0
KCksIG93bmVyLCBmcmFtZUxvYWRlckNsaWVudCk7CiB9CiAKIHN0YXRpYyBFdmFzX1NtYXJ0X0Ns
YXNzIF9wYXJlbnRfc2MgPSBFVkFTX1NNQVJUX0NMQVNTX0lOSVRfTlVMTDsKIAogc3RhdGljIEV3
a19WaWV3X1ByaXZhdGVfRGF0YSogX2V3a192aWV3X3ByaXZfbmV3KEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNtYXJ0RGF0YSkKIHsKLSAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHByaXYgPQotICAg
ICAgICBzdGF0aWNfY2FzdDxFd2tfVmlld19Qcml2YXRlX0RhdGEqPihjYWxsb2MoMSwgc2l6ZW9m
KEV3a19WaWV3X1ByaXZhdGVfRGF0YSkpKTsKKyAgICBFd2tfVmlld19Qcml2YXRlX0RhdGEqIHBy
aXYgPSBuZXcgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhOworICAgIG1lbXNldChwcml2LCAwLCBzaXpl
b2YoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKSk7CiAgICAgQXRvbWljU3RyaW5nIHN0cmluZzsKICAg
ICBXZWJDb3JlOjpLVVJMIHVybDsKIAotICAgIGlmICghcHJpdikgewotICAgICAgICBDUklUSUNB
TCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19WaWV3X1ByaXZhdGVfRGF0YSIpOwotICAgICAgICBy
ZXR1cm4gMDsKLSAgICB9Ci0KICAgICBXZWJDb3JlOjpQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xp
ZW50czsKICAgICBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQgPSBuZXcgV2ViQ29yZTo6Q2hyb21l
Q2xpZW50RWZsKHNtYXJ0RGF0YS0+c2VsZik7CiAgICAgcGFnZUNsaWVudHMuZWRpdG9yQ2xpZW50
ID0gbmV3IFdlYkNvcmU6OkVkaXRvckNsaWVudEVmbChzbWFydERhdGEtPnNlbGYpOwogICAgIHBh
Z2VDbGllbnRzLmRyYWdDbGllbnQgPSBuZXcgV2ViQ29yZTo6RHJhZ0NsaWVudEVmbDsKICAgICBw
YWdlQ2xpZW50cy5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViQ29yZTo6SW5zcGVjdG9yQ2xpZW50
RWZsOwotICAgIHByaXYtPnBhZ2UgPSBuZXcgV2ViQ29yZTo6UGFnZShwYWdlQ2xpZW50cyk7Ci0g
ICAgaWYgKCFwcml2LT5wYWdlKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRl
IFdlYktpdCBQYWdlIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfcGFnZTsKLSAgICB9CisKKyAgICBw
cml2LT5wYWdlID0gYWRvcHRQdHIobmV3IFdlYkNvcmU6OlBhZ2UocGFnZUNsaWVudHMpKTsKKwog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgV2ViQ29yZTo6cHJvdmlkZURldmlj
ZU1vdGlvblRvKHByaXYtPnBhZ2UsIG5ldyBXZWJDb3JlOjpEZXZpY2VNb3Rpb25DbGllbnRFZmwp
OwotICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRvKHByaXYtPnBhZ2UsIG5l
dyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVmbCk7CisgICAgV2ViQ29yZTo6cHJv
dmlkZURldmljZU1vdGlvblRvKHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpEZXZpY2VN
b3Rpb25DbGllbnRFZmwpOworICAgIFdlYkNvcmU6OnByb3ZpZGVEZXZpY2VPcmllbnRhdGlvblRv
KHByaXYtPnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpEZXZpY2VPcmllbnRhdGlvbkNsaWVudEVm
bCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWSUJSQVRJT04pCi0gICAgV2ViQ29yZTo6cHJvdmlk
ZVZpYnJhdGlvblRvKHByaXYtPnBhZ2UsIG5ldyBXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmwo
c21hcnREYXRhLT5zZWxmKSk7CisgICAgV2ViQ29yZTo6cHJvdmlkZVZpYnJhdGlvblRvKHByaXYt
PnBhZ2UuZ2V0KCksIG5ldyBXZWJDb3JlOjpWaWJyYXRpb25DbGllbnRFZmwoc21hcnREYXRhLT5z
ZWxmKSk7CiAjZW5kaWYKIAogICAgIHByaXYtPnBhZ2VTZXR0aW5ncyA9IHByaXYtPnBhZ2UtPnNl
dHRpbmdzKCk7Ci0gICAgaWYgKCFwcml2LT5wYWdlU2V0dGluZ3MpIHsKLSAgICAgICAgQ1JJVElD
QUwoIkNvdWxkIG5vdCBnZXQgcGFnZSBzZXR0aW5ncy4iKTsKLSAgICAgICAgZ290byBlcnJvcl9z
ZXR0aW5nczsKLSAgICB9CiAKICAgICBwcml2LT52aWV3cG9ydEFyZ3VtZW50cy53aWR0aCA9IFdl
YkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1dG87CiAgICAgcHJpdi0+dmlld3BvcnRB
cmd1bWVudHMuaGVpZ2h0ID0gV2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM6OlZhbHVlQXV0bzsK
QEAgLTcxNCwyOSArNzAzLDEyIEBAIHN0YXRpYyBFd2tfVmlld19Qcml2YXRlX0RhdGEqIF9ld2tf
dmlld19wcml2X25ldyhFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEpCiAgICAgcHJpdi0+
c2V0dGluZ3MuZG9tVGltZXJJbnRlcnZhbCA9IHByaXYtPnBhZ2VTZXR0aW5ncy0+ZGVmYXVsdE1p
bkRPTVRpbWVySW50ZXJ2YWwoKTsKIAogICAgIHByaXYtPm1haW5GcmFtZSA9IF9ld2tfdmlld19j
b3JlX2ZyYW1lX25ldyhzbWFydERhdGEsIHByaXYsIDApLmdldCgpOwotICAgIGlmICghcHJpdi0+
bWFpbkZyYW1lKSB7Ci0gICAgICAgIENSSVRJQ0FMKCJDb3VsZCBub3QgY3JlYXRlIG1haW4gZnJh
bWUuIik7Ci0gICAgICAgIGdvdG8gZXJyb3JfbWFpbl9mcmFtZTsKLSAgICB9CiAKICAgICBwcml2
LT5oaXN0b3J5ID0gZXdrX2hpc3RvcnlfbmV3KHN0YXRpY19jYXN0PFdlYkNvcmU6OkJhY2tGb3J3
YXJkTGlzdEltcGwqPihwcml2LT5wYWdlLT5iYWNrRm9yd2FyZExpc3QoKSkpOwotICAgIGlmICgh
cHJpdi0+aGlzdG9yeSkgewotICAgICAgICBDUklUSUNBTCgiQ291bGQgbm90IGNyZWF0ZSBoaXN0
b3J5IGluc3RhbmNlIGZvciB2aWV3LiIpOwotICAgICAgICBnb3RvIGVycm9yX2hpc3Rvcnk7Ci0g
ICAgfQogCiAgICAgcHJpdi0+c291cFNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6
ZGVmYXVsdFNlc3Npb24oKTsKIAogICAgIHJldHVybiBwcml2OwotCi1lcnJvcl9oaXN0b3J5Ogot
ICAgIC8vIGRlbGV0ZSBwcml2LT5tYWluX2ZyYW1lOyAvKiBkbyBub3QgZGVsZXRlIHByaXYtPm1h
aW5fZnJhbWUgKi8KLWVycm9yX21haW5fZnJhbWU6Ci1lcnJvcl9zZXR0aW5nczoKLSAgICBkZWxl
dGUgcHJpdi0+cGFnZTsKLWVycm9yX3BhZ2U6Ci0gICAgZnJlZShwcml2KTsKLSAgICByZXR1cm4g
MDsKIH0KIAogc3RhdGljIHZvaWQgX2V3a192aWV3X3ByaXZfZGVsKEV3a19WaWV3X1ByaXZhdGVf
RGF0YSogcHJpdikKQEAgLTc2Niw4ICs3MzgsNyBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJp
dl9kZWwoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKiBwcml2KQogCiAgICAgZXdrX2hpc3RvcnlfZnJl
ZShwcml2LT5oaXN0b3J5KTsKIAotICAgIGRlbGV0ZSBwcml2LT5wYWdlOwotICAgIGZyZWUocHJp
dik7CisgICAgZGVsZXRlIHByaXY7CiB9CiAKIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFydF9h
ZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC0zMzk1LDcgKzMzNjYsNyBAQCBXZWJDb3JlOjpQ
YWdlKiBld2tfdmlld19jb3JlX3BhZ2VfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ewogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsK
ICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCAwKTsKLSAg
ICByZXR1cm4gcHJpdi0+cGFnZTsKKyAgICByZXR1cm4gcHJpdi0+cGFnZS5nZXQoKTsKIH0KIAog
LyoqCkBAIC0zNDc0LDcgKzM0NDUsNyBAQCB2b2lkIGV3a192aWV3X3BvcHVwX25ldyhFdmFzX09i
amVjdCogZXdrVmlldywgV2ViQ29yZTo6UG9wdXBNZW51Q2xpZW50KiBjbGllbnQsCiAgICAgLy8g
cG9wdWxhdGUgaXRlbXMKICAgICBjb25zdCBpbnQgc2l6ZSA9IGNsaWVudC0+bGlzdFNpemUoKTsK
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBFd2tfTWVudV9J
dGVtKiBpdGVtID0gc3RhdGljX2Nhc3Q8RXdrX01lbnVfSXRlbSo+KG1hbGxvYyhzaXplb2YoKml0
ZW0pKSk7CisgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0ZW0gPSBuZXcgRXdrX01lbnVfSXRlbTsK
ICAgICAgICAgaWYgKGNsaWVudC0+aXRlbUlzU2VwYXJhdG9yKGkpKQogICAgICAgICAgICAgaXRl
bS0+dHlwZSA9IEVXS19NRU5VX1NFUEFSQVRPUjsKICAgICAgICAgZWxzZSBpZiAoY2xpZW50LT5p
dGVtSXNMYWJlbChpKSkKQEAgLTM1MDgsNyArMzQ3OSw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19w
b3B1cF9kZXN0cm95KEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVJTkFfTElTVF9GUkVFKHBy
aXYtPnBvcHVwLm1lbnUuaXRlbXMsIGl0ZW12KSB7CiAgICAgICAgIEV3a19NZW51X0l0ZW0qIGl0
ZW0gPSBzdGF0aWNfY2FzdDxFd2tfTWVudV9JdGVtKj4oaXRlbXYpOwogICAgICAgICBlaW5hX3N0
cmluZ3NoYXJlX2RlbChpdGVtLT50ZXh0KTsKLSAgICAgICAgZnJlZShpdGVtKTsKKyAgICAgICAg
ZGVsZXRlIGl0ZW07CiAgICAgfQogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQtPnBvcHVwRGlk
SGlkZSgpOwogICAgIHByaXYtPnBvcHVwLm1lbnVDbGllbnQgPSAwOwpAQCAtMzk1MSw3ICszOTIy
LDcgQEAgV2ViQ29yZTo6UGFnZSAqY29yZVBhZ2UoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcp
CiB7CiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDAp
OwogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIDApOwot
ICAgIHJldHVybiBwcml2LT5wYWdlOworICAgIHJldHVybiBwcml2LT5wYWdlLmdldCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBFV0tQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX3dpbmRvd19mZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X3dpbmRvd19mZWF0dXJlcy5jcHAKaW5kZXggOTgyYzdmYS4uNjE4MWJkYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9lZmwvZXdrL2V3a193aW5kb3dfZmVhdHVyZXMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfd2luZG93X2ZlYXR1cmVzLmNwcApAQCAtNDUsNyArNDUsNyBA
QCB2b2lkIGV3a193aW5kb3dfZmVhdHVyZXNfdW5yZWYoRXdrX1dpbmRvd19GZWF0dXJlcyogd2lu
ZG93RmVhdHVyZXMpCiAKICAgICBkZWxldGUgd2luZG93RmVhdHVyZXMtPmNvcmU7CiAgICAgd2lu
ZG93RmVhdHVyZXMtPmNvcmUgPSAwOwotICAgIGZyZWUod2luZG93RmVhdHVyZXMpOworICAgIGRl
bGV0ZSB3aW5kb3dGZWF0dXJlczsKIH0KIAogdm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX3JlZihF
d2tfV2luZG93X0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKQEAgLTEwOSwxMSArMTA5LDcgQEAg
dm9pZCBld2tfd2luZG93X2ZlYXR1cmVzX2ludF9wcm9wZXJ0eV9nZXQoY29uc3QgRXdrX1dpbmRv
d19GZWF0dXJlcyogd2luZG93RmVhdHUKICAqLwogRXdrX1dpbmRvd19GZWF0dXJlcyogZXdrX3dp
bmRvd19mZWF0dXJlc19uZXdfZnJvbV9jb3JlKGNvbnN0IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVz
KiBjb3JlKQogewotICAgIEV3a19XaW5kb3dfRmVhdHVyZXMqIHdpbmRvd19mZWF0dXJlcyA9IHN0
YXRpY19jYXN0PEV3a19XaW5kb3dfRmVhdHVyZXMqPihtYWxsb2Moc2l6ZW9mKCp3aW5kb3dfZmVh
dHVyZXMpKSk7Ci0gICAgaWYgKCF3aW5kb3dfZmVhdHVyZXMpIHsKLSAgICAgICAgQ1JJVElDQUwo
IkNvdWxkIG5vdCBhbGxvY2F0ZSBFd2tfV2luZG93X0ZlYXR1cmVzLiIpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9CisgICAgRXdrX1dpbmRvd19GZWF0dXJlcyogd2luZG93X2ZlYXR1cmVzID0g
bmV3IEV3a19XaW5kb3dfRmVhdHVyZXM7CiAKICAgICBpZiAoY29yZSkKICAgICAgICAgd2luZG93
X2ZlYXR1cmVzLT5jb3JlID0gbmV3IFdlYkNvcmU6OldpbmRvd0ZlYXR1cmVzKCpjb3JlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>