<?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>109044</bug_id>
          
          <creation_ts>2013-02-06 05:47:15 -0800</creation_ts>
          <short_desc>Replace ExceptionCode assertions with ASSERT_NO_EXCEPTION macro.</short_desc>
          <delta_ts>2013-02-08 05:20:04 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108180</blocked>
    
    <blocked>109266</blocked>
    
    <blocked>109267</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>alecflett</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>d-r</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fmalita</cc>
    
    <cc>gavinp</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>mifenton</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>schenney</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826373</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 05:47:15 -0800</bug_when>
    <thetext>The pattern:

    ExceptionCode ec = 0;
    methodThatGeneratesException(ec);
    ASSERT(!ec);

is more clearly and succinctly written as:

    methodThatGeneratesException(ASSERT_NO_EXCEPTION);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826375</commentid>
    <comment_count>1</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 05:52:42 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; The pattern:
&gt; 
&gt;     ExceptionCode ec = 0;
&gt;     methodThatGeneratesException(ec);
&gt;     ASSERT(!ec);
&gt; 
&gt; is more clearly and succinctly written as:
&gt; 
&gt;     methodThatGeneratesException(ASSERT_NO_EXCEPTION);

Note that this only applies to call sites that do nothing else with &apos;ec&apos;.

    ExceptionCode ec = 0;
    methodThatGeneratesException(ec);
    ASSERT(!ec);
    if (ec)
        return;

should be left alone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826383</commentid>
    <comment_count>2</comment_count>
      <attachid>186839</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 06:09:55 -0800</bug_when>
    <thetext>Created attachment 186839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826388</commentid>
    <comment_count>3</comment_count>
      <attachid>186839</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-06 06:16:46 -0800</bug_when>
    <thetext>Comment on attachment 186839
Patch

Attachment 186839 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/16395204</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826389</commentid>
    <comment_count>4</comment_count>
      <attachid>186839</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-02-06 06:16:55 -0800</bug_when>
    <thetext>Comment on attachment 186839
Patch

Attachment 186839 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/16400112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826391</commentid>
    <comment_count>5</comment_count>
      <attachid>186839</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 06:21:35 -0800</bug_when>
    <thetext>Comment on attachment 186839
Patch

Ugh. Missed a spot. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826406</commentid>
    <comment_count>6</comment_count>
      <attachid>186845</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 06:44:42 -0800</bug_when>
    <thetext>Created attachment 186845
Less broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826457</commentid>
    <comment_count>7</comment_count>
      <attachid>186845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 07:59:58 -0800</bug_when>
    <thetext>Comment on attachment 186845
Less broken.

Attachment 186845 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16395232

New failing tests:
dom/xhtml/level2/core/setAttributeNS10.xhtml
dom/html/level2/core/setAttributeNS10.html
fast/dom/Element/setAttributeNS-namespace-err.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826471</commentid>
    <comment_count>8</comment_count>
      <attachid>186845</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 08:25:19 -0800</bug_when>
    <thetext>Comment on attachment 186845
Less broken.

Attachment 186845 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16394267

New failing tests:
fast/dom/Element/setAttributeNS-namespace-err.html
dom/html/level2/core/setAttributeNS10.html
dom/xhtml/level2/core/setAttributeNS10.xhtml</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826478</commentid>
    <comment_count>9</comment_count>
      <attachid>186862</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-06 08:42:34 -0800</bug_when>
    <thetext>Created attachment 186862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826504</commentid>
    <comment_count>10</comment_count>
      <attachid>186862</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-02-06 09:30:06 -0800</bug_when>
    <thetext>Comment on attachment 186862
Patch

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

I like that this cuts down on the &quot;ec&quot; name, and code that knows that it’s an integer.

It’s interesting how much of this is basic DOM tree and Range operations. Makes me think we should have internal functions for these instead of going through the “real DOM” functions. Likely an even better solution to this problem area for many call sites that could even possibly lead to some refactoring opportunities or a performance boost. At some point we should use grep to come up with stats about which functions are used most often with ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.

&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:99
&gt; +    const AtomicString&amp; direction = directionToString(m_direction, ASSERT_NO_EXCEPTION);
&gt;      return direction;

No need for the local variable any more here.

&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:125
&gt; +    const AtomicString&amp; mode = modeToString(m_mode, ASSERT_NO_EXCEPTION);
&gt;      return mode;

No need for the local variable any more here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826513</commentid>
    <comment_count>11</comment_count>
      <attachid>186862</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-02-06 09:49:45 -0800</bug_when>
    <thetext>Comment on attachment 186862
Patch

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

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBCursor.cpp:99
&gt;&gt;      return direction;
&gt; 
&gt; No need for the local variable any more here.

And FYI the directionToString method is only ever called from here now; it was used when we supported both legacy numeric enum and new string values when called from script. Now that the numeric enum values are not supported from script we can drop the ExceptionCode argument from this method. But that can be done in a separate patch.

&gt;&gt; Source/WebCore/Modules/indexeddb/IDBTransaction.cpp:125
&gt;&gt;      return mode;
&gt; 
&gt; No need for the local variable any more here.

And FYI, same as above. We can drop the ExceptionCode param from modeToStrng now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826637</commentid>
    <comment_count>12</comment_count>
      <attachid>186862</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 12:30:14 -0800</bug_when>
    <thetext>Comment on attachment 186862
Patch

Attachment 186862 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16401229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827097</commentid>
    <comment_count>13</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-07 00:12:05 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 186862 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=186862&amp;action=review
&gt; 
&gt; I like that this cuts down on the &quot;ec&quot; name, and code that knows that it’s an integer.

Indeed, the less of that the better.

&gt; At some point we should use grep to come up with stats about which functions are used most often with ASSERT_NO_EXCEPTION and IGNORE_EXCEPTION.

My plan is to post just such a list to webkit-dev once this set of patches seems more or less finished.

I&apos;ve broken jsbell@&apos;s comments out into https://bugs.webkit.org/show_bug.cgi?id=109143; I&apos;ll take care of that once this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827099</commentid>
    <comment_count>14</comment_count>
      <attachid>187004</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-07 00:20:20 -0800</bug_when>
    <thetext>Created attachment 187004
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827481</commentid>
    <comment_count>15</comment_count>
      <attachid>187004</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 07:15:42 -0800</bug_when>
    <thetext>Comment on attachment 187004
Patch for landing

Clearing flags on attachment: 187004

Committed r142118: &lt;http://trac.webkit.org/changeset/142118&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827482</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 07:15:48 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827540</commentid>
    <comment_count>17</comment_count>
    <who name="Gavin Peters">gavinp</who>
    <bug_when>2013-02-07 08:24:29 -0800</bug_when>
    <thetext>Reverted r142118 for reason:

Broke SVG! Oh noes!

Committed r142126: &lt;http://trac.webkit.org/changeset/142126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827640</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-02-07 09:57:25 -0800</bug_when>
    <thetext>Sample test run: &lt;http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r142124%20(5307)/results.html&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827685</commentid>
    <comment_count>19</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-07 10:47:28 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Sample test run: &lt;http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r142124%20(5307)/results.html&gt;.

Thanks ap. I can replicate these locally, though I&apos;m not at all sure why they occur. I&apos;ll poke at it tomorrow morning, but I&apos;ll probably end up splitting the IDB and SVG portions out into separate patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827695</commentid>
    <comment_count>20</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-02-07 10:55:07 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Sample test run: &lt;http://build.webkit.org/results/Apple%20MountainLion%20Debug%20WK1%20(Tests)/r142124%20(5307)/results.html&gt;.
&gt; 
&gt; Thanks ap. I can replicate these locally, though I&apos;m not at all sure why they occur. I&apos;ll poke at it tomorrow morning, but I&apos;ll probably end up splitting the IDB and SVG portions out into separate patches.

A few possibilities I could see:
- The calling object is an element in an array passed by reference. Maybe something odd happens
- More likely, the mess of template code that exists in SVG animations may be interfering with the changes you made.
- Or, the method to which you are passing the ASSERT_NO_EXCEPTIONS parameter is not designed to handle it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828297</commentid>
    <comment_count>21</comment_count>
      <attachid>187259</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 00:51:18 -0800</bug_when>
    <thetext>Created attachment 187259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828300</commentid>
    <comment_count>22</comment_count>
      <attachid>187259</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 00:53:26 -0800</bug_when>
    <thetext>Comment on attachment 187259
Patch

I&apos;ve dropped IDB and SVG from this patch, and the tests pass locally. I&apos;ll take another stab at them in https://bugs.webkit.org/show_bug.cgi?id=109266 and https://bugs.webkit.org/show_bug.cgi?id=109267 respectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828315</commentid>
    <comment_count>23</comment_count>
      <attachid>187259</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 01:14:29 -0800</bug_when>
    <thetext>Comment on attachment 187259
Patch

Clearing flags on attachment: 187259

Committed r142247: &lt;http://trac.webkit.org/changeset/142247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828316</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-08 01:14:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828460</commentid>
    <comment_count>25</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-02-08 05:20:04 -0800</bug_when>
    <thetext>*** Bug 108772 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186839</attachid>
            <date>2013-02-06 06:09:55 -0800</date>
            <delta_ts>2013-02-06 06:21:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109044-20130206150631.patch</filename>
            <type>text/plain</type>
            <size>57864</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uM2NhZDhmNjU3YjVmNzQyZTNkYzgwMmRkNWY0MmVh
NTVkMTQzY2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMy0wMi0wNiAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgRXhjZXB0aW9u
Q29kZSBhc3NlcnRpb25zIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTiBtYWNyby4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYXR0ZXJuOgorCisg
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1ldGhvZFRoYXRH
ZW5lcmF0ZXNFeGNlcHRpb24oZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisKKyAgICAg
ICAgaXMgbW9yZSBjbGVhcmx5IGFuZCBzdWNjaW5jdGx5IHdyaXR0ZW4gYXM6CisKKyAgICAgICAg
ICAgIG1ldGhvZFRoYXRHZW5lcmF0ZXNFeGNlcHRpb24oQVNTRVJUX05PX0VYQ0VQVElPTik7CisK
KyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgb2NjdXJhbmNlcyBvZiB0aGUgZm9ybWVy
IHRoYXQgbmV2ZXIgdG91Y2ggJ2VjJworICAgICAgICBhZ2FpbiB3aXRoIHRoZSBsYXR0ZXIuIEl0
IGRvZXMgdGhlIHNhbWUgZm9yICdBU1NFUlQoZWMgPT0gMCk7JyAoYW5kLCBhcworICAgICAgICBh
IGRyaXZlLWJ5LCByZXBsYWNlcyAnQVNTRVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScg
aW4gcGxhY2VzCisgICAgICAgIHdoZXJlIGl0IGRvZXMgaW5kZWVkIG1hdHRlciB0aGF0ICdlYycg
Z2V0IHNldCBwcm9wZXJseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc2hvdWxk
IHJlc3VsdCBmcm9tIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZU5hbWUp
OgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dDo6ZGlzZW50YW5nbGVQb3J0cyk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRp
b25VSSk6CisgICAgICAgICAgICBSZXBsYWNlZCBpbmxpbmUgQVNTRVJUIHdpdGggQVNTRVJUX05P
X0VYQ0VQVElPTi4KKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNo
b3cpOgorICAgICAgICAgICAgUmVwbGFjZWQgJ0FTU0VSVChlYyA9PSAwKScgd2l0aCAnQVNTRVJU
KCFlYyknIHRvIG1hdGNoIHRoZSBzdHlsZSBndWlkZS4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pb25ET01SYW5nZXMpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3dhcEluTm9kZVByZXNlcnZpbmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydE5vZGVCZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlc3RvcmVBbmRSZW1v
dmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjppbnNlcnRBc0xpc3RJdGVtcyk6CisgICAgICAgICogZWRpdGlu
Zy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGxpdFRleHRO
b2RlQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sbGFwc2VkVG9Cb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9o
dG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFuRWxlbWVudCk6
CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9u
dEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyaW1GcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXBXaXRoQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQ29udGFpbmVyRnJvbVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKToKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgICAgIFJlcGxhY2VkIGlubGluZSBBU1NFUlQgd2l0aCBB
U1NFUlRfTk9fRVhDRVBUSU9OLgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkKToKKyAg
ICAgICAgICAgIFJlcGxhY2VkICdBU1NFUlQoZWMgPT0gMCknIHdpdGggJ0FTU0VSVCghZWMpJyB0
byBtYXRjaCB0aGUgc3R5bGUgZ3VpZGUuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBs
YWNlaG9sZGVyVGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6ZGlzcGF0Y2hET01FdmVudCk6CisgICAgICAgICogcGFnZS9ET01T
ZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpkZWxldGVGcm9t
RG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dHlsZTo6aW5pdGlhbEtlcm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6
OmluaXRpYWxTdHJva2VEYXNoT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjppbml0aWFsU3Ryb2tlV2lkdGgpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRTVkdMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6U1ZHTGVuZ3RoKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFF1YWxpZmllZE5h
bWUpOgorICAgICAgICAgICAgUmVwbGFjZWQgaW5saW5lIEFTU0VSVCB3aXRoIEFTU0VSVF9OT19F
WENFUFRJT04uCisKIDIwMTMtMDItMDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhz
IGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDc0NjUwMTMxZjlhMWRkMTlhNWY2ZmUx
MDZlNjE0MmJlNjA2YTczM2UuLmFmMmFmY2Q3YWIwZTFhNWVhMzU1MzIzY2NhZDllMDVkYzNlOTUw
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cApAQCAtOTUsOSArOTUsNyBAQCBJREJDdXJzb3I6On5JREJDdXJzb3IoKQogY29uc3QgU3RyaW5n
JiBJREJDdXJzb3I6OmRpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJz
b3I6OmRpcmVjdGlvbiIpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZGlyZWN0aW9uID0gZGlyZWN0aW9uVG9TdHJpbmcobV9kaXJlY3Rpb24sIGVj
KTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbiA9
IGRpcmVjdGlvblRvU3RyaW5nKG1fZGlyZWN0aW9uLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICByZXR1cm4gZGlyZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMzQzNjgzNDAxNzUwMzI4MTk4MWNk
ZWViMDdlMGI0YTM3MTEwMTk3MS4uNGM1OGNlM2E3NzM3NjQ3NWEyNDRjNzQ4ZjhhNDg1N2MzM2Rm
ZTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcApAQCAtMzIyLDkgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIEV2ZW50
VGFyZ2V0KiB0YXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7CiAgICAgICAgIElEQlJlcXVlc3QqIHJl
cXVlc3QgPSBzdGF0aWNfY2FzdDxJREJSZXF1ZXN0Kj4odGFyZ2V0KTsKIAotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgUmVmUHRyPElEQkFueT4gY3Vyc29yQW55ID0gcmVx
dWVzdC0+cmVzdWx0KGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIFJlZlB0cjxJ
REJBbnk+IGN1cnNvckFueSA9IHJlcXVlc3QtPnJlc3VsdChBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAgICAgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3Vyc29yOwogICAgICAgICBpZiAo
Y3Vyc29yQW55LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQogICAg
ICAgICAgICAgY3Vyc29yID0gY3Vyc29yQW55LT5pZGJDdXJzb3JXaXRoVmFsdWUoKTsKQEAgLTMz
Miw4ICszMzAsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8aW50NjRfdCwgMT4gaW5kZXhJ
ZHM7CiAgICAgICAgIGluZGV4SWRzLmFwcGVuZChtX2luZGV4TWV0YWRhdGEuaWQpOwogICAgICAg
ICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBjdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oc3Rh
dGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICAgICAgY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+KDAp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgICAgICAgICAgUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSA9IGN1cnNvci0+aWRiUHJpbWFyeUtleSgpOwogICAgICAgICAgICAgU2NyaXB0VmFs
dWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmI2MGI0ZTQ3YTRhMTIxOWJi
OGFiYWQyNmJkNDk3MWNmMTViN2IwYS4uN2E0YTljNzI5MWI1YTRjNTI2NjcwZjViODUxOGE2Mjdk
NGFiZDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcApAQCAtMTIxLDkgKzEyMSw3IEBAIElEQlRyYW5zYWN0aW9uOjp+SURC
VHJhbnNhY3Rpb24oKQogCiBjb25zdCBTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlKCkgY29u
c3QKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG1vZGUgPSBtb2RlVG9TdHJpbmcobV9tb2RlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gbW9kZVRvU3RyaW5nKG1fbW9kZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAppbmRleCAyNzdmY2EwZjczYzQ4N2JhZDdjNDg3ODEyZGFhMThhMWZmYzc4ZjM2
Li45ZGQ3YWEwZGMzZDk0YzUwMWUwM2Q4YTkzMDlkNDQyZGJlZWMxZDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDgsMTIgKzEwOCwxMCBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogICAg
IG9sZFBhcmVudC0+cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICBpZiAoY2hpbGRyZW5baV0tPmF0dGFjaGVkKCkpCiAgICAgICAg
ICAgICBjaGlsZHJlbltpXS0+ZGV0YWNoKCk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEg
bm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBhZG9wdE5vZGUuCi0gICAgICAgIFJlZlB0cjxO
b2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCks
IGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9
IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIEFTU0VSVF9OT19F
WENFUFRJT04pOwogICAgICAgICBwYXJzZXJBcHBlbmRDaGlsZChjaGlsZC5nZXQoKSk7CiAgICAg
ICAgIC8vIEZJWE1FOiBUb2dldGhlciB3aXRoIGFkb3B0Tm9kZSBhYm92ZSwgdGhlIHRyZWUgc2Nv
cGUgbWlnaHQgZ2V0IHVwZGF0ZWQgcmVjdXJzaXZlbHkgdHdpY2UKICAgICAgICAgLy8gKGlmIHRo
ZSBkb2N1bWVudCBjaGFuZ2VkIG9yIG9sZFBhcmVudCB3YXMgaW4gYSBzaGFkb3cgdHJlZSwgQU5E
ICp0aGlzIGlzIGluIGEgc2hhZG93IHRyZWUpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
NjIxNDc1NmJjMTQzODkzMTY5OTY0ZGVhY2ZmNzJjYWZhNzIwMzZiMi4uYTlmYmFhNWM2OTQ3OWYy
MjhhZjAwNzQwMTMwY2IxODZkNDg1ZDgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0x
NTI5LDkgKzE1MjksNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIGVsc2UgaWYgKCFtX3RpdGxlRWxlbWVudCkgewogICAgICAgICBpZiAoSFRNTEVs
ZW1lbnQqIGhlYWRFbGVtZW50ID0gaGVhZCgpKSB7CiAgICAgICAgICAgICBtX3RpdGxlRWxlbWVu
dCA9IGNyZWF0ZUVsZW1lbnQodGl0bGVUYWcsIGZhbHNlKTsKLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGl0
bGVFbGVtZW50LCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIGhl
YWRFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RpdGxlRWxlbWVudCwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1MzI3YzBk
NGI2ZTFiYzUwNDQ0ZDY3YWY1MmZhOWNhY2VlZDExMzFiLi5hMDY5ZTU3ZjdjMDEzOTFmNjQ3ZDdj
M2ZkMjk4NWE3YWMxOTFmNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzQyLDkgKzE3
NDIsOCBAQCBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0
ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiBib29sIEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
TmFtZShRdWFsaWZpZWROYW1lJiBvdXQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBpZiAoIURvY3VtZW50OjpwYXJz
ZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKKyAg
ICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4
LCBsb2NhbE5hbWUsIEFTU0VSVF9OT19FWENFUFRJT04pKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgQVNTRVJUKCFlYyk7CiAKICAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9j
YWxOYW1lLCBuYW1lc3BhY2VVUkkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRl
eCA5NWM1YTZkMDExNzI2NGI2MTBkYmQ4MDIwMmNiYTc2YzIzMDVhZjcyLi43Y2I3MmFlYWEzZDE2
MzJlNDkxMzMxNDEzY2QwOWEzODQxZDY0OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKQEAgLTE4Niw5ICsxODYsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2Vz
KCkKICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6
OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnREYXRhLT5jaGFu
bmVscygpKTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShwb3J0cy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKIAotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBl
Yyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxl
YXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIH0KIApAQCAtMjI5LDggKzIyNyw3
IEBAIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0OjpkaXNl
bnRhbmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQCiAgICAgLy8gUGFzc2VkLWluIHBvcnRzIHBhc3Nl
ZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiBkaXNlbnRhbmdsZSB0aGVtLgogICAgIE93blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5KHBvcnRzLT5zaXplKCkpKTsKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMCA7IGkgPCBwb3J0cy0+c2l6ZSgpIDsgKytpKSB7Ci0gICAgICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUoZWMpOwot
ICAgICAgICBBU1NFUlQoIWVjKTsgLy8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYg
cGFzc2VkIGFib3ZlIGNoZWNrcy4KKyAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
Y2hhbm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsg
Ly8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYgcGFzc2VkIGFib3ZlIGNoZWNrcy4K
ICAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0gY2hhbm5lbC5yZWxlYXNlKCk7CiAgICAgfQogICAg
IHJldHVybiBwb3J0QXJyYXkucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggYzBkYTI0NjkyMmUyNGY1MGI5MjIw
NjViMWRhYWQ3ODYwYTlmM2NkNi4uOTBkMjUzZTgxYzg4MTk3ZDNhYTAxNTk4OTIyNzQ5NWYwZmVj
ZmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIuY3BwCkBAIC0xNTUsMTAgKzE1NSw4IEBAIHN0YXRpYyBIVE1MRWxlbWVudCogZW5jbG9z
aW5nRGVsZXRhYmxlRWxlbWVudChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBOb2RlKiBjb250YWluZXIgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWlu
ZXIoZWMpOworICAgIE5vZGUqIGNvbnRhaW5lciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRh
aW5lcihBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKLSAgICBB
U1NFUlQoZWMgPT0gMCk7CiAKICAgICAvLyBUaGUgZW5jbG9zaW5nTm9kZU9mVHlwZSBmdW5jdGlv
biBvbmx5IHdvcmtzIG9uIG5vZGVzIHRoYXQgYXJlIGVkaXRhYmxlCiAgICAgLy8gKHdoaWNoIGlz
IHN0cmFuZ2UsIGdpdmVuIGl0cyBuYW1lKS4KQEAgLTIzNCw3ICsyMzIsNyBAQCB2b2lkIERlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURlbGV0aW9uVUkoKQogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChvdXRsaW5lLmdldCgpLCBlYyk7
Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIEFTU0VSVCghZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNjYsNyArMjY0LDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250
cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJKCkKICAgICBidXR0b24tPnNldENhY2hlZEltYWdlKG5l
dyBDYWNoZWRJbWFnZShidXR0b25JbWFnZS5nZXQoKSkpOwogCiAgICAgY29udGFpbmVyLT5hcHBl
bmRDaGlsZChidXR0b24uZ2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgQVNT
RVJUKCFlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICsyOTgs
NyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3coSFRNTEVsZW1lbnQqIGVsZW1l
bnQpCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX3RhcmdldC0+YXBwZW5kQ2hp
bGQobV9jb250YWluZXJFbGVtZW50LmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwor
ICAgIEFTU0VSVCghZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBoaWRlKCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDQ3
MzMyNDkzYWM5OWI1ZDE4NThkMGYzZDFmZjJiM2IzMDE0YzhlN2YuLjI1NmE1YjM1ZDE0MmI4Yzk2
ZjI2ZDhmMzM1YjgxNTk2ZTY4ODhlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcApAQCAtMjY2LDExICsyNjYsOCBAQCBzdGF0aWMgdW5zaWduZWQgdmVydGljYWxT
Y3JvbGxEaXN0YW5jZShGcmFtZSogZnJhbWUpCiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHVuaW9u
RE9NUmFuZ2VzKFJhbmdlKiBhLCBSYW5nZSogYikKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSYW5nZSogc3RhcnQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNU
QVJUX1RPX1NUQVJULCBiLCBlYykgPD0gMCA/IGEgOiBiOwotICAgIEFTU0VSVCghZWMpOwotICAg
IFJhbmdlKiBlbmQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQs
IGIsIGVjKSA8PSAwID8gYiA6IGE7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgUmFuZ2UqIHN0YXJ0
ID0gYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgYiwgQVNT
RVJUX05PX0VYQ0VQVElPTikgPD0gMCA/IGEgOiBiOworICAgIFJhbmdlKiBlbmQgPSBhLT5jb21w
YXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsIGIsIEFTU0VSVF9OT19FWENFUFRJ
T04pIDw9IDAgPyBiIDogYTsKIAogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGEtPm93bmVyRG9j
dW1lbnQoKSwgc3RhcnQtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFydE9mZnNldCgpLCBl
bmQtPmVuZENvbnRhaW5lcigpLCBlbmQtPmVuZE9mZnNldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXgg
ODcxMjMwNDA5NTFlZjlhMmE5YjFkYjEwOGY3YTI3YTExMTU1YzRmNy4uZjUwN2QyODg2ODJiZjc4
M2I0YmIzZTZkOTRiYjBiNDI0NzVkZGEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTUxLDIzICs1MSwxOCBA
QCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQo
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZQogc3RhdGljIHZvaWQgc3dhcEluTm9kZVByZXNlcnZp
bmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oSFRNTEVsZW1lbnQqIG5ld05vZGUsIEhUTUxFbGVtZW50
KiBub2RlVG9SZXBsYWNlKQogewogICAgIEFTU0VSVChub2RlVG9SZXBsYWNlLT5pbkRvY3VtZW50
KCkpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxDb250YWluZXJOb2Rl
PiBwYXJlbnROb2RlID0gbm9kZVRvUmVwbGFjZS0+cGFyZW50Tm9kZSgpOwotICAgIHBhcmVudE5v
ZGUtPmluc2VydEJlZm9yZShuZXdOb2RlLCBub2RlVG9SZXBsYWNlLCBlYyk7Ci0gICAgQVNTRVJU
KCFlYyk7CisgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld05vZGUsIG5vZGVUb1JlcGxh
Y2UsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKICAg
ICBnZXRDaGlsZE5vZGVzKG5vZGVUb1JlcGxhY2UsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG5ld05vZGUtPmFw
cGVuZENoaWxkKGNoaWxkcmVuW2ldLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0K
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAg
ICBuZXdOb2RlLT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAKICAgICAvLyBGSVhNRTogRml4IHRoaXMgdG8gc2VuZCB0aGUgcHJvcGVyIE11dGF0aW9uUmVj
b3JkcyB3aGVuIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBwcmVzZW50LgogICAgIG5ld05vZGUtPmNs
b25lRGF0YUZyb21FbGVtZW50KCpub2RlVG9SZXBsYWNlKTsKIAotICAgIHBhcmVudE5vZGUtPnJl
bW92ZUNoaWxkKG5vZGVUb1JlcGxhY2UsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBwYXJl
bnROb2RlLT5yZW1vdmVDaGlsZChub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
IH0KIAogdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9BcHBseSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDRhZGU2OGFhOGNmMDc2NmQyYzhkOGY1NjNjNGJjNzNmNDNhMjgxYjIuLmE5NGViMTBjY2ZjN2E1
NWYxNThiNGYwZjZhZTdiOGY3NTIyYTk1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xODEsOSArMTgxLDcgQEAgUmVw
bGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQs
IERvY3VtZW50RnJhZ21lbnQqIGYKIAogICAgIC8vIEdpdmUgdGhlIHJvb3QgYSBjaGFuY2UgdG8g
Y2hhbmdlIHRoZSB0ZXh0LgogICAgIFJlZlB0cjxCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudD4gZXZ0
ID0gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OmNyZWF0ZSh0ZXh0KTsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBlZGl0YWJsZVJvb3QtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7Ci0g
ICAgQVNTRVJUKGVjID09IDApOworICAgIGVkaXRhYmxlUm9vdC0+ZGlzcGF0Y2hFdmVudChldnQs
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmICh0ZXh0ICE9IGV2dC0+dGV4dCgpIHx8ICFl
ZGl0YWJsZVJvb3QtPnJlbmRlcmVySXNSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIHJlc3Rv
cmVBbmRSZW1vdmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KGhvbGRlci5nZXQoKSk7CiAK
QEAgLTIzNCw5ICsyMzIsNyBAQCB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGUo
UGFzc1JlZlB0cjxOb2RlPiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcGFyZW50LT5yZW1vdmVDaGls
ZChub2RlLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIHBhcmVudC0+cmVt
b3ZlQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgUmVw
bGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0Tm9kZUJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUs
IE5vZGUqIHJlZk5vZGUpCkBAIC0yNDgsMjMgKzI0NCwxNSBAQCB2b2lkIFJlcGxhY2VtZW50RnJh
Z21lbnQ6Omluc2VydE5vZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBOb2RlKiByZWZO
b2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5v
ZGUsIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUo
bm9kZSwgcmVmTm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIFBhc3NSZWZQdHI8U3R5
bGVkRWxlbWVudD4gUmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVu
ZGVyaW5nKE5vZGUqIHJvb3RFZGl0YWJsZUVsZW1lbnQpCiB7CiAgICAgUmVmUHRyPFN0eWxlZEVs
ZW1lbnQ+IGhvbGRlciA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KG1fZG9jdW1lbnQu
Z2V0KCkpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgaG9sZGVyLT5h
cHBlbmRDaGlsZChtX2ZyYWdtZW50LCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwotCi0gICAg
cm9vdEVkaXRhYmxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoaG9sZGVyLmdldCgpLCBlYyk7Ci0gICAg
QVNTRVJUKGVjID09IDApOwogCisgICAgaG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByb290RWRpdGFibGVFbGVtZW50LT5hcHBlbmRDaGls
ZChob2xkZXIuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgcmV0dXJuIGhvbGRl
ci5yZWxlYXNlKCk7CkBAIC0yNzUsMTIgKzI2Myw5IEBAIHZvaWQgUmVwbGFjZW1lbnRGcmFnbWVu
dDo6cmVzdG9yZUFuZFJlbW92ZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoU3R5bGVkRWxl
CiAgICAgaWYgKCFob2xkZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IG5vZGUgPSBob2xkZXItPmZpcnN0
Q2hpbGQoKSkgewotICAgICAgICBob2xkZXItPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIGVjKTsK
LSAgICAgICAgQVNTRVJUKGVjID09IDApOwotICAgICAgICBtX2ZyYWdtZW50LT5hcHBlbmRDaGls
ZChub2RlLmdldCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgaG9s
ZGVyLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgbV9mcmFnbWVudC0+YXBwZW5kQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgfQogCiAgICAgcmVtb3ZlTm9kZShob2xkZXIpOwpAQCAtMTMxOCw5ICsxMzAzLDcg
QEAgTm9kZSogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydEFzTGlzdEl0ZW1zKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IHBycExpc3QKICAgICB9CiAKICAgICB3aGlsZSAoUmVmUHRyPE5v
ZGU+IGxpc3RJdGVtID0gbGlzdEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbGlzdEVsZW1lbnQtPnJlbW92ZUNoaWxkKGxpc3RJ
dGVtLmdldCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBsaXN0RWxlbWVu
dC0+cmVtb3ZlQ2hpbGQobGlzdEl0ZW0uZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAg
ICAgICBpZiAoaXNTdGFydCB8fCBpc01pZGRsZSkgewogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJl
Zm9yZShsaXN0SXRlbSwgbGFzdE5vZGUpOwogICAgICAgICAgICAgaW5zZXJ0ZWROb2Rlcy5yZXNw
b25kVG9Ob2RlSW5zZXJ0aW9uKGxpc3RJdGVtLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKaW5kZXggMGVlY2E2YWRmNDA3NDY4YzNi
OTY0ODI2YWY3OTRjZGU5MTkxYjk4OC4uY2YwN2RmMzc2ZTI3MDEwNmUzZTIzYWFiNGExZTZhODY3
NTYzZjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAKQEAgLTc1LDEyICs3NSwxMCBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpk
b1VuYXBwbHkoKQogCiAgICAgU3RyaW5nIHByZWZpeFRleHQgPSBtX3RleHQxLT5kYXRhKCk7CiAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtX3RleHQyLT5pbnNlcnREYXRhKDAsIHBy
ZWZpeFRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBtX3RleHQyLT5pbnNlcnREYXRh
KDAsIHByZWZpeFRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgZG9jdW1lbnQoKS0+
bWFya2VycygpLT5jb3B5TWFya2VycyhtX3RleHQxLmdldCgpLCAwLCBwcmVmaXhUZXh0Lmxlbmd0
aCgpLCBtX3RleHQyLmdldCgpLCAwKTsKLSAgICBtX3RleHQxLT5yZW1vdmUoZWMpOworICAgIG1f
dGV4dDEtPnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBTcGxpdFRleHRO
b2RlQ29tbWFuZDo6ZG9SZWFwcGx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAppbmRleCBiNmIwMDFiN2QwMjFhNWJlOGRlNzliNjE1Y2FmZGY3MDFiZWVjNzAxLi5lMmIx
ZTJlNjIzMmFmYWRlZTlmMmE3NTlkZjQwOTNjNjlkMTI2ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNDE4LDEwICsxNDE4LDggQEAgUGFzc1JlZlB0cjxS
YW5nZT4gQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKICAgICAgICAgICAgIE5vZGUq
IG4gPSByLT5zdGFydENvbnRhaW5lcigpOwogICAgICAgICAgICAgQVNTRVJUKG4gPT0gci0+ZW5k
Q29udGFpbmVyKCkpOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHItPnN0YXJ0T2Zmc2V0KCkg
KyBtX3J1bk9mZnNldDsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0LCBlYyk7Ci0gICAgICAgICAgICByLT5zZXRFbmQo
biwgb2Zmc2V0ICsgMSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAg
ICByLT5zZXRTdGFydChuLCBvZmZzZXQsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAg
ICAgci0+c2V0RW5kKG4sIG9mZnNldCArIDEsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiByLnJlbGVhc2UoKTsKQEAgLTE1MjYsMTAgKzE1MjQsOCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBj
b25zdAogICAgICAgICAgICAgTm9kZSogbiA9IHItPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAg
ICAgICBBU1NFUlQobiA9PSByLT5lbmRDb250YWluZXIoKSk7CiAgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gci0+ZW5kT2Zmc2V0KCkgLSBtX3J1bk9mZnNldDsKLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0IC0gMSwgZWMp
OwotICAgICAgICAgICAgci0+c2V0RW5kKG4sIG9mZnNldCwgZWMpOwotICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CisgICAgICAgICAgICByLT5zZXRTdGFydChuLCBvZmZzZXQgLSAxLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIHItPnNldEVuZChuLCBvZmZzZXQsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByLnJlbGVhc2UoKTsK
QEAgLTI0NDAsMTEgKzI0MzYsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLAogICAgIGlmIChy
YW5nZUxvY2F0aW9uID09IDAgJiYgcmFuZ2VMZW5ndGggPT0gMCAmJiBpdC5hdEVuZCgpKSB7CiAg
ICAgICAgIHRleHRSdW5SYW5nZSA9IGl0LnJhbmdlKCk7CiAgICAgICAgIAotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5S
YW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAg
ICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IDAsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRT
dGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIEFTU0VSVF9OT19FWENFUFRJ
T04pOworICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gcmVzdWx0UmFuZ2UucmVsZWFzZSgpOwogICAgIH0KQEAgLTI0NjYsMTcgKzI0NTksMTIgQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBpdC5yYW5nZSgpOwotICAgICAgICAgICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRF
bmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpLCBlYyk7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgICAgICAgICB0ZXh0
UnVuUmFuZ2UtPnNldEVuZChyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zm
c2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4dFJ1blJhbmdlLT5zdGFy
dFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2li
bGVQb3NpdGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1
blJhbmdlLT5zZXRFbmQocnVuRW5kLmNvbnRhaW5lck5vZGUoKSwgcnVuRW5kLmNvbXB1dGVPZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ1
bkVuZC5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+
c2V0RW5kKHJ1bkVuZC5jb250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjU5OCwxMSArMjU4Niw4IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZykK
IAogc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbGxhcHNlZFRvQm91bmRhcnkoY29uc3QgUmFu
Z2UqIHJhbmdlLCBib29sIGZvcndhcmQpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByZXN1bHQgPSByYW5nZS0+Y2xvbmVSYW5nZShlYyk7Ci0gICAgQVNT
RVJUKCFlYyk7Ci0gICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCwgZWMpOwotICAgIEFTU0VS
VCghZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0ID0gcmFuZ2UtPmNsb25lUmFuZ2UoQVNT
RVJUX05PX0VYQ0VQVElPTik7CisgICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggOTZlZjg2MzM1YTUxNGNmMjc0NzI0
NzQ5Y2JmY2UzMTJjZWQ4MmE3Yy4uMTlmYjNmMjA5NzBhYThhMzIwM2ZmNDUxOGI4YjU4MmIzNGJj
MjhhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTkzOSw5ICs5
MzksNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiBwcgogICAgIGlmICghdGFiVGV4dE5vZGUpCiAg
ICAgICAgIHRhYlRleHROb2RlID0gZG9jdW1lbnQtPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiXHQi
KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNwYW5FbGVtZW50LT5hcHBlbmRD
aGlsZCh0YWJUZXh0Tm9kZS5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Cisg
ICAgc3BhbkVsZW1lbnQtPmFwcGVuZENoaWxkKHRhYlRleHROb2RlLnJlbGVhc2UoKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAKICAgICByZXR1cm4gc3BhbkVsZW1lbnQucmVsZWFzZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDAzN2U0OGFjOTE5OTg1
OTllNWRjNzcxYmQ5YjgzNjU3NDdiYjU1Y2QuLjhjMzM1NWFkMzEyYTVkYjlmMDRhNWZmNTI0Nzdk
N2U4NWEzZTFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAg
LTE1MywxMSArMTUzLDggQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEVkaXRvcjo6Zm9udEZvclNl
bGVjdGlvbihib29sJiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgICAgICBpZiAoc3R5bGUp
CiAgICAgICAgICAgICByZXN1bHQgPSBzdHlsZS0+Zm9udCgpLnByaW1hcnlGb250KCk7CiAKLSAg
ICAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
LSAgICAgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgICAgIEFTU0VS
VCghZWMpOwotICAgICAgICB9CisgICAgICAgIGlmIChub2RlVG9SZW1vdmUpCisgICAgICAgICAg
ICBub2RlVG9SZW1vdmUtPnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MiwxMSArMjM5LDggQEAgTlNEaWN0aW9uYXJ5KiBF
ZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIGlmIChk
ZWNvcmF0aW9uICYgVU5ERVJMSU5FKQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMp
OwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgfQorICAgIGlmIChub2RlVG9SZW1vdmUp
CisgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxMmZi
Y2RhYjlmMzU3NzYxMGQyNjdmZTRkYTcyMjkxOTNhZjkyY2RmLi5mMjBjNWZiNGQ5YmI4YzQ1MjNj
NGVkMGUyZThmNThmZmJlMTQyOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC01
NjQsMTMgKzU2NCwxMCBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwg
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogICAgIGlmIChkZWxldGVC
dXR0b24pCiAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZGlzYWJsZSgpOwogCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVkUmFuZ2UtPmNvbGxhcHNl
ZChlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVkUmFu
Z2UtPmNvbGxhcHNlZChBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBpZiAoY29sbGFwc2VkKQog
ICAgICAgICByZXR1cm4gIiI7Ci0gICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFu
Z2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBO
b2RlKiBjb21tb25BbmNlc3RvciA9IHVwZGF0ZWRSYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWlu
ZXIoQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAg
ICAgcmV0dXJuICIiOwogCkBAIC01OTgsMTQgKzU5NSwxMSBAQCBTdHJpbmcgY3JlYXRlTWFya3Vw
KGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvcklu
dGVyYwogICAgICAgICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5l
U3RyaW5nKTsKICAgICAgICAgc3RhcnROb2RlID0gdmlzaWJsZVN0YXJ0Lm5leHQoKS5kZWVwRXF1
aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIGlmIChwYXN0RW5kICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMo
c3RhcnROb2RlLCAwLCBwYXN0RW5kLCAwLCBlYykgPj0gMCkgewotICAgICAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgIGlmIChwYXN0RW5kICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2lu
dHMoc3RhcnROb2RlLCAwLCBwYXN0RW5kLCAwLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSA+PSAwKSB7
CiAgICAgICAgICAgICBpZiAoZGVsZXRlQnV0dG9uKQogICAgICAgICAgICAgICAgIGRlbGV0ZUJ1
dHRvbi0+ZW5hYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJjaGFuZ2VOZXdsaW5lU3Ry
aW5nOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIAogICAgIE5vZGUq
IGxhc3RDbG9zZWQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcyhzdGFydE5vZGUsIHBhc3RF
bmQpOwpAQCAtNjkzLDcgKzY4Nyw2IEBAIHN0YXRpYyBib29sIGZpbmROb2Rlc1N1cnJvdW5kaW5n
Q29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIFJlZlB0cjxOb2RlPiYgbm9kZUJlCiAKIHN0YXRp
YyB2b2lkIHRyaW1GcmFnbWVudChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgTm9kZSogbm9k
ZUJlZm9yZUNvbnRleHQsIE5vZGUqIG5vZGVBZnRlckNvbnRleHQpCiB7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPE5vZGU+IG5leHQ7CiAgICAgZm9yIChSZWZQdHI8Tm9k
ZT4gbm9kZSA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBuZXh0KSB7CiAg
ICAgICAgIGlmIChub2RlQmVmb3JlQ29udGV4dC0+aXNEZXNjZW5kYW50T2Yobm9kZS5nZXQoKSkp
IHsKQEAgLTcwMiw3ICs2OTUsNyBAQCBzdGF0aWMgdm9pZCB0cmltRnJhZ21lbnQoRG9jdW1lbnRG
cmFnbWVudCogZnJhZ21lbnQsIE5vZGUqIG5vZGVCZWZvcmVDb250ZXh0LCBObwogICAgICAgICB9
CiAgICAgICAgIG5leHQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihub2Rl
LmdldCgpKTsKICAgICAgICAgQVNTRVJUKCFub2RlLT5jb250YWlucyhub2RlQWZ0ZXJDb250ZXh0
KSk7Ci0gICAgICAgIG5vZGUtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwg
ZWMpOworICAgICAgICBub2RlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBpZiAobm9kZUJlZm9yZUNvbnRleHQgPT0g
bm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTcxMCw4ICs3MDMsNyBAQCBzdGF0
aWMgdm9pZCB0cmltRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIE5vZGUqIG5v
ZGVCZWZvcmVDb250ZXh0LCBObwogICAgIEFTU0VSVChub2RlQWZ0ZXJDb250ZXh0LT5wYXJlbnRO
b2RlKCkpOwogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBub2RlQWZ0ZXJDb250ZXh0OyBu
b2RlOyBub2RlID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNr
aXBwaW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7Ci0gICAgICAgIG5vZGUtPnBhcmVudE5vZGUoKS0+
cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAg
ICAgbm9kZS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB9CiB9CiAKQEAgLTc0MSwxOSArNzMzLDE2IEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9j
dW1lbnQqIGRvY3VtCiAgICAgICAgIHBvc2l0aW9uQWZ0ZXJOb2RlKG5vZGVCZWZvcmVDb250ZXh0
LmdldCgpKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwKICAgICAgICAgcG9zaXRpb25CZWZv
cmVOb2RlKG5vZGVBZnRlckNvbnRleHQuZ2V0KCkpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9y
ID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoIWVjKTsK
KyAgICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5l
cihBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5jZXN0b3Ig
PSBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZVdpdGhOb1JlbmRlcmVyKGNv
bW1vbkFuY2VzdG9yKTsKIAogICAgIC8vIFdoZW4gdGhlcmUncyBhIHNwZWNpYWwgY29tbW9uIGFu
Y2VzdG9yIG91dHNpZGUgb2YgdGhlIGZyYWdtZW50LCB3ZSBtdXN0IGluY2x1ZGUgaXQgYXMgd2Vs
bCB0bwogICAgIC8vIHByZXNlcnZlIHRoZSBzdHJ1Y3R1cmUgYW5kIGFwcGVhcmFuY2Ugb2YgdGhl
IGZyYWdtZW50LiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZyYWdtZW50IGNvbnRhaW5zCiAgICAgLy8g
VEQsIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgZW5jbG9zaW5nIFRBQkxFIHRhZyBhcyB3ZWxsLgog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgaWYgKHNwZWNpYWxDb21tb25BbmNlc3RvcikgewotICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoc3BlY2lhbENvbW1vbkFuY2VzdG9yLCBlYyk7Ci0g
ICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0gZWxzZQorICAgIGlmIChzcGVjaWFsQ29tbW9uQW5j
ZXN0b3IpCisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChzcGVjaWFsQ29tbW9uQW5jZXN0
b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGVsc2UKICAgICAgICAgZnJhZ21lbnQtPnRh
a2VBbGxDaGlsZHJlbkZyb20oc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KGNvbW1vbkFuY2Vz
dG9yKSk7CiAKICAgICB0cmltRnJhZ21lbnQoZnJhZ21lbnQuZ2V0KCksIG5vZGVCZWZvcmVDb250
ZXh0LmdldCgpLCBub2RlQWZ0ZXJDb250ZXh0LmdldCgpKTsKQEAgLTc4MSwxMCArNzcwLDggQEAg
c3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdy
YXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJh
Z3JhcGgtPmRvY3VtZW50KCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAo
c3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0
ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KSwgZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKKyAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9s
ZGVyRWxlbWVudChkb2N1bWVudCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04MDEsMjQgKzc4OCwyMCBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFp
bmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3Ry
aQogICAgICAgICAvLyBhcHBlbmQgdGhlIG5vbi10YWIgdGV4dHVhbCBwYXJ0CiAgICAgICAgIGlm
ICghcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmICghdGFiVGV4dC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVt
ZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghZWMp
OworICAgICAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVs
ZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAg
ICAgICAgICB0YWJUZXh0ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJp
bmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMp
KTsKLSAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQodGV4dE5vZGUucmVsZWFzZSgp
LCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC0+
YXBwZW5kQ2hpbGQodGV4dE5vZGUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIHRoZXJlIGlzIGEgdGFiIGFmdGVyIGV2ZXJ5IGVudHJ5LCBl
eGNlcHQgdGhlIGxhc3QgZW50cnkKICAgICAgICAgLy8gKGlmIHRoZSBsYXN0IGNoYXJhY3RlciBp
cyBhIHRhYiwgdGhlIGxpc3QgZ2V0cyBhbiBleHRyYSBlbXB0eSBlbnRyeSkKICAgICAgICAgaWYg
KGkgKyAxICE9IG51bUVudHJpZXMpCiAgICAgICAgICAgICB0YWJUZXh0LmFwcGVuZCgnXHQnKTsK
LSAgICAgICAgZWxzZSBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwYXJh
Z3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgCisg
ICAgICAgIGVsc2UgaWYgKCF0YWJUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhcmFncmFw
aC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKwogICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgIH0KIH0K
QEAgLTg1NiwxNiArODM5LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgc3RyaW5n
LnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKICAgICBzdHJpbmcucmVwbGFjZSgnXHInLCAnXG4nKTsK
IAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5z
dHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hp
bGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZyksIGVjKTsKLSAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4
dE5vZGUoc3RyaW5nKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChzdHJpbmcu
ZW5kc1dpdGgoJ1xuJykpIHsKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0g
Y3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAK
LSAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMp
OwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiAgICAgfQpAQCAtOTA3LDggKzg4
Nyw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGZp
bGxDb250YWluZXJGcm9tU3RyaW5nKGVsZW1lbnQuZ2V0KCksIHMpOwogICAgICAgICB9Ci0gICAg
ICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVs
ZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKIH0KQEAgLTkyNCwxNCArOTAzLDExIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMoRG9jdW1lbnQgKmRvY3VtZW50LCBjb25z
dCBWCiAKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgc2l6ZV90IHNpemUgPSBub2Rlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVE
ZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPmFwcGVu
ZENoaWxkKG5vZGVzW2ldLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFz
ZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IDQ5MDYzYjM0
OGNlMmZiNzY4ZTA5YjQ2NDVhMGRmNjBmNmE0NDUzMmYuLjA3ZmExYmJhZjE3Mjc4YzNkZTkxNjE4
YjQwNmExODJmMGY1NDliYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
CkBAIC0xMjYsMTEgKzEyNiw4IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUoKQogICAgIHdyYXBwZXJFbGVtZW50LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Vi
a2l0LWNvbG9yLXN3YXRjaC13cmFwcGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY29sb3JTd2F0Y2ggPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRjaC0+c2V0UHNldWRvKEF0
b21pY1N0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlckVs
ZW1lbnQtPmFwcGVuZENoaWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgZWMpOwotICAgIEFTU0VS
VCghZWMpOwotICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZCh3cmFwcGVyRWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICB3
cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoY29sb3JTd2F0Y2gucmVsZWFzZSgpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBw
ZW5kQ2hpbGQod3JhcHBlckVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAKICAgICB1cGRhdGVDb2xvclN3YXRjaCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IGQ3YzI2N2JhMTdiNzk3MGQ2ZmEyYzQ3
YTA3ZjQzMTc1YjUyZThiOGIuLmYyOTQyYTI4M2I1NDNkM2U5OGNjMDg4N2VmNmY0ZGUxNTgxMTM2
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChQYXNzUmVm
UHRyPEhUTUxPcHRpb25FbGVtZW50PiBlbGVtZW50LCBpbnQgaW5kZXgKICAgICBlbHNlCiAgICAg
ICAgIHNlbGVjdC0+YWRkKG5ld09wdGlvbiwgc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQq
PihpdGVtKGluZGV4KSksIGVjKTsKIAotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQo
IWVjKTsKIH0KIAogdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZShpbnQgaW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA3NjE4
YTMzZjEyMjg0ZjgwMDg2ZDI3ZTM1MTA0ZTE4MDIwN2NlMGUzLi5iZmZmNGJmNjhhYTIzYmVkZGIy
ZmQwZWUwZjEwNzYzNTU1OGFiNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTUzOSwxMiArNTM5LDEwIEBAIGJvb2wgSFRNTFRleHRBcmVhRWxl
bWVudDo6bWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3QKIAogdm9pZCBIVE1MVGV4
dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFN0cmluZyBwbGFjZWhvbGRlclRleHQgPSBzdHJpcHBlZFBsYWNlaG9s
ZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+cmVt
b3ZlQ2hpbGQobV9wbGFjZWhvbGRlciwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xk
ZXIsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDExICs1NTEsOSBAQCB2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIFJlZlB0
cjxIVE1MRGl2RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7CiAg
ICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIs
IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKKyAgICAgICAgdXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFj
ZWhvbGRlciwgaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICB9Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9s
ZGVyVGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1fcGxhY2Vob2xkZXItPnNldElu
bmVyVGV4dChwbGFjZWhvbGRlclRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGZpeFBs
YWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlciwgaW5uZXJUZXh0RWxlbWVudCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCA2MmY0YTE2MmZjZTMxYzk4NWEzMzQ1Nzk5MDE1ODU4ZjNjMTAwMGExLi45NzM5
NTIzNGFhMzBlOTJmOGEyYWMyMjcxMWY5Y2ZjMTVmNDM3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMzUwLDEyICsz
NTAsOSBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcAogICAgIFBvc2l0aW9uIGluZGV4UG9zaXRp
b24gPSBwb3MuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAg
ICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGluZGV4UG9zaXRpb24pICE9IHRoaXMpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGluZGV4UG9zaXRpb24uZG9jdW1lbnQoKSk7Ci0g
ICAgcmFuZ2UtPnNldFN0YXJ0KGlubmVyVGV4dEVsZW1lbnQoKSwgMCwgZWMpOwotICAgIEFTU0VS
VCghZWMpOwotICAgIHJhbmdlLT5zZXRFbmQoaW5kZXhQb3NpdGlvbi5jb250YWluZXJOb2RlKCks
IGluZGV4UG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCksIGVjKTsKLSAgICBBU1NFUlQo
IWVjKTsKKyAgICByYW5nZS0+c2V0U3RhcnQoaW5uZXJUZXh0RWxlbWVudCgpLCAwLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24uY29udGFpbmVy
Tm9kZSgpLCBpbmRleFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5n
ZXQoKSk7CiB9CiAKQEAgLTUzOSwxNCArNTM2LDEwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IGlmICh0ZXh0SXNDaGFuZ2VkICYmIGRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKSAmJiBBWE9iamVj
dENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6OkFY
VmFsdWVDaGFuZ2VkLCBmYWxzZSk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+c2V0SW5uZXJUZXh0KHZhbHVlLCBlYyk7Ci0gICAg
ICAgIEFTU0VSVCghZWMpOworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4
dCh2YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKHZhbHVlLmVuZHNX
aXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKSB7Ci0gICAgICAgICAgICBpbm5lclRl
eHRFbGVtZW50KCktPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgp
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKQorICAgICAgICAg
ICAgaW5uZXJUZXh0RWxlbWVudCgpLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIAogICAgIHNldEZvcm1D
b250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggMDJlZjJkNTYyNDYyNDg3ZDM2MzgwMzRhNmQ3NWZm
ODBhY2YyM2Y3Mi4uNThmMmFhNGU1YzQ4ZGY4MmE1ZWE4YWJiMTY4MTE2NGI1MWQ2MTgwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNDA2LDEyICs0
MDYsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgp
CiB7CiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxl
bWVudCgpLT5zdHJpcHBlZFBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgICAgIG1f
cGxhY2Vob2xkZXItPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhvbGRlci5nZXQo
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBtX3BsYWNlaG9s
ZGVyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIEFTU0VS
VF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlci5jbGVhcigpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTQxOSwxMSArNDE3LDkgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9s
ZGVyKSB7CiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGVs
ZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFBzZXVkbyhB
dG9taWNTdHJpbmcoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRh
aW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwg
ZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBtX2NvbnRhaW5lciA/IG1f
Y29udGFpbmVyLT5uZXh0U2libGluZygpIDogaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGlu
ZygpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0
SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1f
cGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGVsZW1lbnQoKS0+Zml4UGxhY2Vob2xkZXJSZW5kZXJlcihtX3BsYWNlaG9s
ZGVyLmdldCgpLCBtX2NvbnRhaW5lciA/IG1fY29udGFpbmVyLmdldCgpIDogbV9pbm5lclRleHQu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmlu
ZGV4IGE2MzQzZjkyMTM0YTBjNzk0ZjQxYWJlMzUzMTkyZDVhZDNhYmJmNGYuLjM5ZDU2MjUwNGEz
NDcwYmM0NTU2ZmNiNjUxNTBiYjI0NmE5MDU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0xODMsOSArMTgzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVz
c2FnZTo6YnVpbGRCdWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgLy8g
TmVlZCB0byBmb3JjZSBwb3NpdGlvbjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRv
ZXNuJ3QgYXNzdW1lIGl0CiAgICAgLy8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhl
ZCByZW5kZXJlcnMgYXMgY2hpbGRyZW4uCiAgICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9idWJibGUuZ2V0
KCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZCht
X2J1YmJsZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgbV9lbGVtZW50LT5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihtX2VsZW1l
bnQtPmJvdW5kaW5nQm94KCksIG1fYnViYmxlLmdldCgpKTsKIApAQCAtMTkzLDEwICsxOTEsOCBA
QCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlv
bk1lc3NhZ2U+KikKICAgICBjbGlwcGVyLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBidWJibGVBcnJvdyA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKICAgICBidWJibGVBcnJvdy0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBjbGlwcGVyLT5hcHBlbmRDaGlsZChi
dWJibGVBcnJvdy5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBtX2J1YmJs
ZS0+YXBwZW5kQ2hpbGQoY2xpcHBlci5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsK
KyAgICBjbGlwcGVyLT5hcHBlbmRDaGlsZChidWJibGVBcnJvdy5yZWxlYXNlKCksIEFTU0VSVF9O
T19FWENFUFRJT04pOworICAgIG1fYnViYmxlLT5hcHBlbmRDaGlsZChjbGlwcGVyLnJlbGVhc2Uo
KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1lc3Nh
Z2UgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgbWVzc2FnZS0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggOThkODAx
Yjk4NWRjZDU4YWQ0NmY3ZTRlYWJmNzkzODAxNWU1ZmQ4OC4uYTA0MzEzNDdmMTQ5NTdiY2IwYzA3
ZWE3ODUxY2FlN2U5YjgxZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC0yOTMsMTEgKzI5Myw4IEBA
IHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHZvbHVtZSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKLSAgICBpZiAodm9sdW1l
ICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkgewotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIGVj
KTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQorICAgIGlmICh2b2x1bWUgIT0gbWVkaWFD
b250cm9sbGVyKCktPnZvbHVtZSgpKQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Vm9s
dW1lKHZvbHVtZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKG1fY2xlYXJNdXRlZE9u
VXNlckludGVyYWN0aW9uKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0TXV0ZWQoZmFs
c2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCBlNjczYTAwM2IxNzdkNTM1OTMyM2E1ODA3MTEyYjZmMWQ1Y2RmOWY3Li45NDEz
NTI3NjViY2VmZmE0MTY1NTllZmJiOWFhODQ4Y2JmYjQ0YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTQ2LDExICs1NDYsMTAg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKICAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1l
bnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXQp
LCBkb2NDb29raWVzTGlzdCk7CiAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRl
ZCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNr
aW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQ29va2ll
c0xpc3QuYXBwZW5kKGRvY3VtZW50LT5jb29raWUoZWMpKTsKKyAgICAgICAgICAgICAgICAvLwog
ICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbnMgYXJlIHRocm93biBieSBjb29raWUoKSBpbiBz
YW5kYm94ZWQgZnJhbWVzLiBUaGF0IHdvbid0IGhhcHBlbiBoZXJlCiAgICAgICAgICAgICAgICAg
Ly8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBv
ZiB0aGUgcGFnZS4KLSAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAg
ICBzdHJpbmdDb29raWVzTGlzdC5hcHBlbmQoZG9jdW1lbnQtPmNvb2tpZShBU1NFUlRfTk9fRVhD
RVBUSU9OKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29r
aWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2M2U2MzllZDczZGExN2Y2NTU1
ZDBkZjZhNmNjNmNhNTRlNjhmZmFkLi5kYWFjYjk3MDg0ZTcxMWE2ZjU4NjFhYWJiMWQyYjU0ZDAy
YjM4MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCkBAIC04NjIsOCArODYyLDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUKICAg
ICBpZiAoIXN0eWxlUnVsZSkgewogICAgICAgICAvLyBXaGF0IHdlIGp1c3QgYWRkZWQgaGFzIHRv
IGJlIGEgQ1NTU3R5bGVSdWxlIC0gd2UgY2Fubm90IGhhbmRsZSBvdGhlciB0eXBlcyBvZiBydWxl
cyB5ZXQuCiAgICAgICAgIC8vIElmIGl0IGlzIG5vdCBhIHN0eWxlIHJ1bGUsIHByZXRlbmQgd2Ug
bmV2ZXIgdG91Y2hlZCB0aGUgc3R5bGVzaGVldC4KLSAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+
ZGVsZXRlUnVsZShsYXN0UnVsZUluZGV4LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5kZWxldGVSdWxlKGxhc3RSdWxlSW5kZXgsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDUxM2YwNjZmZGU3NDI4OGQ0NWQxODhiMTIwMWM4
NWE3NGJlODFhZGQuLjE4ZmNlNjVjZjYwOTUwZjk2NDQ2NzMwZjk3NDM1ZjVmNTEzMWRlNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcApAQCAtMzA4LDE0ICszMDgsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6ZGlzcGF0Y2hET01FdmVudChFdmVudElEIGlkLCBpbnQgdG90YWwsIGludCBkb25lKQog
ewogICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCk7
Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2
ZW50OwogICAgICAgICBpZiAoaWQgPT0gUFJPR1JFU1NfRVZFTlQpCiAgICAgICAgICAgICBldmVu
dCA9IFByb2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGRvbmUsIHRvdGFsKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50VHlw
ZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRj
aEV2ZW50KGV2ZW50LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBtX2RvbUFw
cGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IGUyZDc3
MWExNWIyMjM4NGJlZjZiZDQ2ODJhYWM0ZjZhOTBmNDM1MDkuLjZkYTA0NGRhN2E5YzM1NGE4OGE4
NzVkYmJiZTZiMDg4MzZmNDEwMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
QEAgLTQzOCwxMiArNDM4LDkgQEAgdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVu
dCgpCiAgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBzZWxlY3RlZFJhbmdlLT5kZWxldGVDb250ZW50cyhlYyk7
Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2VsZWN0ZWRSYW5nZS0+ZGVsZXRlQ29udGVudHMoQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICBzZXRCYXNlQW5kRXh0ZW50KHNlbGVjdGVkUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKGVjKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSwgc2VsZWN0
ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSwg
ZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNldEJhc2VBbmRFeHRlbnQoc2VsZWN0ZWRSYW5n
ZS0+c3RhcnRDb250YWluZXIoZWMpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgpLCBzZWxl
Y3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5z
Tm9kZShjb25zdCBOb2RlKiBuLCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMTAzMjI4MzdhMjAzMjE2MDI1ZTMxOWI0Yjgz
MzUyMDk2NDQyMGJkMy4uZTE3MTY1MzQ1OTQ5YmI4YzgxMjU4Yzk5MDE2OGJmNjIyNWQ3N2U5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTcwMSw5ICs3MDEsNyBA
QCBzdGF0aWMgdm9pZCBwcmVwYXJlQ2xpcGJvYXJkRm9ySW1hZ2VEcmFnKEZyYW1lKiBzb3VyY2Us
IENsaXBib2FyZCogY2xpcGJvYXJkLCBFbAogewogICAgIGlmIChub2RlLT5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzb3VyY2UtPmRv
Y3VtZW50KCktPmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICByYW5nZS0+c2VsZWN0Tm9kZShub2RlLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMp
OworICAgICAgICByYW5nZS0+c2VsZWN0Tm9kZShub2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAgICAgc291cmNlLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsKICAgICB9CiAgICAgY2xpcGJvYXJkLT5kZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2Uobm9kZSwgIWxpbmtVUkwuaXNFbXB0eSgpID8gbGlua1VSTCA6
IGltYWdlVVJMLCBsYWJlbCwgc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IGY5M2FkZGI0OTJlZTU0M2I0MjQxMTNmMjkzZWQ5
MGVmOWRkZmEyYzQuLmM3YzU3Njg5NjBiZjg0YWI0M2NkNTIxZWMwNjdmNDkxZDVmMDVkMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAt
MTI5LDEwICsxMjksOCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dENvbnRyb2w6OnZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPD0g
MCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKGlu
bmVyVGV4dEVsZW1lbnQoKSksIERPV05TVFJFQU0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCkpOwot
ICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoaW5uZXJUZXh0RWxlbWVudCgpLCBlYyk7Ci0g
ICAgQVNTRVJUKCFlYyk7CisgICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhpbm5lclRleHRF
bGVtZW50KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0
KHJhbmdlLmdldCgpKTsKICAgICBpdC5hZHZhbmNlKGluZGV4IC0gMSk7CiAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IGJl
MGE0NzliY2YxOGEzZWZmMTY3ZWEzMzllMmM0ZWE1YTRjMDU0MDYuLjFiOGI0MmIxYzk4NzZlZjg0
ZWJmZTM1MzhiOTFmMzg4YzAzZTM1ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC05NywzNiArOTcsMjggQEAgcHVibGljOgogICAg
IHN0YXRpYyBTVkdMZW5ndGggaW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpCiAgICAgewogICAg
ICAgICBTVkdMZW5ndGggbGVuZ3RoOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwg
ZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
ICAgIHJldHVybiBsZW5ndGg7CiAgICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFs
S2VybmluZygpCiAgICAgewogICAgICAgICBTVkdMZW5ndGggbGVuZ3RoOwotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMo
TGVuZ3RoVHlwZU51bWJlciwgMCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAg
bGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgfQogCiAgICAgc3Rh
dGljIFNWR0xlbmd0aCBpbml0aWFsU3Ryb2tlRGFzaE9mZnNldCgpCiAgICAgewogICAgICAgICBT
VkdMZW5ndGggbGVuZ3RoOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAg
bGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgZWMpOwot
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIHJl
dHVybiBsZW5ndGg7CiAgICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFsU3Ryb2tl
V2lkdGgoKQogICAgIHsKICAgICAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExl
bmd0aFR5cGVOdW1iZXIsIDEsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGxl
bmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDEsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKaW5kZXggN2MyNmViZDM1ZTMzNzczNmU4YTY5
NDJjYzdjYjc4N2FmMWE5NGY3OS4uMGFjOGJmMDY1MTZjYTE0NTU5MWQwMDU4Zjc4MTg1NTBlZmZh
M2RkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCkBAIC0zNiw5
ICszNiw3IEBAIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OlNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0CiBzdGF0aWMgaW5saW5lIFNWR0xlbmd0
aCYgc2hhcmVkU1ZHTGVuZ3RoKFNWR0xlbmd0aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZUFzU3RyaW5nKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHTGVuZ3RoLCBzaGFyZWRM
ZW5ndGgsICgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzaGFyZWRMZW5ndGgu
c2V0VmFsdWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nLCBtb2RlLCBlYyk7Ci0gICAgQVNTRVJUKCFl
Yyk7CisgICAgc2hhcmVkTGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZywgbW9k
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIHNoYXJlZExlbmd0aDsKIH0KIApA
QCAtODEsOSArNzksNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1h
dGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYQogICAgIGNvbnN0IFNWR0xl
bmd0aCYgZnJvbUxlbmd0aCA9IGZyb20tPmxlbmd0aCgpOwogICAgIFNWR0xlbmd0aCYgdG9MZW5n
dGggPSB0by0+bGVuZ3RoKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB0b0xl
bmd0aC5zZXRWYWx1ZSh0b0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGgu
dmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVj
KTsKKyAgICB0b0xlbmd0aC5zZXRWYWx1ZSh0b0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSAr
IGZyb21MZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogfQogCiBzdGF0aWMgU1ZHTGVuZ3RoIHBhcnNlTGVuZ3RoRnJvbVN0cmlu
ZyhTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0
cmluZykKQEAgLTExMCw5ICsxMDYsNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZQogICAgIFNW
R0xlbmd0aFR5cGUgdW5pdFR5cGUgPSBwZXJjZW50YWdlIDwgMC41ID8gZnJvbVNWR0xlbmd0aC51
bml0VHlwZSgpIDogdG9TVkdMZW5ndGgudW5pdFR5cGUoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbVNW
R0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgdG9TVkdMZW5ndGgudmFsdWUobGVuZ3RoQ29u
dGV4dCksIHRvQXRFbmRPZkR1cmF0aW9uU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpLCBh
bmltYXRlZE51bWJlcik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbmltYXRl
ZFNWR0xlbmd0aC5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5n
dGhNb2RlLCB1bml0VHlwZSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIGFuaW1hdGVkU1ZH
TGVuZ3RoLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1v
ZGUsIHVuaXRUeXBlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0
ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmNwcAppbmRleCA4MTJiOTBhZjg1NjZkNGNmZjZlMTBmN2Y0MTYwMGEz
NGYzODFkZmVhLi5iNmEyM2FjYmEyYTg4M2JlZDU4YmNhOGM2YjZlM2I1MzQxNDFiMzU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcApAQCAtNzgsMTEg
Kzc4LDggQEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRU
eXBlcyhTVkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0EKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVu
Z3RoTGlzdFNpemU7ICsraSkgewotICAgICAgICB0b0xlbmd0aExpc3RbaV0uc2V0VmFsdWUodG9M
ZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbUxlbmd0aExpc3RbaV0udmFs
dWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
Yyk7Ci0gICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVuZ3RoTGlzdFNp
emU7ICsraSkKKyAgICAgICAgdG9MZW5ndGhMaXN0W2ldLnNldFZhbHVlKHRvTGVuZ3RoTGlzdFtp
XS52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENv
bnRleHQpLCBsZW5ndGhDb250ZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogc3RhdGlj
IFNWR0xlbmd0aExpc3QgcGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVt
ZW50KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExNCw3ICsx
MTEsNiBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVucwogICAgIHVuc2lnbmVkIHRvQXRFbmRPZkR1
cmF0aW9uTGlzdFNpemUgPSB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3Quc2l6ZSgpOwogCiAg
ICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b0xl
bmd0aExpc3RTaXplOyArK2kpIHsKICAgICAgICAgZmxvYXQgYW5pbWF0ZWROdW1iZXIgPSBhbmlt
YXRlZExlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgICAgIFNWR0xlbmd0
aFR5cGUgdW5pdFR5cGUgPSB0b0xlbmd0aExpc3RbaV0udW5pdFR5cGUoKTsKQEAgLTEyNyw4ICsx
MjMsNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVucwogICAgICAgICBmbG9hdCBlZmZlY3RpdmVU
b0F0RW5kID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlv
bkxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwogCiAgICAgICAgIG1fYW5p
bWF0aW9uRWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENv
dW50LCBlZmZlY3RpdmVGcm9tLCB0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCks
IGVmZmVjdGl2ZVRvQXRFbmQsIGFuaW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYW5pbWF0ZWRMZW5n
dGhMaXN0W2ldLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0
aE1vZGUsIHVuaXRUeXBlLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBhbmlt
YXRlZExlbmd0aExpc3RbaV0uc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIs
IG1fbGVuZ3RoTW9kZSwgdW5pdFR5cGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAppbmRleCBiZjViZjQyMzYxNTE0Nzc3NDZiZjcwMjI1
Nzk0NjNlMWFhMTI1MTY5Li4zOWQ4NzY2YmI5NjYyYjc0MTY4YjkxYTAyZTMzYTgxODBjOWQxZjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMTMyLDkgKzEzMiw3IEBAIFNWR0xlbmd0
aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR0xlbmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVl
LCBTVkdMZW5ndGhNb2RlCiAgICAgOiBtX3ZhbHVlSW5TcGVjaWZpZWRVbml0cygwKQogICAgICwg
bV91bml0KHN0b3JlVW5pdChtb2RlLCB1bml0VHlwZSkpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgc2V0VmFsdWUodmFsdWUsIGNvbnRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVj
KTsKKyAgICBzZXRWYWx1ZSh2YWx1ZSwgY29udGV4dCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9
CiAKIFNWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR0xlbmd0aCYgb3RoZXIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDM5NDNmZmViZGEy
M2NiMjI0YTk0NGFlOGQ5NzlmZWE2MWVlNTA3MzUuLmNiODZmMDhiNjhkMjczNDgyZWZhYzM5NjUx
N2MxODAzZGIxMDQ0OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVs
ZW1lbnQuY3BwCkBAIC05NSwxMSArOTUsOCBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+IFNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoVwogUGFz
c1JlZlB0cjxTVkdBbmltYXRlZExlbmd0aD4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVu
Z3RoQW5pbWF0ZWQoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHTGVuZ3RoLCBkZWZh
dWx0VGV4dExlbmd0aCwgKExlbmd0aE1vZGVPdGhlcikpOwotICAgIGlmIChtX3NwZWNpZmllZFRl
eHRMZW5ndGggPT0gZGVmYXVsdFRleHRMZW5ndGgpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgICAgIG1fdGV4dExlbmd0aC52YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRz
KExlbmd0aFR5cGVOdW1iZXIsIGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBlYyk7Ci0gICAgICAg
IEFTU0VSVCghZWMpOwotICAgIH0KKyAgICBpZiAobV9zcGVjaWZpZWRUZXh0TGVuZ3RoID09IGRl
ZmF1bHRUZXh0TGVuZ3RoKQorICAgICAgICBtX3RleHRMZW5ndGgudmFsdWUubmV3VmFsdWVTcGVj
aWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAKICAgICBtX3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25pemUg
PSB0cnVlOwogICAgIHJldHVybiBzdGF0aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkTGVuZ3Ro
Pihsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFwcGVyKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKaW5kZXggNjc3YjdlMGQ3ZjZh
NGY3NDA3N2Q5YWRlZDIxMWRjYmNmZThiMDVhOS4uY2I4YTQ0NGJjYmQyOTM1ZTI0ZjdkZWE3OGU1
MjdjNGZlYWQ4Nzc3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9T
VkdTTUlMRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKQEAgLTIwMiwxMCArMjAyLDggQEAgc3RhdGljIGlubGluZSBRdWFsaWZp
ZWROYW1lIGNvbnN0cnVjdFF1YWxpZmllZE5hbWUoY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVu
dCwKICAgICAKICAgICBTdHJpbmcgcHJlZml4OwogICAgIFN0cmluZyBsb2NhbE5hbWU7Ci0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgaWYgKCFEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWRO
YW1lKGF0dHJpYnV0ZU5hbWUsIHByZWZpeCwgbG9jYWxOYW1lLCBlYykpCisgICAgaWYgKCFEb2N1
bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGF0dHJpYnV0ZU5hbWUsIHByZWZpeCwgbG9jYWxOYW1l
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKSkKICAgICAgICAgcmV0dXJuIGFueVFOYW1lKCk7Ci0gICAg
QVNTRVJUKCFlYyk7CiAgICAgCiAgICAgU3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN2Z0VsZW1lbnQt
Pmxvb2t1cE5hbWVzcGFjZVVSSShwcmVmaXgpOyAgICAKICAgICBpZiAobmFtZXNwYWNlVVJJLmlz
RW1wdHkoKSkK
</data>
<flag name="commit-queue"
          id="206425"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186845</attachid>
            <date>2013-02-06 06:44:42 -0800</date>
            <delta_ts>2013-02-06 08:42:28 -0800</delta_ts>
            <desc>Less broken.</desc>
            <filename>bug-109044-20130206154118.patch</filename>
            <type>text/plain</type>
            <size>58313</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uM2NhZDhmNjU3YjVmNzQyZTNkYzgwMmRkNWY0MmVh
NTVkMTQzY2Y3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMy0wMi0wNiAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgRXhjZXB0aW9u
Q29kZSBhc3NlcnRpb25zIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTiBtYWNyby4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYXR0ZXJuOgorCisg
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1ldGhvZFRoYXRH
ZW5lcmF0ZXNFeGNlcHRpb24oZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisKKyAgICAg
ICAgaXMgbW9yZSBjbGVhcmx5IGFuZCBzdWNjaW5jdGx5IHdyaXR0ZW4gYXM6CisKKyAgICAgICAg
ICAgIG1ldGhvZFRoYXRHZW5lcmF0ZXNFeGNlcHRpb24oQVNTRVJUX05PX0VYQ0VQVElPTik7CisK
KyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgb2NjdXJhbmNlcyBvZiB0aGUgZm9ybWVy
IHRoYXQgbmV2ZXIgdG91Y2ggJ2VjJworICAgICAgICBhZ2FpbiB3aXRoIHRoZSBsYXR0ZXIuIEl0
IGRvZXMgdGhlIHNhbWUgZm9yICdBU1NFUlQoZWMgPT0gMCk7JyAoYW5kLCBhcworICAgICAgICBh
IGRyaXZlLWJ5LCByZXBsYWNlcyAnQVNTRVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScg
aW4gcGxhY2VzCisgICAgICAgIHdoZXJlIGl0IGRvZXMgaW5kZWVkIG1hdHRlciB0aGF0ICdlYycg
Z2V0IHNldCBwcm9wZXJseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc2hvdWxk
IHJlc3VsdCBmcm9tIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZU5hbWUp
OgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNz
YWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9y
dDo6ZGlzZW50YW5nbGVQb3J0cyk6CisgICAgICAgICogZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRp
b25VSSk6CisgICAgICAgICAgICBSZXBsYWNlZCBpbmxpbmUgQVNTRVJUIHdpdGggQVNTRVJUX05P
X0VYQ0VQVElPTi4KKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNo
b3cpOgorICAgICAgICAgICAgUmVwbGFjZWQgJ0FTU0VSVChlYyA9PSAwKScgd2l0aCAnQVNTRVJU
KCFlYyknIHRvIG1hdGNoIHRoZSBzdHlsZSBndWlkZS4KKyAgICAgICAgKiBlZGl0aW5nL0VkaXRv
ckNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dW5pb25ET01SYW5nZXMpOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3dhcEluTm9kZVByZXNlcnZpbmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4pOgorICAgICAg
ICAqIGVkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVwbGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydE5vZGVCZWZvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlc3RvcmVBbmRSZW1v
dmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjppbnNlcnRBc0xpc3RJdGVtcyk6CisgICAgICAgICogZWRpdGlu
Zy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTcGxpdFRleHRO
b2RlQ29tbWFuZDo6ZG9VbmFwcGx5KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6QmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAg
ICAgICAoV2ViQ29yZTo6Y29sbGFwc2VkVG9Cb3VuZGFyeSk6CisgICAgICAgICogZWRpdGluZy9o
dG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVUYWJTcGFuRWxlbWVudCk6
CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjpmb250Rm9yU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9u
dEF0dHJpYnV0ZXNGb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyaW1GcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXBXaXRoQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpmaWxsQ29udGFpbmVyRnJvbVN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21UZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKToKKyAgICAgICAgKiBodG1sL0NvbG9y
SW5wdXRUeXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbG9ySW5wdXRUeXBlOjpjcmVhdGVT
aGFkb3dTdWJ0cmVlKToKKyAgICAgICAgICAgIFJlcGxhY2VkIGlubGluZSBBU1NFUlQgd2l0aCBB
U1NFUlRfTk9fRVhDRVBUSU9OLgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxPcHRpb25zQ29sbGVjdGlvbjo6YWRkKToKKyAg
ICAgICAgICAgIFJlcGxhY2VkICdBU1NFUlQoZWMgPT0gMCknIHdpdGggJ0FTU0VSVCghZWMpJyB0
byBtYXRjaCB0aGUgc3R5bGUgZ3VpZGUuCisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBs
YWNlaG9sZGVyVGV4dCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6aW5k
ZXhGb3JWaXNpYmxlUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKToKKyAgICAgICAgKiBodG1sL1RleHRGaWVs
ZElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZVBsYWNlaG9sZGVyVGV4dCk6CisgICAgICAgICogaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJibGVUcmVl
KToKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvclN0eWxlU2hlZXQ6OmFkZFJ1bGUpOgorICAgICAgICAqIGxvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6ZGlzcGF0Y2hET01FdmVudCk6CisgICAgICAgICogcGFnZS9ET01T
ZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9uOjpkZWxldGVGcm9t
RG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cHJlcGFyZUNsaXBib2FyZEZvckltYWdlRHJhZyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRD
b250cm9sOjp2aXNpYmxlUG9zaXRpb25Gb3JJbmRleCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1NWR1JlbmRlclN0eWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6
aW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJT
dHlsZTo6aW5pdGlhbEtlcm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6
OmluaXRpYWxTdHJva2VEYXNoT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0
eWxlOjppbml0aWFsU3Ryb2tlV2lkdGgpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0
aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaGFyZWRTVkdMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjphZGRBbmltYXRlZFR5
cGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpj
YWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHTGVuZ3RoLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xlbmd0aDo6U1ZHTGVuZ3RoKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6dGV4dExlbmd0aEFuaW1hdGVkKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdFF1YWxpZmllZE5h
bWUpOgorICAgICAgICAgICAgUmVwbGFjZWQgaW5saW5lIEFTU0VSVCB3aXRoIEFTU0VSVF9OT19F
WENFUFRJT04uCisKIDIwMTMtMDItMDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29t
PgogCiAgICAgICAgIE9wdGltaXplIEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhz
IGFyZSBhdmFpbGFibGUgaW4gdGhlIHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IDc0NjUwMTMxZjlhMWRkMTlhNWY2ZmUx
MDZlNjE0MmJlNjA2YTczM2UuLmFmMmFmY2Q3YWIwZTFhNWVhMzU1MzIzY2NhZDllMDVkYzNlOTUw
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNw
cApAQCAtOTUsOSArOTUsNyBAQCBJREJDdXJzb3I6On5JREJDdXJzb3IoKQogY29uc3QgU3RyaW5n
JiBJREJDdXJzb3I6OmRpcmVjdGlvbigpIGNvbnN0CiB7CiAgICAgSURCX1RSQUNFKCJJREJDdXJz
b3I6OmRpcmVjdGlvbiIpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IEF0
b21pY1N0cmluZyYgZGlyZWN0aW9uID0gZGlyZWN0aW9uVG9TdHJpbmcobV9kaXJlY3Rpb24sIGVj
KTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIGRpcmVjdGlvbiA9
IGRpcmVjdGlvblRvU3RyaW5nKG1fZGlyZWN0aW9uLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICByZXR1cm4gZGlyZWN0aW9uOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKaW5kZXggMzQzNjgzNDAxNzUwMzI4MTk4MWNk
ZWViMDdlMGI0YTM3MTEwMTk3MS4uNGM1OGNlM2E3NzM3NjQ3NWEyNDRjNzQ4ZjhhNDg1N2MzM2Rm
ZTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcApAQCAtMzIyLDkgKzMyMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIEV2ZW50
VGFyZ2V0KiB0YXJnZXQgPSBldmVudC0+dGFyZ2V0KCk7CiAgICAgICAgIElEQlJlcXVlc3QqIHJl
cXVlc3QgPSBzdGF0aWNfY2FzdDxJREJSZXF1ZXN0Kj4odGFyZ2V0KTsKIAotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgUmVmUHRyPElEQkFueT4gY3Vyc29yQW55ID0gcmVx
dWVzdC0+cmVzdWx0KGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIFJlZlB0cjxJ
REJBbnk+IGN1cnNvckFueSA9IHJlcXVlc3QtPnJlc3VsdChBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAgICAgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gY3Vyc29yOwogICAgICAgICBpZiAo
Y3Vyc29yQW55LT50eXBlKCkgPT0gSURCQW55OjpJREJDdXJzb3JXaXRoVmFsdWVUeXBlKQogICAg
ICAgICAgICAgY3Vyc29yID0gY3Vyc29yQW55LT5pZGJDdXJzb3JXaXRoVmFsdWUoKTsKQEAgLTMz
Miw4ICszMzAsNyBAQCBwcml2YXRlOgogICAgICAgICBWZWN0b3I8aW50NjRfdCwgMT4gaW5kZXhJ
ZHM7CiAgICAgICAgIGluZGV4SWRzLmFwcGVuZChtX2luZGV4TWV0YWRhdGEuaWQpOwogICAgICAg
ICBpZiAoY3Vyc29yKSB7Ci0gICAgICAgICAgICBjdXJzb3ItPmNvbnRpbnVlRnVuY3Rpb24oc3Rh
dGljX2Nhc3Q8SURCS2V5Kj4oMCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICAgICAgY3Vyc29yLT5jb250aW51ZUZ1bmN0aW9uKHN0YXRpY19jYXN0PElEQktleSo+KDAp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgICAgICAgICAgUmVmUHRyPElEQktleT4gcHJp
bWFyeUtleSA9IGN1cnNvci0+aWRiUHJpbWFyeUtleSgpOwogICAgICAgICAgICAgU2NyaXB0VmFs
dWUgdmFsdWUgPSBjdXJzb3ItPnZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggYmI2MGI0ZTQ3YTRhMTIxOWJi
OGFiYWQyNmJkNDk3MWNmMTViN2IwYS4uN2E0YTljNzI5MWI1YTRjNTI2NjcwZjViODUxOGE2Mjdk
NGFiZDIxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcApAQCAtMTIxLDkgKzEyMSw3IEBAIElEQlRyYW5zYWN0aW9uOjp+SURC
VHJhbnNhY3Rpb24oKQogCiBjb25zdCBTdHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlKCkgY29u
c3QKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG1vZGUgPSBtb2RlVG9TdHJpbmcobV9tb2RlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBtb2RlID0gbW9kZVRvU3RyaW5nKG1fbW9kZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIG1vZGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlLmNwcAppbmRleCAyNzdmY2EwZjczYzQ4N2JhZDdjNDg3ODEyZGFhMThhMWZmYzc4ZjM2
Li45ZGQ3YWEwZGMzZDk0YzUwMWUwM2Q4YTkzMDlkNDQyZGJlZWMxZDFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0xMDgsMTIgKzEwOCwxMCBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnRha2VBbGxDaGlsZHJlbkZyb20oQ29udGFpbmVyTm9kZSogb2xkUGFyZW50KQogICAg
IG9sZFBhcmVudC0+cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbigpOwogCiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgICAgICBpZiAoY2hpbGRyZW5baV0tPmF0dGFjaGVkKCkpCiAgICAgICAg
ICAgICBjaGlsZHJlbltpXS0+ZGV0YWNoKCk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGEg
bm8gbXV0YXRpb24gZXZlbnQgdmVyc2lvbiBvZiBhZG9wdE5vZGUuCi0gICAgICAgIFJlZlB0cjxO
b2RlPiBjaGlsZCA9IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCks
IGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIFJlZlB0cjxOb2RlPiBjaGlsZCA9
IGRvY3VtZW50KCktPmFkb3B0Tm9kZShjaGlsZHJlbltpXS5yZWxlYXNlKCksIEFTU0VSVF9OT19F
WENFUFRJT04pOwogICAgICAgICBwYXJzZXJBcHBlbmRDaGlsZChjaGlsZC5nZXQoKSk7CiAgICAg
ICAgIC8vIEZJWE1FOiBUb2dldGhlciB3aXRoIGFkb3B0Tm9kZSBhYm92ZSwgdGhlIHRyZWUgc2Nv
cGUgbWlnaHQgZ2V0IHVwZGF0ZWQgcmVjdXJzaXZlbHkgdHdpY2UKICAgICAgICAgLy8gKGlmIHRo
ZSBkb2N1bWVudCBjaGFuZ2VkIG9yIG9sZFBhcmVudCB3YXMgaW4gYSBzaGFkb3cgdHJlZSwgQU5E
ICp0aGlzIGlzIGluIGEgc2hhZG93IHRyZWUpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
NjIxNDc1NmJjMTQzODkzMTY5OTY0ZGVhY2ZmNzJjYWZhNzIwMzZiMi4uYTlmYmFhNWM2OTQ3OWYy
MjhhZjAwNzQwMTMwY2IxODZkNDg1ZDgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0x
NTI5LDkgKzE1MjksNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25zdCBTdHJpbmcmIHRp
dGxlKQogICAgIGVsc2UgaWYgKCFtX3RpdGxlRWxlbWVudCkgewogICAgICAgICBpZiAoSFRNTEVs
ZW1lbnQqIGhlYWRFbGVtZW50ID0gaGVhZCgpKSB7CiAgICAgICAgICAgICBtX3RpdGxlRWxlbWVu
dCA9IGNyZWF0ZUVsZW1lbnQodGl0bGVUYWcsIGZhbHNlKTsKLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGl0
bGVFbGVtZW50LCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIGhl
YWRFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RpdGxlRWxlbWVudCwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1MzI3YzBk
NGI2ZTFiYzUwNDQ0ZDY3YWY1MmZhOWNhY2VlZDExMzFiLi5hMDY5ZTU3ZjdjMDEzOTFmNjQ3ZDdj
M2ZkMjk4NWE3YWMxOTFmNjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xNzQyLDkgKzE3
NDIsOCBAQCBQYXNzUmVmUHRyPEF0dHI+IEVsZW1lbnQ6OnJlbW92ZUF0dHJpYnV0ZU5vZGUoQXR0
ciogYXR0ciwgRXhjZXB0aW9uQ29kZSYgZWMpCiBib29sIEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
TmFtZShRdWFsaWZpZWROYW1lJiBvdXQsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBBdG9taWNTdHJpbmcmIHF1YWxpZmllZE5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewogICAgIFN0cmluZyBwcmVmaXgsIGxvY2FsTmFtZTsKLSAgICBpZiAoIURvY3VtZW50OjpwYXJz
ZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKKyAg
ICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUocXVhbGlmaWVkTmFtZSwgcHJlZml4
LCBsb2NhbE5hbWUsIEFTU0VSVF9OT19FWENFUFRJT04pKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgQVNTRVJUKCFlYyk7CiAKICAgICBRdWFsaWZpZWROYW1lIHFOYW1lKHByZWZpeCwgbG9j
YWxOYW1lLCBuYW1lc3BhY2VVUkkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZVBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRl
eCA5NWM1YTZkMDExNzI2NGI2MTBkYmQ4MDIwMmNiYTc2YzIzMDVhZjcyLi43Y2I3MmFlYWEzZDE2
MzJlNDkxMzMxNDEzY2QwOWEzODQxZDY0OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZVBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5j
cHAKQEAgLTE4Niw5ICsxODYsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2Vz
KCkKICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6
OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnREYXRhLT5jaGFu
bmVscygpKTsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0
ZShwb3J0cy5yZWxlYXNlKCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKIAotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBl
Yyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxl
YXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIH0KIApAQCAtMjI5LDggKzIyNyw3
IEBAIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0OjpkaXNl
bnRhbmdsZVBvcnRzKGNvbnN0IE1lc3NhZ2VQCiAgICAgLy8gUGFzc2VkLWluIHBvcnRzIHBhc3Nl
ZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiBkaXNlbnRhbmdsZSB0aGVtLgogICAgIE93blB0
cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3Nh
Z2VQb3J0Q2hhbm5lbEFycmF5KHBvcnRzLT5zaXplKCkpKTsKICAgICBmb3IgKHVuc2lnbmVkIGlu
dCBpID0gMCA7IGkgPCBwb3J0cy0+c2l6ZSgpIDsgKytpKSB7Ci0gICAgICAgIE93blB0cjxNZXNz
YWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUoZWMpOwot
ICAgICAgICBBU1NFUlQoIWVjKTsgLy8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYg
cGFzc2VkIGFib3ZlIGNoZWNrcy4KKyAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4g
Y2hhbm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsg
Ly8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYgcGFzc2VkIGFib3ZlIGNoZWNrcy4K
ICAgICAgICAgKCpwb3J0QXJyYXkpW2ldID0gY2hhbm5lbC5yZWxlYXNlKCk7CiAgICAgfQogICAg
IHJldHVybiBwb3J0QXJyYXkucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKaW5kZXggYzBkYTI0NjkyMmUyNGY1MGI5MjIw
NjViMWRhYWQ3ODYwYTlmM2NkNi4uOTBkMjUzZTgxYzg4MTk3ZDNhYTAxNTk4OTIyNzQ5NWYwZmVj
ZmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRy
b2xsZXIuY3BwCkBAIC0xNTUsMTAgKzE1NSw4IEBAIHN0YXRpYyBIVE1MRWxlbWVudCogZW5jbG9z
aW5nRGVsZXRhYmxlRWxlbWVudChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAg
ICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLSAgICBOb2RlKiBjb250YWluZXIgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWlu
ZXIoZWMpOworICAgIE5vZGUqIGNvbnRhaW5lciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRh
aW5lcihBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKLSAgICBB
U1NFUlQoZWMgPT0gMCk7CiAKICAgICAvLyBUaGUgZW5jbG9zaW5nTm9kZU9mVHlwZSBmdW5jdGlv
biBvbmx5IHdvcmtzIG9uIG5vZGVzIHRoYXQgYXJlIGVkaXRhYmxlCiAgICAgLy8gKHdoaWNoIGlz
IHN0cmFuZ2UsIGdpdmVuIGl0cyBuYW1lKS4KQEAgLTIzNCw3ICsyMzIsNyBAQCB2b2lkIERlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURlbGV0aW9uVUkoKQogCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChvdXRsaW5lLmdldCgpLCBlYyk7
Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIEFTU0VSVCghZWMpOwogICAgIGlmIChlYykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0yNjYsNyArMjY0LDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250
cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJKCkKICAgICBidXR0b24tPnNldENhY2hlZEltYWdlKG5l
dyBDYWNoZWRJbWFnZShidXR0b25JbWFnZS5nZXQoKSkpOwogCiAgICAgY29udGFpbmVyLT5hcHBl
bmRDaGlsZChidXR0b24uZ2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgQVNT
RVJUKCFlYyk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICsyOTgs
NyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3coSFRNTEVsZW1lbnQqIGVsZW1l
bnQpCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBtX3RhcmdldC0+YXBwZW5kQ2hp
bGQobV9jb250YWluZXJFbGVtZW50LmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwor
ICAgIEFTU0VSVCghZWMpOwogICAgIGlmIChlYykgewogICAgICAgICBoaWRlKCk7CiAgICAgICAg
IHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDQ3
MzMyNDkzYWM5OWI1ZDE4NThkMGYzZDFmZjJiM2IzMDE0YzhlN2YuLjI1NmE1YjM1ZDE0MmI4Yzk2
ZjI2ZDhmMzM1YjgxNTk2ZTY4ODhlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcApAQCAtMjY2LDExICsyNjYsOCBAQCBzdGF0aWMgdW5zaWduZWQgdmVydGljYWxT
Y3JvbGxEaXN0YW5jZShGcmFtZSogZnJhbWUpCiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHVuaW9u
RE9NUmFuZ2VzKFJhbmdlKiBhLCBSYW5nZSogYikKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBSYW5nZSogc3RhcnQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNU
QVJUX1RPX1NUQVJULCBiLCBlYykgPD0gMCA/IGEgOiBiOwotICAgIEFTU0VSVCghZWMpOwotICAg
IFJhbmdlKiBlbmQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQs
IGIsIGVjKSA8PSAwID8gYiA6IGE7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgUmFuZ2UqIHN0YXJ0
ID0gYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgYiwgQVNT
RVJUX05PX0VYQ0VQVElPTikgPD0gMCA/IGEgOiBiOworICAgIFJhbmdlKiBlbmQgPSBhLT5jb21w
YXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsIGIsIEFTU0VSVF9OT19FWENFUFRJ
T04pIDw9IDAgPyBiIDogYTsKIAogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGEtPm93bmVyRG9j
dW1lbnQoKSwgc3RhcnQtPnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFydE9mZnNldCgpLCBl
bmQtPmVuZENvbnRhaW5lcigpLCBlbmQtPmVuZE9mZnNldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXgg
ODcxMjMwNDA5NTFlZjlhMmE5YjFkYjEwOGY3YTI3YTExMTU1YzRmNy4uZjUwN2QyODg2ODJiZjc4
M2I0YmIzZTZkOTRiYjBiNDI0NzVkZGEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTUxLDIzICs1MSwxOCBA
QCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQo
UGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gZQogc3RhdGljIHZvaWQgc3dhcEluTm9kZVByZXNlcnZp
bmdBdHRyaWJ1dGVzQW5kQ2hpbGRyZW4oSFRNTEVsZW1lbnQqIG5ld05vZGUsIEhUTUxFbGVtZW50
KiBub2RlVG9SZXBsYWNlKQogewogICAgIEFTU0VSVChub2RlVG9SZXBsYWNlLT5pbkRvY3VtZW50
KCkpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxDb250YWluZXJOb2Rl
PiBwYXJlbnROb2RlID0gbm9kZVRvUmVwbGFjZS0+cGFyZW50Tm9kZSgpOwotICAgIHBhcmVudE5v
ZGUtPmluc2VydEJlZm9yZShuZXdOb2RlLCBub2RlVG9SZXBsYWNlLCBlYyk7Ci0gICAgQVNTRVJU
KCFlYyk7CisgICAgcGFyZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld05vZGUsIG5vZGVUb1JlcGxh
Y2UsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKICAg
ICBnZXRDaGlsZE5vZGVzKG5vZGVUb1JlcGxhY2UsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG5ld05vZGUtPmFw
cGVuZENoaWxkKGNoaWxkcmVuW2ldLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0K
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAg
ICBuZXdOb2RlLT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAKICAgICAvLyBGSVhNRTogRml4IHRoaXMgdG8gc2VuZCB0aGUgcHJvcGVyIE11dGF0aW9uUmVj
b3JkcyB3aGVuIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBwcmVzZW50LgogICAgIG5ld05vZGUtPmNs
b25lRGF0YUZyb21FbGVtZW50KCpub2RlVG9SZXBsYWNlKTsKIAotICAgIHBhcmVudE5vZGUtPnJl
bW92ZUNoaWxkKG5vZGVUb1JlcGxhY2UsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBwYXJl
bnROb2RlLT5yZW1vdmVDaGlsZChub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
IH0KIAogdm9pZCBSZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9BcHBseSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4
IDRhZGU2OGFhOGNmMDc2NmQyYzhkOGY1NjNjNGJjNzNmNDNhMjgxYjIuLmE5NGViMTBjY2ZjN2E1
NWYxNThiNGYwZjZhZTdiOGY3NTIyYTk1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xODEsOSArMTgxLDcgQEAgUmVw
bGFjZW1lbnRGcmFnbWVudDo6UmVwbGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQs
IERvY3VtZW50RnJhZ21lbnQqIGYKIAogICAgIC8vIEdpdmUgdGhlIHJvb3QgYSBjaGFuY2UgdG8g
Y2hhbmdlIHRoZSB0ZXh0LgogICAgIFJlZlB0cjxCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudD4gZXZ0
ID0gQmVmb3JlVGV4dEluc2VydGVkRXZlbnQ6OmNyZWF0ZSh0ZXh0KTsKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBlZGl0YWJsZVJvb3QtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7Ci0g
ICAgQVNTRVJUKGVjID09IDApOworICAgIGVkaXRhYmxlUm9vdC0+ZGlzcGF0Y2hFdmVudChldnQs
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmICh0ZXh0ICE9IGV2dC0+dGV4dCgpIHx8ICFl
ZGl0YWJsZVJvb3QtPnJlbmRlcmVySXNSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIHJlc3Rv
cmVBbmRSZW1vdmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KGhvbGRlci5nZXQoKSk7CiAK
QEAgLTIzNCw5ICsyMzIsNyBAQCB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGUo
UGFzc1JlZlB0cjxOb2RlPiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcGFyZW50LT5yZW1vdmVDaGls
ZChub2RlLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIHBhcmVudC0+cmVt
b3ZlQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgUmVw
bGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0Tm9kZUJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUs
IE5vZGUqIHJlZk5vZGUpCkBAIC0yNDgsMjMgKzI0NCwxNSBAQCB2b2lkIFJlcGxhY2VtZW50RnJh
Z21lbnQ6Omluc2VydE5vZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBOb2RlKiByZWZO
b2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5v
ZGUsIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUo
bm9kZSwgcmVmTm9kZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIFBhc3NSZWZQdHI8U3R5
bGVkRWxlbWVudD4gUmVwbGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVu
ZGVyaW5nKE5vZGUqIHJvb3RFZGl0YWJsZUVsZW1lbnQpCiB7CiAgICAgUmVmUHRyPFN0eWxlZEVs
ZW1lbnQ+IGhvbGRlciA9IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KG1fZG9jdW1lbnQu
Z2V0KCkpOwotICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgaG9sZGVyLT5h
cHBlbmRDaGlsZChtX2ZyYWdtZW50LCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwotCi0gICAg
cm9vdEVkaXRhYmxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoaG9sZGVyLmdldCgpLCBlYyk7Ci0gICAg
QVNTRVJUKGVjID09IDApOwogCisgICAgaG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICByb290RWRpdGFibGVFbGVtZW50LT5hcHBlbmRDaGls
ZChob2xkZXIuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZG9jdW1lbnQtPnVw
ZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgcmV0dXJuIGhvbGRl
ci5yZWxlYXNlKCk7CkBAIC0yNzUsMTIgKzI2Myw5IEBAIHZvaWQgUmVwbGFjZW1lbnRGcmFnbWVu
dDo6cmVzdG9yZUFuZFJlbW92ZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoU3R5bGVkRWxl
CiAgICAgaWYgKCFob2xkZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IG5vZGUgPSBob2xkZXItPmZpcnN0
Q2hpbGQoKSkgewotICAgICAgICBob2xkZXItPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIGVjKTsK
LSAgICAgICAgQVNTRVJUKGVjID09IDApOwotICAgICAgICBtX2ZyYWdtZW50LT5hcHBlbmRDaGls
ZChub2RlLmdldCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgaG9s
ZGVyLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgbV9mcmFnbWVudC0+YXBwZW5kQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgfQogCiAgICAgcmVtb3ZlTm9kZShob2xkZXIpOwpAQCAtMTMxOCw5ICsxMzAzLDcg
QEAgTm9kZSogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydEFzTGlzdEl0ZW1zKFBhc3NS
ZWZQdHI8SFRNTEVsZW1lbnQ+IHBycExpc3QKICAgICB9CiAKICAgICB3aGlsZSAoUmVmUHRyPE5v
ZGU+IGxpc3RJdGVtID0gbGlzdEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbGlzdEVsZW1lbnQtPnJlbW92ZUNoaWxkKGxpc3RJ
dGVtLmdldCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBsaXN0RWxlbWVu
dC0+cmVtb3ZlQ2hpbGQobGlzdEl0ZW0uZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAg
ICAgICBpZiAoaXNTdGFydCB8fCBpc01pZGRsZSkgewogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJl
Zm9yZShsaXN0SXRlbSwgbGFzdE5vZGUpOwogICAgICAgICAgICAgaW5zZXJ0ZWROb2Rlcy5yZXNw
b25kVG9Ob2RlSW5zZXJ0aW9uKGxpc3RJdGVtLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKaW5kZXggMGVlY2E2YWRmNDA3NDY4YzNi
OTY0ODI2YWY3OTRjZGU5MTkxYjk4OC4uY2YwN2RmMzc2ZTI3MDEwNmUzZTIzYWFiNGExZTZhODY3
NTYzZjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29t
bWFuZC5jcHAKQEAgLTc1LDEyICs3NSwxMCBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpk
b1VuYXBwbHkoKQogCiAgICAgU3RyaW5nIHByZWZpeFRleHQgPSBtX3RleHQxLT5kYXRhKCk7CiAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtX3RleHQyLT5pbnNlcnREYXRhKDAsIHBy
ZWZpeFRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBtX3RleHQyLT5pbnNlcnREYXRh
KDAsIHByZWZpeFRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgZG9jdW1lbnQoKS0+
bWFya2VycygpLT5jb3B5TWFya2VycyhtX3RleHQxLmdldCgpLCAwLCBwcmVmaXhUZXh0Lmxlbmd0
aCgpLCBtX3RleHQyLmdldCgpLCAwKTsKLSAgICBtX3RleHQxLT5yZW1vdmUoZWMpOworICAgIG1f
dGV4dDEtPnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBTcGxpdFRleHRO
b2RlQ29tbWFuZDo6ZG9SZWFwcGx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcAppbmRleCBiNmIwMDFiN2QwMjFhNWJlOGRlNzliNjE1Y2FmZGY3MDFiZWVjNzAxLi5lMmIx
ZTJlNjIzMmFmYWRlZTlmMmE3NTlkZjQwOTNjNjlkMTI2ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCkBAIC0xNDE4LDEwICsxNDE4LDggQEAgUGFzc1JlZlB0cjxS
YW5nZT4gQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKICAgICAgICAgICAgIE5vZGUq
IG4gPSByLT5zdGFydENvbnRhaW5lcigpOwogICAgICAgICAgICAgQVNTRVJUKG4gPT0gci0+ZW5k
Q29udGFpbmVyKCkpOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHItPnN0YXJ0T2Zmc2V0KCkg
KyBtX3J1bk9mZnNldDsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0LCBlYyk7Ci0gICAgICAgICAgICByLT5zZXRFbmQo
biwgb2Zmc2V0ICsgMSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAg
ICByLT5zZXRTdGFydChuLCBvZmZzZXQsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAg
ICAgci0+c2V0RW5kKG4sIG9mZnNldCArIDEsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAg
ICB9CiAgICAgfQogICAgIHJldHVybiByLnJlbGVhc2UoKTsKQEAgLTE1MjYsMTAgKzE1MjQsOCBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBj
b25zdAogICAgICAgICAgICAgTm9kZSogbiA9IHItPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAg
ICAgICBBU1NFUlQobiA9PSByLT5lbmRDb250YWluZXIoKSk7CiAgICAgICAgICAgICBpbnQgb2Zm
c2V0ID0gci0+ZW5kT2Zmc2V0KCkgLSBtX3J1bk9mZnNldDsKLSAgICAgICAgICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0IC0gMSwgZWMp
OwotICAgICAgICAgICAgci0+c2V0RW5kKG4sIG9mZnNldCwgZWMpOwotICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CisgICAgICAgICAgICByLT5zZXRTdGFydChuLCBvZmZzZXQgLSAxLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIHItPnNldEVuZChuLCBvZmZzZXQsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByLnJlbGVhc2UoKTsK
QEAgLTI0NDAsMTEgKzI0MzYsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJh
bmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLAogICAgIGlmIChy
YW5nZUxvY2F0aW9uID09IDAgJiYgcmFuZ2VMZW5ndGggPT0gMCAmJiBpdC5hdEVuZCgpKSB7CiAg
ICAgICAgIHRleHRSdW5SYW5nZSA9IGl0LnJhbmdlKCk7CiAgICAgICAgIAotICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5S
YW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAg
ICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCks
IDAsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRT
dGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIEFTU0VSVF9OT19FWENFUFRJ
T04pOworICAgICAgICByZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIAogICAgICAgICByZXR1
cm4gcmVzdWx0UmFuZ2UucmVsZWFzZSgpOwogICAgIH0KQEAgLTI0NjYsMTcgKzI0NTksMTIgQEAg
UGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0
aChDb250YWluZXJOb2RlKiBzY29wZSwKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7CiAg
ICAgICAgICAgICAgICAgaWYgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJl
ZlB0cjxSYW5nZT4gcmFuZ2UgPSBpdC5yYW5nZSgpOwotICAgICAgICAgICAgICAgICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRF
bmQocmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpLCBlYyk7Ci0g
ICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgICAgICAgICB0ZXh0
UnVuUmFuZ2UtPnNldEVuZChyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zm
c2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4dFJ1blJhbmdlLT5zdGFy
dFBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2li
bGVQb3NpdGlvbihydW5TdGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1
blJhbmdlLT5zZXRFbmQocnVuRW5kLmNvbnRhaW5lck5vZGUoKSwgcnVuRW5kLmNvbXB1dGVPZmZz
ZXRJbkNvbnRhaW5lck5vZGUoKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ1
bkVuZC5pc05vdE51bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+
c2V0RW5kKHJ1bkVuZC5jb250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250
YWluZXJOb2RlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjU5OCwxMSArMjU4Niw4IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBpc0FsbENvbGxhcHNpYmxlV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZykK
IAogc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IGNvbGxhcHNlZFRvQm91bmRhcnkoY29uc3QgUmFu
Z2UqIHJhbmdlLCBib29sIGZvcndhcmQpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgUmVmUHRyPFJhbmdlPiByZXN1bHQgPSByYW5nZS0+Y2xvbmVSYW5nZShlYyk7Ci0gICAgQVNT
RVJUKCFlYyk7Ci0gICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCwgZWMpOwotICAgIEFTU0VS
VCghZWMpOworICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0ID0gcmFuZ2UtPmNsb25lUmFuZ2UoQVNT
RVJUX05PX0VYQ0VQVElPTik7CisgICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKaW5kZXggOTZlZjg2MzM1YTUxNGNmMjc0NzI0
NzQ5Y2JmY2UzMTJjZWQ4MmE3Yy4uMTlmYjNmMjA5NzBhYThhMzIwM2ZmNDUxOGI4YjU4MmIzNGJj
MjhhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTkzOSw5ICs5
MzksNyBAQCBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgUGFzc1JlZlB0cjxOb2RlPiBwcgogICAgIGlmICghdGFiVGV4dE5vZGUpCiAg
ICAgICAgIHRhYlRleHROb2RlID0gZG9jdW1lbnQtPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiXHQi
KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNwYW5FbGVtZW50LT5hcHBlbmRD
aGlsZCh0YWJUZXh0Tm9kZS5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7Cisg
ICAgc3BhbkVsZW1lbnQtPmFwcGVuZENoaWxkKHRhYlRleHROb2RlLnJlbGVhc2UoKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAKICAgICByZXR1cm4gc3BhbkVsZW1lbnQucmVsZWFzZSgpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDAzN2U0OGFjOTE5OTg1
OTllNWRjNzcxYmQ5YjgzNjU3NDdiYjU1Y2QuLjhjMzM1NWFkMzEyYTVkYjlmMDRhNWZmNTI0Nzdk
N2U4NWEzZTFiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRv
ck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAg
LTE1MywxMSArMTUzLDggQEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEVkaXRvcjo6Zm9udEZvclNl
bGVjdGlvbihib29sJiBoYXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgICAgICBpZiAoc3R5bGUp
CiAgICAgICAgICAgICByZXN1bHQgPSBzdHlsZS0+Zm9udCgpLnByaW1hcnlGb250KCk7CiAKLSAg
ICAgICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsK
LSAgICAgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgICAgIEFTU0VS
VCghZWMpOwotICAgICAgICB9CisgICAgICAgIGlmIChub2RlVG9SZW1vdmUpCisgICAgICAgICAg
ICBub2RlVG9SZW1vdmUtPnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KQEAgLTI0MiwxMSArMjM5LDggQEAgTlNEaWN0aW9uYXJ5KiBF
ZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIGlmIChk
ZWNvcmF0aW9uICYgVU5ERVJMSU5FKQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1i
ZXIgbnVtYmVyV2l0aEludDpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNVbmRlcmxp
bmVTdHlsZUF0dHJpYnV0ZU5hbWVdOwogCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMp
OwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7Ci0gICAgfQorICAgIGlmIChub2RlVG9SZW1vdmUp
CisgICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxMmZi
Y2RhYjlmMzU3NzYxMGQyNjdmZTRkYTcyMjkxOTNhZjkyY2RmLi5mMjBjNWZiNGQ5YmI4YzQ1MjNj
NGVkMGUyZThmNThmZmJlMTQyOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC01
NjQsMTMgKzU2NCwxMCBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwg
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogICAgIGlmIChkZWxldGVC
dXR0b24pCiAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZGlzYWJsZSgpOwogCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVkUmFuZ2UtPmNvbGxhcHNl
ZChlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVkUmFu
Z2UtPmNvbGxhcHNlZChBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBpZiAoY29sbGFwc2VkKQog
ICAgICAgICByZXR1cm4gIiI7Ci0gICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFu
Z2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBO
b2RlKiBjb21tb25BbmNlc3RvciA9IHVwZGF0ZWRSYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWlu
ZXIoQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAg
ICAgcmV0dXJuICIiOwogCkBAIC01OTgsMTQgKzU5NSwxMSBAQCBTdHJpbmcgY3JlYXRlTWFya3Vw
KGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvcklu
dGVyYwogICAgICAgICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5l
U3RyaW5nKTsKICAgICAgICAgc3RhcnROb2RlID0gdmlzaWJsZVN0YXJ0Lm5leHQoKS5kZWVwRXF1
aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIGlmIChwYXN0RW5kICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMo
c3RhcnROb2RlLCAwLCBwYXN0RW5kLCAwLCBlYykgPj0gMCkgewotICAgICAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgIGlmIChwYXN0RW5kICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2lu
dHMoc3RhcnROb2RlLCAwLCBwYXN0RW5kLCAwLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSA+PSAwKSB7
CiAgICAgICAgICAgICBpZiAoZGVsZXRlQnV0dG9uKQogICAgICAgICAgICAgICAgIGRlbGV0ZUJ1
dHRvbi0+ZW5hYmxlKCk7CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJjaGFuZ2VOZXdsaW5lU3Ry
aW5nOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIAogICAgIE5vZGUq
IGxhc3RDbG9zZWQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcyhzdGFydE5vZGUsIHBhc3RF
bmQpOwpAQCAtNjkzLDcgKzY4Nyw2IEBAIHN0YXRpYyBib29sIGZpbmROb2Rlc1N1cnJvdW5kaW5n
Q29udGV4dChEb2N1bWVudCogZG9jdW1lbnQsIFJlZlB0cjxOb2RlPiYgbm9kZUJlCiAKIHN0YXRp
YyB2b2lkIHRyaW1GcmFnbWVudChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgTm9kZSogbm9k
ZUJlZm9yZUNvbnRleHQsIE5vZGUqIG5vZGVBZnRlckNvbnRleHQpCiB7Ci0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPE5vZGU+IG5leHQ7CiAgICAgZm9yIChSZWZQdHI8Tm9k
ZT4gbm9kZSA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBuZXh0KSB7CiAg
ICAgICAgIGlmIChub2RlQmVmb3JlQ29udGV4dC0+aXNEZXNjZW5kYW50T2Yobm9kZS5nZXQoKSkp
IHsKQEAgLTcwMiw3ICs2OTUsNyBAQCBzdGF0aWMgdm9pZCB0cmltRnJhZ21lbnQoRG9jdW1lbnRG
cmFnbWVudCogZnJhZ21lbnQsIE5vZGUqIG5vZGVCZWZvcmVDb250ZXh0LCBObwogICAgICAgICB9
CiAgICAgICAgIG5leHQgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihub2Rl
LmdldCgpKTsKICAgICAgICAgQVNTRVJUKCFub2RlLT5jb250YWlucyhub2RlQWZ0ZXJDb250ZXh0
KSk7Ci0gICAgICAgIG5vZGUtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwg
ZWMpOworICAgICAgICBub2RlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBpZiAobm9kZUJlZm9yZUNvbnRleHQgPT0g
bm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTcxMCw4ICs3MDMsNyBAQCBzdGF0
aWMgdm9pZCB0cmltRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIE5vZGUqIG5v
ZGVCZWZvcmVDb250ZXh0LCBObwogICAgIEFTU0VSVChub2RlQWZ0ZXJDb250ZXh0LT5wYXJlbnRO
b2RlKCkpOwogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBub2RlQWZ0ZXJDb250ZXh0OyBu
b2RlOyBub2RlID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNr
aXBwaW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7Ci0gICAgICAgIG5vZGUtPnBhcmVudE5vZGUoKS0+
cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAg
ICAgbm9kZS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB9CiB9CiAKQEAgLTc0MSwxOSArNzMzLDE2IEBAIFBhc3NSZWZQdHI8
RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9j
dW1lbnQqIGRvY3VtCiAgICAgICAgIHBvc2l0aW9uQWZ0ZXJOb2RlKG5vZGVCZWZvcmVDb250ZXh0
LmdldCgpKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwKICAgICAgICAgcG9zaXRpb25CZWZv
cmVOb2RlKG5vZGVBZnRlckNvbnRleHQuZ2V0KCkpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9y
ID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoIWVjKTsK
KyAgICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5l
cihBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5jZXN0b3Ig
PSBhbmNlc3RvclRvUmV0YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZVdpdGhOb1JlbmRlcmVyKGNv
bW1vbkFuY2VzdG9yKTsKIAogICAgIC8vIFdoZW4gdGhlcmUncyBhIHNwZWNpYWwgY29tbW9uIGFu
Y2VzdG9yIG91dHNpZGUgb2YgdGhlIGZyYWdtZW50LCB3ZSBtdXN0IGluY2x1ZGUgaXQgYXMgd2Vs
bCB0bwogICAgIC8vIHByZXNlcnZlIHRoZSBzdHJ1Y3R1cmUgYW5kIGFwcGVhcmFuY2Ugb2YgdGhl
IGZyYWdtZW50LiBGb3IgZXhhbXBsZSwgaWYgdGhlIGZyYWdtZW50IGNvbnRhaW5zCiAgICAgLy8g
VEQsIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGUgZW5jbG9zaW5nIFRBQkxFIHRhZyBhcyB3ZWxsLgog
ICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6
OmNyZWF0ZShkb2N1bWVudCk7Ci0gICAgaWYgKHNwZWNpYWxDb21tb25BbmNlc3RvcikgewotICAg
ICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoc3BlY2lhbENvbW1vbkFuY2VzdG9yLCBlYyk7Ci0g
ICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0gZWxzZQorICAgIGlmIChzcGVjaWFsQ29tbW9uQW5j
ZXN0b3IpCisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChzcGVjaWFsQ29tbW9uQW5jZXN0
b3IsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIGVsc2UKICAgICAgICAgZnJhZ21lbnQtPnRh
a2VBbGxDaGlsZHJlbkZyb20oc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KGNvbW1vbkFuY2Vz
dG9yKSk7CiAKICAgICB0cmltRnJhZ21lbnQoZnJhZ21lbnQuZ2V0KCksIG5vZGVCZWZvcmVDb250
ZXh0LmdldCgpLCBub2RlQWZ0ZXJDb250ZXh0LmdldCgpKTsKQEAgLTc4MSwxMCArNzcwLDggQEAg
c3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdy
YXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJh
Z3JhcGgtPmRvY3VtZW50KCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAo
c3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0
ZUJsb2NrUGxhY2Vob2xkZXJFbGVtZW50KGRvY3VtZW50KSwgZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKKyAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9s
ZGVyRWxlbWVudChkb2N1bWVudCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC04MDEsMjQgKzc4OCwyMCBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFp
bmVyRnJvbVN0cmluZyhDb250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3Ry
aQogICAgICAgICAvLyBhcHBlbmQgdGhlIG5vbi10YWIgdGV4dHVhbCBwYXJ0CiAgICAgICAgIGlm
ICghcy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlmICghdGFiVGV4dC5pc0VtcHR5KCkpIHsK
LSAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVt
ZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghZWMp
OworICAgICAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVs
ZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAg
ICAgICAgICB0YWJUZXh0ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIFJlZlB0cjxOb2RlPiB0ZXh0Tm9kZSA9IGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJp
bmdXaXRoUmViYWxhbmNlZFdoaXRlc3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMp
KTsKLSAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQodGV4dE5vZGUucmVsZWFzZSgp
LCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC0+
YXBwZW5kQ2hpbGQodGV4dE5vZGUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICAgICAgfQogCiAgICAgICAgIC8vIHRoZXJlIGlzIGEgdGFiIGFmdGVyIGV2ZXJ5IGVudHJ5LCBl
eGNlcHQgdGhlIGxhc3QgZW50cnkKICAgICAgICAgLy8gKGlmIHRoZSBsYXN0IGNoYXJhY3RlciBp
cyBhIHRhYiwgdGhlIGxpc3QgZ2V0cyBhbiBleHRyYSBlbXB0eSBlbnRyeSkKICAgICAgICAgaWYg
KGkgKyAxICE9IG51bUVudHJpZXMpCiAgICAgICAgICAgICB0YWJUZXh0LmFwcGVuZCgnXHQnKTsK
LSAgICAgICAgZWxzZSBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwYXJh
Z3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgCisg
ICAgICAgIGVsc2UgaWYgKCF0YWJUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhcmFncmFw
aC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKwogICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgIH0KIH0K
QEAgLTg1NiwxNiArODM5LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgc3RyaW5n
LnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKICAgICBzdHJpbmcucmVwbGFjZSgnXHInLCAnXG4nKTsK
IAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIg
PSBzdHlsZU5vZGUtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5z
dHlsZSgpLT5wcmVzZXJ2ZU5ld2xpbmUoKSkgewotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hp
bGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZyksIGVjKTsKLSAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4
dE5vZGUoc3RyaW5nKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChzdHJpbmcu
ZW5kc1dpdGgoJ1xuJykpIHsKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0g
Y3JlYXRlQnJlYWtFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0
dHJpYnV0ZShjbGFzc0F0dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAK
LSAgICAgICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMp
OwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5k
Q2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiAgICAgfQpAQCAtOTA3LDggKzg4
Nyw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9
IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGZp
bGxDb250YWluZXJGcm9tU3RyaW5nKGVsZW1lbnQuZ2V0KCksIHMpOwogICAgICAgICB9Ci0gICAg
ICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVs
ZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50
LnJlbGVhc2UoKTsKIH0KQEAgLTkyNCwxNCArOTAzLDExIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tTm9kZXMoRG9jdW1lbnQgKmRvY3VtZW50LCBjb25z
dCBWCiAKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgc2l6ZV90IHNpemUgPSBub2Rlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVE
ZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPmFwcGVu
ZENoaWxkKG5vZGVzW2ldLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFz
ZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQtPmZy
YW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IDQ5MDYzYjM0
OGNlMmZiNzY4ZTA5YjQ2NDVhMGRmNjBmNmE0NDUzMmYuLjA3ZmExYmJhZjE3Mjc4YzNkZTkxNjE4
YjQwNmExODJmMGY1NDliYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJ
bnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
CkBAIC0xMjYsMTEgKzEyNiw4IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1
YnRyZWUoKQogICAgIHdyYXBwZXJFbGVtZW50LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Vi
a2l0LWNvbG9yLXN3YXRjaC13cmFwcGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0
ZXJhbCkpOwogICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY29sb3JTd2F0Y2ggPSBIVE1MRGl2
RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRjaC0+c2V0UHNldWRvKEF0
b21pY1N0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlckVs
ZW1lbnQtPmFwcGVuZENoaWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgZWMpOwotICAgIEFTU0VS
VCghZWMpOwotICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGls
ZCh3cmFwcGVyRWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICB3
cmFwcGVyRWxlbWVudC0+YXBwZW5kQ2hpbGQoY29sb3JTd2F0Y2gucmVsZWFzZSgpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBw
ZW5kQ2hpbGQod3JhcHBlckVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAKICAgICB1cGRhdGVDb2xvclN3YXRjaCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCmluZGV4IGQ3YzI2N2JhMTdiNzk3MGQ2ZmEyYzQ3
YTA3ZjQzMTc1YjUyZThiOGIuLmYyOTQyYTI4M2I1NDNkM2U5OGNjMDg4N2VmNmY0ZGUxNTgxMTM2
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChQYXNzUmVm
UHRyPEhUTUxPcHRpb25FbGVtZW50PiBlbGVtZW50LCBpbnQgaW5kZXgKICAgICBlbHNlCiAgICAg
ICAgIHNlbGVjdC0+YWRkKG5ld09wdGlvbiwgc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQq
PihpdGVtKGluZGV4KSksIGVjKTsKIAotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQo
IWVjKTsKIH0KIAogdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZShpbnQgaW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA3NjE4
YTMzZjEyMjg0ZjgwMDg2ZDI3ZTM1MTA0ZTE4MDIwN2NlMGUzLi5iZmZmNGJmNjhhYTIzYmVkZGIy
ZmQwZWUwZjEwNzYzNTU1OGFiNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5jcHAKQEAgLTUzOSwxMiArNTM5LDEwIEBAIGJvb2wgSFRNTFRleHRBcmVhRWxl
bWVudDo6bWF0Y2hlc1JlYWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3QKIAogdm9pZCBIVE1MVGV4
dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewotICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwogICAgIFN0cmluZyBwbGFjZWhvbGRlclRleHQgPSBzdHJpcHBlZFBsYWNlaG9s
ZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYg
KG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+cmVt
b3ZlQ2hpbGQobV9wbGFjZWhvbGRlciwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xk
ZXIsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDExICs1NTEsOSBAQCB2b2lkIEhU
TUxUZXh0QXJlYUVsZW1lbnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIFJlZlB0
cjxIVE1MRGl2RWxlbWVudD4gcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRv
Y3VtZW50KCkpOwogICAgICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7CiAg
ICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtaW5w
dXQtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0g
ICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIs
IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKKyAgICAgICAgdXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFj
ZWhvbGRlciwgaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICB9Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9s
ZGVyVGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1fcGxhY2Vob2xkZXItPnNldElu
bmVyVGV4dChwbGFjZWhvbGRlclRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGZpeFBs
YWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlciwgaW5uZXJUZXh0RWxlbWVudCgpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
LmNwcAppbmRleCA2MmY0YTE2MmZjZTMxYzk4NWEzMzQ1Nzk5MDE1ODU4ZjNjMTAwMGExLi45NzM5
NTIzNGFhMzBlOTJmOGEyYWMyMjcxMWY5Y2ZjMTVmNDM3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMzUwLDEyICsz
NTAsOSBAQCBpbnQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBv
c2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcAogICAgIFBvc2l0aW9uIGluZGV4UG9zaXRp
b24gPSBwb3MuZGVlcEVxdWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAg
ICBpZiAoZW5jbG9zaW5nVGV4dEZvcm1Db250cm9sKGluZGV4UG9zaXRpb24pICE9IHRoaXMpCiAg
ICAgICAgIHJldHVybiAwOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxS
YW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGluZGV4UG9zaXRpb24uZG9jdW1lbnQoKSk7Ci0g
ICAgcmFuZ2UtPnNldFN0YXJ0KGlubmVyVGV4dEVsZW1lbnQoKSwgMCwgZWMpOwotICAgIEFTU0VS
VCghZWMpOwotICAgIHJhbmdlLT5zZXRFbmQoaW5kZXhQb3NpdGlvbi5jb250YWluZXJOb2RlKCks
IGluZGV4UG9zaXRpb24ub2Zmc2V0SW5Db250YWluZXJOb2RlKCksIGVjKTsKLSAgICBBU1NFUlQo
IWVjKTsKKyAgICByYW5nZS0+c2V0U3RhcnQoaW5uZXJUZXh0RWxlbWVudCgpLCAwLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24uY29udGFpbmVy
Tm9kZSgpLCBpbmRleFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5n
ZXQoKSk7CiB9CiAKQEAgLTUzOSwxNCArNTM2LDEwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAg
IGlmICh0ZXh0SXNDaGFuZ2VkICYmIGRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKSAmJiBBWE9iamVj
dENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6OkFY
VmFsdWVDaGFuZ2VkLCBmYWxzZSk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+c2V0SW5uZXJUZXh0KHZhbHVlLCBlYyk7Ci0gICAg
ICAgIEFTU0VSVCghZWMpOworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4
dCh2YWx1ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKHZhbHVlLmVuZHNX
aXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKSB7Ci0gICAgICAgICAgICBpbm5lclRl
eHRFbGVtZW50KCktPmFwcGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgp
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKQorICAgICAgICAg
ICAgaW5uZXJUZXh0RWxlbWVudCgpLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUo
ZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIAogICAgIHNldEZvcm1D
b250cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Rl
eHRGaWVsZElucHV0VHlwZS5jcHAKaW5kZXggMDJlZjJkNTYyNDYyNDg3ZDM2MzgwMzRhNmQ3NWZm
ODBhY2YyM2Y3Mi4uNThmMmFhNGU1YzQ4ZGY4MmE1ZWE4YWJiMTY4MTE2NGI1MWQ2MTgwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNDA2LDEyICs0
MDYsMTAgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgp
CiB7CiAgICAgaWYgKCFzdXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxl
bWVudCgpLT5zdHJpcHBlZFBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5p
c0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgICAgIG1f
cGxhY2Vob2xkZXItPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhvbGRlci5nZXQo
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBtX3BsYWNlaG9s
ZGVyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIEFTU0VS
VF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlci5jbGVhcigpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTQxOSwxMSArNDE3LDkgQEAgdm9pZCBUZXh0Rmll
bGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9s
ZGVyKSB7CiAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGVs
ZW1lbnQoKS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFBzZXVkbyhB
dG9taWNTdHJpbmcoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNv
bnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93
Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRh
aW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwg
ZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRT
aGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBtX2NvbnRhaW5lciA/IG1f
Y29udGFpbmVyLT5uZXh0U2libGluZygpIDogaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGlu
ZygpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0
SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1f
cGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGVsZW1lbnQoKS0+Zml4UGxhY2Vob2xkZXJSZW5kZXJlcihtX3BsYWNlaG9s
ZGVyLmdldCgpLCBtX2NvbnRhaW5lciA/IG1fY29udGFpbmVyLmdldCgpIDogbV9pbm5lclRleHQu
Z2V0KCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmlu
ZGV4IGE2MzQzZjkyMTM0YTBjNzk0ZjQxYWJlMzUzMTkyZDVhZDNhYmJmNGYuLjM5ZDU2MjUwNGEz
NDcwYmM0NTU2ZmNiNjUxNTBiYjI0NmE5MDU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFs
aWRhdGlvbk1lc3NhZ2UuY3BwCkBAIC0xODMsOSArMTgzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVz
c2FnZTo6YnVpbGRCdWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgLy8g
TmVlZCB0byBmb3JjZSBwb3NpdGlvbjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRv
ZXNuJ3QgYXNzdW1lIGl0CiAgICAgLy8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhl
ZCByZW5kZXJlcnMgYXMgY2hpbGRyZW4uCiAgICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJv
cGVydHkoQ1NTUHJvcGVydHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9idWJibGUuZ2V0
KCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZCht
X2J1YmJsZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgbV9lbGVtZW50LT5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKICAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihtX2VsZW1l
bnQtPmJvdW5kaW5nQm94KCksIG1fYnViYmxlLmdldCgpKTsKIApAQCAtMTkzLDEwICsxOTEsOCBA
QCB2b2lkIFZhbGlkYXRpb25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlv
bk1lc3NhZ2U+KikKICAgICBjbGlwcGVyLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0
LXZhbGlkYXRpb24tYnViYmxlLWFycm93LWNsaXBwZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSk7CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBidWJibGVBcnJvdyA9
IEhUTUxEaXZFbGVtZW50OjpjcmVhdGUoZG9jKTsKICAgICBidWJibGVBcnJvdy0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKLSAgICBjbGlwcGVyLT5hcHBlbmRDaGlsZChi
dWJibGVBcnJvdy5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBtX2J1YmJs
ZS0+YXBwZW5kQ2hpbGQoY2xpcHBlci5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsK
KyAgICBjbGlwcGVyLT5hcHBlbmRDaGlsZChidWJibGVBcnJvdy5yZWxlYXNlKCksIEFTU0VSVF9O
T19FWENFUFRJT04pOworICAgIG1fYnViYmxlLT5hcHBlbmRDaGlsZChjbGlwcGVyLnJlbGVhc2Uo
KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1lc3Nh
Z2UgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgbWVzc2FnZS0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIiwgQXRvbWlj
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggOThkODAx
Yjk4NWRjZDU4YWQ0NmY3ZTRlYWJmNzkzODAxNWU1ZmQ4OC4uYTA0MzEzNDdmMTQ5NTdiY2IwYzA3
ZWE3ODUxY2FlN2U5YjgxZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC0yOTMsMTEgKzI5Myw4IEBA
IHZvaWQgTWVkaWFDb250cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxl
cihFdmVudCogZXZlbnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHZvbHVtZSA9IG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKLSAgICBpZiAodm9sdW1l
ICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkgewotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIGVj
KTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQorICAgIGlmICh2b2x1bWUgIT0gbWVkaWFD
b250cm9sbGVyKCktPnZvbHVtZSgpKQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Vm9s
dW1lKHZvbHVtZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKG1fY2xlYXJNdXRlZE9u
VXNlckludGVyYWN0aW9uKQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0TXV0ZWQoZmFs
c2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBh
Z2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50
LmNwcAppbmRleCBlNjczYTAwM2IxNzdkNTM1OTMyM2E1ODA3MTEyYjZmMWQ1Y2RmOWY3Li45NDEz
NTI3NjViY2VmZmE0MTY1NTllZmJiOWFhODQ4Y2JmYjQ0YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTQ2LDExICs1NDYsMTAg
QEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQ
dHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGUKICAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1l
bnRlZCA9IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXQp
LCBkb2NDb29raWVzTGlzdCk7CiAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRl
ZCkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNr
aW5nIGZvciB0aGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQ29va2ll
c0xpc3QuYXBwZW5kKGRvY3VtZW50LT5jb29raWUoZWMpKTsKKyAgICAgICAgICAgICAgICAvLwog
ICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbnMgYXJlIHRocm93biBieSBjb29raWUoKSBpbiBz
YW5kYm94ZWQgZnJhbWVzLiBUaGF0IHdvbid0IGhhcHBlbiBoZXJlCiAgICAgICAgICAgICAgICAg
Ly8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBv
ZiB0aGUgcGFnZS4KLSAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAg
ICBzdHJpbmdDb29raWVzTGlzdC5hcHBlbmQoZG9jdW1lbnQtPmNvb2tpZShBU1NFUlRfTk9fRVhD
RVBUSU9OKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29r
aWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2M2U2MzllZDczZGExN2Y2NTU1
ZDBkZjZhNmNjNmNhNTRlNjhmZmFkLi5kYWFjYjk3MDg0ZTcxMWE2ZjU4NjFhYWJiMWQyYjU0ZDAy
YjM4MTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxl
U2hlZXQuY3BwCkBAIC04NjIsOCArODYyLDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHls
ZVNoZWV0OjphZGRSdWxlKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUKICAg
ICBpZiAoIXN0eWxlUnVsZSkgewogICAgICAgICAvLyBXaGF0IHdlIGp1c3QgYWRkZWQgaGFzIHRv
IGJlIGEgQ1NTU3R5bGVSdWxlIC0gd2UgY2Fubm90IGhhbmRsZSBvdGhlciB0eXBlcyBvZiBydWxl
cyB5ZXQuCiAgICAgICAgIC8vIElmIGl0IGlzIG5vdCBhIHN0eWxlIHJ1bGUsIHByZXRlbmQgd2Ug
bmV2ZXIgdG91Y2hlZCB0aGUgc3R5bGVzaGVldC4KLSAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+
ZGVsZXRlUnVsZShsYXN0UnVsZUluZGV4LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICBtX3BhZ2VTdHlsZVNoZWV0LT5kZWxldGVSdWxlKGxhc3RSdWxlSW5kZXgsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IDUxM2YwNjZmZGU3NDI4OGQ0NWQxODhiMTIwMWM4
NWE3NGJlODFhZGQuLjE4ZmNlNjVjZjYwOTUwZjk2NDQ2NzMwZjk3NDM1ZjVmNTEzMWRlNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0LmNwcApAQCAtMzA4LDE0ICszMDgsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6ZGlzcGF0Y2hET01FdmVudChFdmVudElEIGlkLCBpbnQgdG90YWwsIGludCBkb25lKQog
ewogICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKICAgICAgICAgY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCk7
Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2
ZW50OwogICAgICAgICBpZiAoaWQgPT0gUFJPR1JFU1NfRVZFTlQpCiAgICAgICAgICAgICBldmVu
dCA9IFByb2dyZXNzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGRvbmUsIHRvdGFsKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50VHlw
ZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRj
aEV2ZW50KGV2ZW50LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBtX2RvbUFw
cGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IGUyZDc3
MWExNWIyMjM4NGJlZjZiZDQ2ODJhYWM0ZjZhOTBmNDM1MDkuLjJkMzE5MmI2YjM5ODIzYzg5MjMx
OTA1OWZlNjA4MDUzMTkxOTM0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
U2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAK
QEAgLTQzOCwxMiArNDM4LDkgQEAgdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVu
dCgpCiAgICAgaWYgKCFzZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBzZWxlY3RlZFJhbmdlLT5kZWxldGVDb250ZW50cyhlYyk7
Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2VsZWN0ZWRSYW5nZS0+ZGVsZXRlQ29udGVudHMoQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAKLSAgICBzZXRCYXNlQW5kRXh0ZW50KHNlbGVjdGVkUmFuZ2Ut
PnN0YXJ0Q29udGFpbmVyKGVjKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSwgc2VsZWN0
ZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSwg
ZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNldEJhc2VBbmRFeHRlbnQoc2VsZWN0ZWRSYW5n
ZS0+c3RhcnRDb250YWluZXIoQVNTRVJUX05PX0VYQ0VQVElPTiksIHNlbGVjdGVkUmFuZ2UtPnN0
YXJ0T2Zmc2V0KCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHNlbGVjdGVkUmFu
Z2UtPnN0YXJ0T2Zmc2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiBib29sIERPTVNl
bGVjdGlvbjo6Y29udGFpbnNOb2RlKGNvbnN0IE5vZGUqIG4sIGJvb2wgYWxsb3dQYXJ0aWFsKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAxMDMyMjgzN2Ey
MDMyMTYwMjVlMzE5YjRiODMzNTIwOTY0NDIwYmQzLi5lMTcxNjUzNDU5NDliYjhjODEyNThjOTkw
MTY4YmY2MjI1ZDc3ZTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApA
QCAtNzAxLDkgKzcwMSw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURy
YWcoRnJhbWUqIHNvdXJjZSwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsCiB7CiAgICAgaWYgKG5v
ZGUtPmlzQ29udGVudFJpY2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiBy
YW5nZSA9IHNvdXJjZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIHJhbmdlLT5zZWxlY3ROb2RlKG5vZGUsIGVjKTsKLSAg
ICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHJhbmdlLT5zZWxlY3ROb2RlKG5vZGUsIEFTU0VS
VF9OT19FWENFUFRJT04pOwogICAgICAgICBzb3VyY2UtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSkpOwogICAgIH0KICAg
ICBjbGlwYm9hcmQtPmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShub2RlLCAhbGlua1VSTC5pc0Vt
cHR5KCkgPyBsaW5rVVJMIDogaW1hZ2VVUkwsIGxhYmVsLCBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggZjkzYWRkYjQ5MmVl
NTQzYjQyNDExM2YyOTNlZDkwZWY5ZGRmYTJjNC4uYzdjNTc2ODk2MGJmODRhYjQzY2Q1MjFlYzA2
N2Y0OTFkNWYwNWQwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCkBAIC0xMjksMTAgKzEyOSw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJU
ZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25zdAogewog
ICAgIGlmIChpbmRleCA8PSAwKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0
UG9zaXRpb25Jbk5vZGUoaW5uZXJUZXh0RWxlbWVudCgpKSwgRE9XTlNUUkVBTSk7Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVh
dGUoZG9jdW1lbnQoKSk7Ci0gICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhpbm5lclRleHRF
bGVtZW50KCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICByYW5nZS0+c2VsZWN0Tm9kZUNv
bnRlbnRzKGlubmVyVGV4dEVsZW1lbnQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgQ2hh
cmFjdGVySXRlcmF0b3IgaXQocmFuZ2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAx
KTsKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCks
IFVQU1RSRUFNKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
VkdSZW5kZXJTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRl
clN0eWxlLmgKaW5kZXggYmUwYTQ3OWJjZjE4YTNlZmYxNjdlYTMzOWUyYzRlYTVhNGMwNTQwNi4u
ZWU2OWRiNmVmZmE5OGRkMDZjZjZiNmJhYjI0NTg1ZmZjM2I3NTE4YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKQEAgLTI2LDYgKzI2LDcg
QEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUg
IkRhdGFSZWYuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNs
dWRlICJHcmFwaGljc1R5cGVzLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlQ29uc3RhbnRzLmgiCkBAIC05NywzNiArOTgsMjggQEAgcHVibGljOgogICAgIHN0YXRp
YyBTVkdMZW5ndGggaW5pdGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpCiAgICAgewogICAgICAgICBT
VkdMZW5ndGggbGVuZ3RoOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAg
bGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgZWMpOwot
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5p
dHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIHJl
dHVybiBsZW5ndGg7CiAgICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFsS2Vybmlu
ZygpCiAgICAgewogICAgICAgICBTVkdMZW5ndGggbGVuZ3RoOwotICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgMCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGVuZ3Ro
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAgICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgfQogCiAgICAgc3RhdGljIFNW
R0xlbmd0aCBpbml0aWFsU3Ryb2tlRGFzaE9mZnNldCgpCiAgICAgewogICAgICAgICBTVkdMZW5n
dGggbGVuZ3RoOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbGVuZ3Ro
Lm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgZWMpOwotICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVu
Z3RoVHlwZU51bWJlciwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybiBs
ZW5ndGg7CiAgICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFsU3Ryb2tlV2lkdGgo
KQogICAgIHsKICAgICAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5
cGVOdW1iZXIsIDEsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGxlbmd0aC5u
ZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDEsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKaW5kZXggN2MyNmViZDM1ZTMzNzczNmU4YTY5NDJjYzdj
Yjc4N2FmMWE5NGY3OS4uMGFjOGJmMDY1MTZjYTE0NTU5MWQwMDU4Zjc4MTg1NTBlZmZhM2RkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCkBAIC0zNiw5ICszNiw3
IEBAIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OlNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3Io
U1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0CiBzdGF0aWMgaW5saW5lIFNWR0xlbmd0aCYgc2hh
cmVkU1ZHTGVuZ3RoKFNWR0xlbmd0aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3Ry
aW5nKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHTGVuZ3RoLCBzaGFyZWRMZW5ndGgs
ICgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzaGFyZWRMZW5ndGguc2V0VmFs
dWVBc1N0cmluZyh2YWx1ZUFzU3RyaW5nLCBtb2RlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Cisg
ICAgc2hhcmVkTGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZywgbW9kZSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIHNoYXJlZExlbmd0aDsKIH0KIApAQCAtODEs
OSArNzksNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlw
ZXMoU1ZHQW5pbWF0ZWRUeXBlKiBmcm9tLCBTVkdBbmltYQogICAgIGNvbnN0IFNWR0xlbmd0aCYg
ZnJvbUxlbmd0aCA9IGZyb20tPmxlbmd0aCgpOwogICAgIFNWR0xlbmd0aCYgdG9MZW5ndGggPSB0
by0+bGVuZ3RoKCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB0b0xlbmd0aC5z
ZXRWYWx1ZSh0b0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGgudmFsdWUo
bGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAg
ICB0b0xlbmd0aC5zZXRWYWx1ZSh0b0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21M
ZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogfQogCiBzdGF0aWMgU1ZHTGVuZ3RoIHBhcnNlTGVuZ3RoRnJvbVN0cmluZyhTVkdB
bmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykK
QEAgLTExMCw5ICsxMDYsNyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZQogICAgIFNWR0xlbmd0
aFR5cGUgdW5pdFR5cGUgPSBwZXJjZW50YWdlIDwgMC41ID8gZnJvbVNWR0xlbmd0aC51bml0VHlw
ZSgpIDogdG9TVkdMZW5ndGgudW5pdFR5cGUoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFu
aW1hdGVBZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbVNWR0xlbmd0
aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgdG9TVkdMZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCks
IHRvQXRFbmRPZkR1cmF0aW9uU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpLCBhbmltYXRl
ZE51bWJlcik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbmltYXRlZFNWR0xl
bmd0aC5zZXRWYWx1ZShsZW5ndGhDb250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5ndGhNb2Rl
LCB1bml0VHlwZSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIGFuaW1hdGVkU1ZHTGVuZ3Ro
LnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUsIHVu
aXRUeXBlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0ZWRMZW5n
dGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmNwcAppbmRleCA4MTJiOTBhZjg1NjZkNGNmZjZlMTBmN2Y0MTYwMGEzNGYzODFk
ZmVhLi5iNmEyM2FjYmEyYTg4M2JlZDU4YmNhOGM2YjZlM2I1MzQxNDFiMzU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcApAQCAtNzgsMTEgKzc4LDgg
QEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhT
VkdBbmltYXRlZFR5cGUqIGZyb20sIFNWR0EKICAgICAgICAgcmV0dXJuOwogCiAgICAgU1ZHTGVu
Z3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVuZ3RoTGlz
dFNpemU7ICsraSkgewotICAgICAgICB0b0xlbmd0aExpc3RbaV0uc2V0VmFsdWUodG9MZW5ndGhM
aXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpICsgZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVu
Z3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0g
ICAgfQorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVuZ3RoTGlzdFNpemU7ICsr
aSkKKyAgICAgICAgdG9MZW5ndGhMaXN0W2ldLnNldFZhbHVlKHRvTGVuZ3RoTGlzdFtpXS52YWx1
ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQp
LCBsZW5ndGhDb250ZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogc3RhdGljIFNWR0xl
bmd0aExpc3QgcGFyc2VMZW5ndGhMaXN0RnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50KiBh
bmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExNCw3ICsxMTEsNiBA
QCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVucwogICAgIHVuc2lnbmVkIHRvQXRFbmRPZkR1cmF0aW9u
TGlzdFNpemUgPSB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3Quc2l6ZSgpOwogCiAgICAgU1ZH
TGVuZ3RoQ29udGV4dCBsZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b0xlbmd0aExp
c3RTaXplOyArK2kpIHsKICAgICAgICAgZmxvYXQgYW5pbWF0ZWROdW1iZXIgPSBhbmltYXRlZExl
bmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCk7CiAgICAgICAgIFNWR0xlbmd0aFR5cGUg
dW5pdFR5cGUgPSB0b0xlbmd0aExpc3RbaV0udW5pdFR5cGUoKTsKQEAgLTEyNyw4ICsxMjMsNyBA
QCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVucwogICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5k
ID0gaSA8IHRvQXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0
aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCkgOiAwOwogCiAgICAgICAgIG1fYW5pbWF0aW9u
RWxlbWVudC0+YW5pbWF0ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBl
ZmZlY3RpdmVGcm9tLCB0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCksIGVmZmVj
dGl2ZVRvQXRFbmQsIGFuaW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYW5pbWF0ZWRMZW5ndGhMaXN0
W2ldLnNldFZhbHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUs
IHVuaXRUeXBlLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBhbmltYXRlZExl
bmd0aExpc3RbaV0uc2V0VmFsdWUobGVuZ3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1fbGVu
Z3RoTW9kZSwgdW5pdFR5cGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGVuZ3RoLmNwcAppbmRleCBiZjViZjQyMzYxNTE0Nzc3NDZiZjcwMjI1Nzk0NjNl
MWFhMTI1MTY5Li5lNzBkODZhZDMzNDIzMzIzYWU4OTVjZDFhM2IyOGI3ZTFlMzkzNThkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGVuZ3RoLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0hl
bHBlci5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1
ZGUgIkZsb2F0Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCkBAIC0xMzIsOSArMTMzLDcgQEAgU1ZHTGVuZ3RoOjpTVkdM
ZW5ndGgoY29uc3QgU1ZHTGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xl
bmd0aE1vZGUKICAgICA6IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKDApCiAgICAgLCBtX3VuaXQo
c3RvcmVVbml0KG1vZGUsIHVuaXRUeXBlKSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBzZXRWYWx1ZSh2YWx1ZSwgY29udGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAg
IHNldFZhbHVlKHZhbHVlLCBjb250ZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogU1ZH
TGVuZ3RoOjpTVkdMZW5ndGgoY29uc3QgU1ZHTGVuZ3RoJiBvdGhlcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKaW5kZXggMzk0M2ZmZWJkYTIzY2IyMjRh
OTQ0YWU4ZDk3OWZlYTYxZWU1MDczNS4uY2I4NmYwOGI2OGQyNzM0ODJlZmFjMzk2NTE3YzE4MDNk
YjEwNDQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAKQEAgLTk1LDExICs5NSw4IEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZH
VGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXCiBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkTGVuZ3RoPiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmlt
YXRlZCgpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTVkdMZW5ndGgsIGRlZmF1bHRUZXh0
TGVuZ3RoLCAoTGVuZ3RoTW9kZU90aGVyKSk7Ci0gICAgaWYgKG1fc3BlY2lmaWVkVGV4dExlbmd0
aCA9PSBkZWZhdWx0VGV4dExlbmd0aCkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICAgICAgbV90ZXh0TGVuZ3RoLnZhbHVlLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3Ro
VHlwZU51bWJlciwgZ2V0Q29tcHV0ZWRUZXh0TGVuZ3RoKCksIGVjKTsKLSAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgfQorICAgIGlmIChtX3NwZWNpZmllZFRleHRMZW5ndGggPT0gZGVmYXVsdFRl
eHRMZW5ndGgpCisgICAgICAgIG1fdGV4dExlbmd0aC52YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVu
aXRzKExlbmd0aFR5cGVOdW1iZXIsIGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKIAogICAgIG1fdGV4dExlbmd0aC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7
CiAgICAgcmV0dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5ndGg+KGxvb2t1
cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCA2NzdiN2UwZDdmNmE0Zjc0MDc3
ZDlhZGVkMjExZGNiY2ZlOGIwNWE5Li5jYjhhNDQ0YmNiZDI5MzVlMjRmN2RlYTc4ZTUyN2M0ZmVh
ZDg3NzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVt
ZW50LmNwcApAQCAtMjAyLDEwICsyMDIsOCBAQCBzdGF0aWMgaW5saW5lIFF1YWxpZmllZE5hbWUg
Y29uc3RydWN0UXVhbGlmaWVkTmFtZShjb25zdCBTVkdFbGVtZW50KiBzdmdFbGVtZW50LAogICAg
IAogICAgIFN0cmluZyBwcmVmaXg7CiAgICAgU3RyaW5nIGxvY2FsTmFtZTsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoYXR0
cmlidXRlTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIGVjKSkKKyAgICBpZiAoIURvY3VtZW50Ojpw
YXJzZVF1YWxpZmllZE5hbWUoYXR0cmlidXRlTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIEFTU0VS
VF9OT19FWENFUFRJT04pKQogICAgICAgICByZXR1cm4gYW55UU5hbWUoKTsKLSAgICBBU1NFUlQo
IWVjKTsKICAgICAKICAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gc3ZnRWxlbWVudC0+bG9va3Vw
TmFtZXNwYWNlVVJJKHByZWZpeCk7ICAgIAogICAgIGlmIChuYW1lc3BhY2VVUkkuaXNFbXB0eSgp
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186862</attachid>
            <date>2013-02-06 08:42:34 -0800</date>
            <delta_ts>2013-02-07 00:20:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109044-20130206173910.patch</filename>
            <type>text/plain</type>
            <size>57441</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWUxNDEzMjk2Y2Y4MmEx
YWU1ODIzZjc4ZDNiNjQ4ZTdiMzBjNjBiZi4uOTk0ZTlkNmM5Mzk0OTYzYjczMTkyYWNjZDQyODBm
OWYyMjM0NjQzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMy0wMi0wNiAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgRXhjZXB0aW9u
Q29kZSBhc3NlcnRpb25zIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTiBtYWNyby4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBwYXR0ZXJuOgorCisg
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1ldGhvZFRoYXRH
ZW5lcmF0ZXNFeGNlcHRpb24oZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisKKyAgICAg
ICAgaXMgbW9yZSBjbGVhcmx5IGFuZCBzdWNjaW5jdGx5IHdyaXR0ZW4gYXM6CisKKyAgICAgICAg
ICAgIG1ldGhvZFRoYXRHZW5lcmF0ZXNFeGNlcHRpb24oQVNTRVJUX05PX0VYQ0VQVElPTik7CisK
KyAgICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgb2NjdXJhbmNlcyBvZiB0aGUgZm9ybWVy
IHRoYXQgbmV2ZXIgdG91Y2ggJ2VjJworICAgICAgICBhZ2FpbiB3aXRoIHRoZSBsYXR0ZXIuIEl0
IGRvZXMgdGhlIHNhbWUgZm9yICdBU1NFUlQoZWMgPT0gMCk7JyAoYW5kLCBhcworICAgICAgICBh
IGRyaXZlLWJ5LCByZXBsYWNlcyAnQVNTRVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScg
aW4gcGxhY2VzCisgICAgICAgIHdoZXJlIGl0IGRvZXMgaW5kZWVkIG1hdHRlciB0aGF0ICdlYycg
Z2V0IHNldCBwcm9wZXJseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc2hvdWxk
IHJlc3VsdCBmcm9tIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rp
b24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlKToKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vTWVz
c2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVz
c2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMp
OgorICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjplbmNsb3NpbmdEZWxldGFibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OkRlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURlbGV0aW9uVUkpOgorICAgICAgICAgICAg
UmVwbGFjZWQgaW5saW5lIEFTU0VSVCB3aXRoIEFTU0VSVF9OT19FWENFUFRJT04uCisgICAgICAg
IChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAgICAgIFJl
cGxhY2VkICdBU1NFUlQoZWMgPT0gMCknIHdpdGggJ0FTU0VSVCghZWMpJyB0byBtYXRjaCB0aGUg
c3R5bGUgZ3VpZGUuCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnVuaW9uRE9NUmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VO
b2RlV2l0aFNwYW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN3YXBJbk5vZGVQcmVz
ZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21l
bnQ6OlJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZW1lbnRG
cmFnbWVudDo6cmVtb3ZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdt
ZW50OjppbnNlcnROb2RlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJh
Z21lbnQ6Omluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXBsYWNlbWVudEZyYWdtZW50OjpyZXN0b3JlQW5kUmVtb3ZlVGVzdFJlbmRlcmluZ05vZGVz
VG9GcmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
aW5zZXJ0QXNMaXN0SXRlbXMpOgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1h
bmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBs
eSk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJk
c0NoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0
b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxh
cHNlZFRvQm91bmRhcnkpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlVGFiU3BhbkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0
aW9uU3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjp0cmltRnJhZ21lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFn
bWVudEZyb21Ob2Rlcyk6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAg
ICAgICAgICBSZXBsYWNlZCBpbmxpbmUgQVNTRVJUIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTi4K
KyAgICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZCk6CisgICAgICAgICAgICBSZXBsYWNlZCAn
QVNTRVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScgdG8gbWF0Y2ggdGhlIHN0eWxlIGd1
aWRlLgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAg
ICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5l
clRleHRWYWx1ZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQp
OgorICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9z
aGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHls
ZVNoZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmRp
c3BhdGNoRE9NRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KToKKyAgICAgICAg
KiBwYWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVDbGlw
Ym9hcmRGb3JJbWFnZURyYWcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJv
bC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0
aW9uRm9ySW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlRGFzaE9m
ZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVdp
ZHRoKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hhcmVkU1ZHTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVu
Z3RoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZSk6CisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdM
ZW5ndGg6OlNWR0xlbmd0aCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhB
bmltYXRlZCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKToKKyAgICAgICAgICAgIFJl
cGxhY2VkIGlubGluZSBBU1NFUlQgd2l0aCBBU1NFUlRfTk9fRVhDRVBUSU9OLgorCiAyMDEzLTAy
LTA2ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFJlbW92ZSBpc1NuaXBwZXQgZmllbGQgZnJvbSBGaWxlRGVzY3JpcHRvciBh
bmQgVUlTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkN1cnNvci5jcHAKaW5kZXggNzQ2NTAxMzFmOWExZGQxOWE1ZjZmZTEwNmU2MTQyYmU2MDZhNzMz
ZS4uYWYyYWZjZDdhYjBlMWE1ZWEzNTUzMjNjY2FkOWUwNWRjM2U5NTA2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCkBAIC05NSw5ICs5NSw3
IEBAIElEQkN1cnNvcjo6fklEQkN1cnNvcigpCiBjb25zdCBTdHJpbmcmIElEQkN1cnNvcjo6ZGly
ZWN0aW9uKCkgY29uc3QKIHsKICAgICBJREJfVFJBQ0UoIklEQkN1cnNvcjo6ZGlyZWN0aW9uIik7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJl
Y3Rpb24gPSBkaXJlY3Rpb25Ub1N0cmluZyhtX2RpcmVjdGlvbiwgZWMpOwotICAgIEFTU0VSVCgh
ZWMpOworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZGlyZWN0aW9uID0gZGlyZWN0aW9uVG9TdHJp
bmcobV9kaXJlY3Rpb24sIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIHJldHVybiBkaXJlY3Rp
b247CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9i
amVjdFN0b3JlLmNwcAppbmRleCAzNDM2ODM0MDE3NTAzMjgxOTgxY2RlZWIwN2UwYjRhMzcxMTAx
OTcxLi40YzU4Y2UzYTc3Mzc2NDc1YTI0NGM3NDhmOGE0ODU3YzMzZGZlMzJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBA
IC0zMjIsOSArMzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9
IGV2ZW50LT50YXJnZXQoKTsKICAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19j
YXN0PElEQlJlcXVlc3QqPih0YXJnZXQpOwogCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgICAgICBSZWZQdHI8SURCQW55PiBjdXJzb3JBbnkgPSByZXF1ZXN0LT5yZXN1bHQoZWMp
OwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgUmVmUHRyPElEQkFueT4gY3Vyc29yQW55
ID0gcmVxdWVzdC0+cmVzdWx0KEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBSZWZQdHI8
SURCQ3Vyc29yV2l0aFZhbHVlPiBjdXJzb3I7CiAgICAgICAgIGlmIChjdXJzb3JBbnktPnR5cGUo
KSA9PSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCiAgICAgICAgICAgICBjdXJzb3Ig
PSBjdXJzb3JBbnktPmlkYkN1cnNvcldpdGhWYWx1ZSgpOwpAQCAtMzMyLDggKzMzMCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFZlY3RvcjxpbnQ2NF90LCAxPiBpbmRleElkczsKICAgICAgICAgaW5k
ZXhJZHMuYXBwZW5kKG1faW5kZXhNZXRhZGF0YS5pZCk7CiAgICAgICAgIGlmIChjdXJzb3IpIHsK
LSAgICAgICAgICAgIGN1cnNvci0+Y29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJLZXkq
PigwKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBjdXJzb3It
PmNvbnRpbnVlRnVuY3Rpb24oc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIEFTU0VSVF9OT19FWENF
UFRJT04pOwogCiAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gY3Vyc29y
LT5pZGJQcmltYXJ5S2V5KCk7CiAgICAgICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGN1cnNv
ci0+dmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmNwcAppbmRleCBiYjYwYjRlNDdhNGExMjE5YmI4YWJhZDI2YmQ0OTcxY2Yx
NWI3YjBhLi43YTRhOWM3MjkxYjVhNGM1MjY2NzBmNWI4NTE4YTYyN2Q0YWJkMjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
CkBAIC0xMjEsOSArMTIxLDcgQEAgSURCVHJhbnNhY3Rpb246On5JREJUcmFuc2FjdGlvbigpCiAK
IGNvbnN0IFN0cmluZyYgSURCVHJhbnNhY3Rpb246Om1vZGUoKSBjb25zdAogewotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbW9kZSA9IG1vZGVUb1N0
cmluZyhtX21vZGUsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIG1vZGUgPSBtb2RlVG9TdHJpbmcobV9tb2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICByZXR1cm4gbW9kZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4
IDI3N2ZjYTBmNzNjNDg3YmFkN2M0ODc4MTJkYWExOGExZmZjNzhmMzYuLjlkZDdhYTBkYzNkOTRj
NTAxZTAzZDhhOTMwOWQ0NDJkYmVlYzFkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9k
ZS5jcHAKQEAgLTEwOCwxMiArMTA4LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENo
aWxkcmVuRnJvbShDb250YWluZXJOb2RlKiBvbGRQYXJlbnQpCiAgICAgb2xkUGFyZW50LT5yZW1v
dmVEZXRhY2hlZENoaWxkcmVuKCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hp
bGRyZW4uc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
ICAgIGlmIChjaGlsZHJlbltpXS0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIGNoaWxkcmVuW2ld
LT5kZXRhY2goKTsKICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSBubyBtdXRhdGlvbiBldmVu
dCB2ZXJzaW9uIG9mIGFkb3B0Tm9kZS4KLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gZG9j
dW1lbnQoKS0+YWRvcHROb2RlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwotICAgICAgICBB
U1NFUlQoIWVjKTsKKyAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gZG9jdW1lbnQoKS0+YWRv
cHROb2RlKGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
ICAgIHBhcnNlckFwcGVuZENoaWxkKGNoaWxkLmdldCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRv
Z2V0aGVyIHdpdGggYWRvcHROb2RlIGFib3ZlLCB0aGUgdHJlZSBzY29wZSBtaWdodCBnZXQgdXBk
YXRlZCByZWN1cnNpdmVseSB0d2ljZQogICAgICAgICAvLyAoaWYgdGhlIGRvY3VtZW50IGNoYW5n
ZWQgb3Igb2xkUGFyZW50IHdhcyBpbiBhIHNoYWRvdyB0cmVlLCBBTkQgKnRoaXMgaXMgaW4gYSBz
aGFkb3cgdHJlZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA2MjE0NzU2YmMxNDM4OTMx
Njk5NjRkZWFjZmY3MmNhZmE3MjAzNmIyLi5hOWZiYWE1YzY5NDc5ZjIyOGFmMDA3NDAxMzBjYjE4
NmQ0ODVkODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MjksOSArMTUyOSw3IEBA
IHZvaWQgRG9jdW1lbnQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgZWxzZSBp
ZiAoIW1fdGl0bGVFbGVtZW50KSB7CiAgICAgICAgIGlmIChIVE1MRWxlbWVudCogaGVhZEVsZW1l
bnQgPSBoZWFkKCkpIHsKICAgICAgICAgICAgIG1fdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVu
dCh0aXRsZVRhZywgZmFsc2UpOwotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgICAgICAgICBoZWFkRWxlbWVudC0+YXBwZW5kQ2hpbGQobV90aXRsZUVsZW1lbnQsIGVjKTsK
LSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVu
ZENoaWxkKG1fdGl0bGVFbGVtZW50LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggOTVjNWE2ZDAxMTcyNjRi
NjEwZGJkODAyMDJjYmE3NmMyMzA1YWY3Mi4uN2NiNzJhZWFhM2QxNjMyZTQ5MTMzMTQxM2NkMDlh
Mzg0MWQ2NDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0xODYsOSArMTg2
LDcgQEAgdm9pZCBNZXNzYWdlUG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgIE93blB0
cjxNZXNzYWdlUG9ydEFycmF5PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCpt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGV2ZW50RGF0YS0+Y2hhbm5lbHMoKSk7CiAgICAgICAg
IFJlZlB0cjxFdmVudD4gZXZ0ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVsZWFzZSgp
LCBldmVudERhdGEtPm1lc3NhZ2UoKSk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIGRpc3BhdGNoRXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICBBU1NF
UlQoIWVjKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB9CiB9CiAKQEAgLTIyOSw4ICsyMjcsNyBAQCBQYXNzT3duUHRyPE1l
c3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25z
dCBNZXNzYWdlUAogICAgIC8vIFBhc3NlZC1pbiBwb3J0cyBwYXNzZWQgdmFsaWRpdHkgY2hlY2tz
LCBzbyB3ZSBjYW4gZGlzZW50YW5nbGUgdGhlbS4KICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFu
bmVsQXJyYXk+IHBvcnRBcnJheSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eShwb3J0cy0+c2l6ZSgpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgcG9y
dHMtPnNpemUoKSA7ICsraSkgewotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBj
aGFubmVsID0gKCpwb3J0cylbaV0tPmRpc2VudGFuZ2xlKGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
Yyk7IC8vIENhbid0IGdlbmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBjaGVj
a3MuCisgICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRz
KVtpXS0+ZGlzZW50YW5nbGUoQVNTRVJUX05PX0VYQ0VQVElPTik7IC8vIENhbid0IGdlbmVyYXRl
IGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBjaGVja3MuCiAgICAgICAgICgqcG9ydEFy
cmF5KVtpXSA9IGNoYW5uZWwucmVsZWFzZSgpOwogICAgIH0KICAgICByZXR1cm4gcG9ydEFycmF5
LnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0
dG9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwCmluZGV4IGMwZGEyNDY5MjJlMjRmNTBiOTIyMDY1YjFkYWFkNzg2MGE5ZjNj
ZDYuLjkwZDI1M2U4MWM4ODE5N2QzYWEwMTU5ODkyMjc0OTVmMGZlY2ZhYjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMTU1
LDEwICsxNTUsOCBAQCBzdGF0aWMgSFRNTEVsZW1lbnQqIGVuY2xvc2luZ0RlbGV0YWJsZUVsZW1l
bnQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIGlmICghcmFuZ2UpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSog
Y29udGFpbmVyID0gcmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKKyAgICBOb2Rl
KiBjb250YWluZXIgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAgICAgQVNTRVJUKGNvbnRhaW5lcik7Ci0gICAgQVNTRVJUKGVjID09IDApOwog
CiAgICAgLy8gVGhlIGVuY2xvc2luZ05vZGVPZlR5cGUgZnVuY3Rpb24gb25seSB3b3JrcyBvbiBu
b2RlcyB0aGF0IGFyZSBlZGl0YWJsZQogICAgIC8vICh3aGljaCBpcyBzdHJhbmdlLCBnaXZlbiBp
dHMgbmFtZSkuCkBAIC0yMzQsNyArMjMyLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVy
OjpjcmVhdGVEZWxldGlvblVJKCkKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGNv
bnRhaW5lci0+YXBwZW5kQ2hpbGQob3V0bGluZS5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9
PSAwKTsKKyAgICBBU1NFUlQoIWVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMjY2LDcgKzI2NCw3IEBAIHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVs
ZXRpb25VSSgpCiAgICAgYnV0dG9uLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoYnV0
dG9uSW1hZ2UuZ2V0KCkpKTsKIAogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoYnV0dG9uLmdl
dCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIEFTU0VSVCghZWMpOwogICAgIGlm
IChlYykKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMDAsNyArMjk4LDcgQEAgdm9pZCBEZWxldGVC
dXR0b25Db250cm9sbGVyOjpzaG93KEhUTUxFbGVtZW50KiBlbGVtZW50KQogCiAgICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7CiAgICAgbV90YXJnZXQtPmFwcGVuZENoaWxkKG1fY29udGFpbmVyRWxl
bWVudC5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQoIWVjKTsK
ICAgICBpZiAoZWMpIHsKICAgICAgICAgaGlkZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA0NzMzMjQ5M2FjOTliNWQxODU4
ZDBmM2QxZmYyYjNiMzAxNGM4ZTdmLi4yNTZhNWIzNWQxNDJiOGM5NmYyNmQ4ZjMzNWI4MTU5NmU2
ODg4ZTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTI2
NiwxMSArMjY2LDggQEAgc3RhdGljIHVuc2lnbmVkIHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoRnJh
bWUqIGZyYW1lKQogCiBzdGF0aWMgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSog
YSwgUmFuZ2UqIGIpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmFuZ2UqIHN0
YXJ0ID0gYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgYiwg
ZWMpIDw9IDAgPyBhIDogYjsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBSYW5nZSogZW5kID0gYS0+
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fRU5ELCBiLCBlYykgPD0gMCA/IGIg
OiBhOwotICAgIEFTU0VSVCghZWMpOworICAgIFJhbmdlKiBzdGFydCA9IGEtPmNvbXBhcmVCb3Vu
ZGFyeVBvaW50cyhSYW5nZTo6U1RBUlRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04p
IDw9IDAgPyBhIDogYjsKKyAgICBSYW5nZSogZW5kID0gYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRz
KFJhbmdlOjpFTkRfVE9fRU5ELCBiLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSA8PSAwID8gYiA6IGE7
CiAKICAgICByZXR1cm4gUmFuZ2U6OmNyZWF0ZShhLT5vd25lckRvY3VtZW50KCksIHN0YXJ0LT5z
dGFydENvbnRhaW5lcigpLCBzdGFydC0+c3RhcnRPZmZzZXQoKSwgZW5kLT5lbmRDb250YWluZXIo
KSwgZW5kLT5lbmRPZmZzZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwCmluZGV4IDg3MTIzMDQwOTUxZWY5YTJh
OWIxZGIxMDhmN2EyN2ExMTE1NWM0ZjcuLmY1MDdkMjg4NjgyYmY3ODNiNGJiM2U2ZDk0YmIwYjQy
NDc1ZGRhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVX
aXRoU3BhbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5v
ZGVXaXRoU3BhbkNvbW1hbmQuY3BwCkBAIC01MSwyMyArNTEsMTggQEAgUmVwbGFjZU5vZGVXaXRo
U3BhbkNvbW1hbmQ6OlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kKFBhc3NSZWZQdHI8SFRNTEVs
ZW1lbnQ+IGUKIHN0YXRpYyB2b2lkIHN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENo
aWxkcmVuKEhUTUxFbGVtZW50KiBuZXdOb2RlLCBIVE1MRWxlbWVudCogbm9kZVRvUmVwbGFjZSkK
IHsKICAgICBBU1NFUlQobm9kZVRvUmVwbGFjZS0+aW5Eb2N1bWVudCgpKTsKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50Tm9kZSA9IG5v
ZGVUb1JlcGxhY2UtPnBhcmVudE5vZGUoKTsKLSAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUo
bmV3Tm9kZSwgbm9kZVRvUmVwbGFjZSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHBhcmVu
dE5vZGUtPmluc2VydEJlZm9yZShuZXdOb2RlLCBub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKIAogICAgIE5vZGVWZWN0b3IgY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGROb2Rlcyhu
b2RlVG9SZXBsYWNlLCBjaGlsZHJlbik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGls
ZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBuZXdOb2RlLT5hcHBlbmRDaGlsZChjaGlsZHJl
bltpXSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkKKyAgICAgICAgbmV3Tm9kZS0+YXBwZW5k
Q2hpbGQoY2hpbGRyZW5baV0sIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgLy8gRklYTUU6
IEZpeCB0aGlzIHRvIHNlbmQgdGhlIHByb3BlciBNdXRhdGlvblJlY29yZHMgd2hlbiBNdXRhdGlv
bk9ic2VydmVycyBhcmUgcHJlc2VudC4KICAgICBuZXdOb2RlLT5jbG9uZURhdGFGcm9tRWxlbWVu
dCgqbm9kZVRvUmVwbGFjZSk7CiAKLSAgICBwYXJlbnROb2RlLT5yZW1vdmVDaGlsZChub2RlVG9S
ZXBsYWNlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgcGFyZW50Tm9kZS0+cmVtb3ZlQ2hp
bGQobm9kZVRvUmVwbGFjZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OmRvQXBwbHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAppbmRleCA0YWRlNjhhYThjZjA3NjZk
MmM4ZDhmNTYzYzRiYzczZjQzYTI4MWIyLi5hOTRlYjEwY2NmYzdhNTVmMTU4YjRmMGY2YWU3Yjhm
NzUyMmE5NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcApAQCAtMTgxLDkgKzE4MSw3IEBAIFJlcGxhY2VtZW50RnJhZ21lbnQ6
OlJlcGxhY2VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBEb2N1bWVudEZyYWdtZW50
KiBmCiAKICAgICAvLyBHaXZlIHRoZSByb290IGEgY2hhbmNlIHRvIGNoYW5nZSB0aGUgdGV4dC4K
ICAgICBSZWZQdHI8QmVmb3JlVGV4dEluc2VydGVkRXZlbnQ+IGV2dCA9IEJlZm9yZVRleHRJbnNl
cnRlZEV2ZW50OjpjcmVhdGUodGV4dCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ZWRpdGFibGVSb290LT5kaXNwYXRjaEV2ZW50KGV2dCwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAw
KTsKKyAgICBlZGl0YWJsZVJvb3QtPmRpc3BhdGNoRXZlbnQoZXZ0LCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKICAgICBpZiAodGV4dCAhPSBldnQtPnRleHQoKSB8fCAhZWRpdGFibGVSb290LT5yZW5k
ZXJlcklzUmljaGx5RWRpdGFibGUoKSkgewogICAgICAgICByZXN0b3JlQW5kUmVtb3ZlVGVzdFJl
bmRlcmluZ05vZGVzVG9GcmFnbWVudChob2xkZXIuZ2V0KCkpOwogCkBAIC0yMzQsOSArMjMyLDcg
QEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjpyZW1vdmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4g
bm9kZSkKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgZWMp
OwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGUuZ2V0
KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6
Omluc2VydE5vZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBOb2RlKiByZWZOb2RlKQpA
QCAtMjQ4LDIzICsyNDQsMTUgQEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnROb2Rl
QmVmb3JlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSogcmVmTm9kZSkKICAgICBpZiAoIXBh
cmVudCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBwYXJlbnQtPmluc2VydEJlZm9yZShub2RlLCByZWZOb2RlLCBlYyk7Ci0gICAgQVNT
RVJUKGVjID09IDApOworICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5vZGUsIEFT
U0VSVF9OT19FWENFUFRJT04pOwogfQogCiBQYXNzUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IFJlcGxh
Y2VtZW50RnJhZ21lbnQ6Omluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyhOb2RlKiByb290
RWRpdGFibGVFbGVtZW50KQogewogICAgIFJlZlB0cjxTdHlsZWRFbGVtZW50PiBob2xkZXIgPSBj
cmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChtX2RvY3VtZW50LmdldCgpKTsKLSAgICAKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLQotICAgIGhvbGRlci0+YXBwZW5kQ2hpbGQobV9mcmFn
bWVudCwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKLQotICAgIHJvb3RFZGl0YWJsZUVsZW1l
bnQtPmFwcGVuZENoaWxkKGhvbGRlci5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsK
IAorICAgIGhvbGRlci0+YXBwZW5kQ2hpbGQobV9mcmFnbWVudCwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CisgICAgcm9vdEVkaXRhYmxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoaG9sZGVyLmdldCgpLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIHJldHVybiBob2xkZXIucmVsZWFzZSgpOwpAQCAt
Mjc1LDEyICsyNjMsOSBAQCB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlc3RvcmVBbmRSZW1v
dmVUZXN0UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KFN0eWxlZEVsZQogICAgIGlmICghaG9sZGVy
KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
d2hpbGUgKFJlZlB0cjxOb2RlPiBub2RlID0gaG9sZGVyLT5maXJzdENoaWxkKCkpIHsKLSAgICAg
ICAgaG9sZGVyLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChl
YyA9PSAwKTsKLSAgICAgICAgbV9mcmFnbWVudC0+YXBwZW5kQ2hpbGQobm9kZS5nZXQoKSwgZWMp
OwotICAgICAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgICAgIGhvbGRlci0+cmVtb3ZlQ2hpbGQo
bm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIG1fZnJhZ21lbnQtPmFw
cGVuZENoaWxkKG5vZGUuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIAogICAg
IHJlbW92ZU5vZGUoaG9sZGVyKTsKQEAgLTEzMTgsOSArMTMwMyw3IEBAIE5vZGUqIFJlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kOjppbnNlcnRBc0xpc3RJdGVtcyhQYXNzUmVmUHRyPEhUTUxFbGVtZW50
PiBwcnBMaXN0CiAgICAgfQogCiAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBsaXN0SXRlbSA9IGxp
c3RFbGVtZW50LT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIGxpc3RFbGVtZW50LT5yZW1vdmVDaGlsZChsaXN0SXRlbS5nZXQoKSwgZWMpOwot
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGlzdEVsZW1lbnQtPnJlbW92ZUNoaWxkKGxp
c3RJdGVtLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgaWYgKGlzU3RhcnQg
fHwgaXNNaWRkbGUpIHsKICAgICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobGlzdEl0ZW0sIGxh
c3ROb2RlKTsKICAgICAgICAgICAgIGluc2VydGVkTm9kZXMucmVzcG9uZFRvTm9kZUluc2VydGlv
bihsaXN0SXRlbS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
bGl0VGV4dE5vZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0
Tm9kZUNvbW1hbmQuY3BwCmluZGV4IDBlZWNhNmFkZjQwNzQ2OGMzYjk2NDgyNmFmNzk0Y2RlOTE5
MWI5ODguLmNmMDdkZjM3NmUyNzAxMDZlM2UyM2FhYjRhMWU2YTg2NzU2M2YzNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC03NSwx
MiArNzUsMTAgQEAgdm9pZCBTcGxpdFRleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIAogICAg
IFN0cmluZyBwcmVmaXhUZXh0ID0gbV90ZXh0MS0+ZGF0YSgpOwogCi0gICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgbV90ZXh0Mi0+aW5zZXJ0RGF0YSgwLCBwcmVmaXhUZXh0LCBlYyk7Ci0g
ICAgQVNTRVJUKCFlYyk7CisgICAgbV90ZXh0Mi0+aW5zZXJ0RGF0YSgwLCBwcmVmaXhUZXh0LCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIGRvY3VtZW50KCktPm1hcmtlcnMoKS0+Y29weU1h
cmtlcnMobV90ZXh0MS5nZXQoKSwgMCwgcHJlZml4VGV4dC5sZW5ndGgoKSwgbV90ZXh0Mi5nZXQo
KSwgMCk7Ci0gICAgbV90ZXh0MS0+cmVtb3ZlKGVjKTsKKyAgICBtX3RleHQxLT5yZW1vdmUoQVNT
RVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmRvUmVh
cHBseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjZiMDAx
YjdkMDIxYTViZThkZTc5YjYxNWNhZmRmNzAxYmVlYzcwMS4uZTJiMWUyZTYyMzJhZmFkZWU5ZjJh
NzU5ZGY0MDkzYzY5ZDEyNmQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcApAQCAtMTQxOCwxMCArMTQxOCw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IENoYXJhY3Rlckl0
ZXJhdG9yOjpyYW5nZSgpIGNvbnN0CiAgICAgICAgICAgICBOb2RlKiBuID0gci0+c3RhcnRDb250
YWluZXIoKTsKICAgICAgICAgICAgIEFTU0VSVChuID09IHItPmVuZENvbnRhaW5lcigpKTsKICAg
ICAgICAgICAgIGludCBvZmZzZXQgPSByLT5zdGFydE9mZnNldCgpICsgbV9ydW5PZmZzZXQ7Ci0g
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIHItPnNldFN0YXJ0
KG4sIG9mZnNldCwgZWMpOwotICAgICAgICAgICAgci0+c2V0RW5kKG4sIG9mZnNldCArIDEsIGVj
KTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgci0+c2V0U3RhcnQobiwg
b2Zmc2V0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIHItPnNldEVuZChuLCBv
ZmZzZXQgKyAxLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgIH0KICAgICBy
ZXR1cm4gci5yZWxlYXNlKCk7CkBAIC0xNTI2LDEwICsxNTI0LDggQEAgUGFzc1JlZlB0cjxSYW5n
ZT4gQmFja3dhcmRzQ2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKICAgICAgICAgICAg
IE5vZGUqIG4gPSByLT5zdGFydENvbnRhaW5lcigpOwogICAgICAgICAgICAgQVNTRVJUKG4gPT0g
ci0+ZW5kQ29udGFpbmVyKCkpOwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHItPmVuZE9mZnNl
dCgpIC0gbV9ydW5PZmZzZXQ7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgICAgIHItPnNldFN0YXJ0KG4sIG9mZnNldCAtIDEsIGVjKTsKLSAgICAgICAgICAgIHIt
PnNldEVuZChuLCBvZmZzZXQsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAg
ICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0IC0gMSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgICAgICAgICByLT5zZXRFbmQobiwgb2Zmc2V0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICAgICAgfQogICAgIH0KICAgICByZXR1cm4gci5yZWxlYXNlKCk7CkBAIC0yNDQwLDExICsyNDM2
LDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFu
ZExlbmd0aChDb250YWluZXJOb2RlKiBzY29wZSwKICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSAw
ICYmIHJhbmdlTGVuZ3RoID09IDAgJiYgaXQuYXRFbmQoKSkgewogICAgICAgICB0ZXh0UnVuUmFu
Z2UgPSBpdC5yYW5nZSgpOwogICAgICAgICAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCksIDAsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIHJlc3VsdFJhbmdl
LT5zZXRFbmQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigpLCAwLCBlYyk7Ci0gICAgICAg
IEFTU0VSVCghZWMpOworICAgICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdl
LT5zdGFydENvbnRhaW5lcigpLCAwLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgcmVz
dWx0UmFuZ2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIEFTU0VS
VF9OT19FWENFUFRJT04pOwogICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJl
bGVhc2UoKTsKICAgICB9CkBAIC0yNDY2LDE3ICsyNDU5LDEyIEBAIFBhc3NSZWZQdHI8UmFuZ2U+
IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSog
c2NvcGUsCiAgICAgICAgICAgICAgICAgaXQuYWR2YW5jZSgpOwogICAgICAgICAgICAgICAgIGlm
ICghaXQuYXRFbmQoKSkgewogICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gaXQucmFuZ2UoKTsKLSAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJhbmdlLT5zdGFydENv
bnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSwgZWMpOwotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQo
cmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg
ICBQb3NpdGlvbiBydW5TdGFydCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAg
ICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3Rh
cnQpLm5leHQoKS5kZWVwRXF1aXZhbGVudCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocnVu
RW5kLmlzTm90TnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJ1
bkVuZC5jb250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2Rl
KCksIGVjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChydW5FbmQuY29u
dGFpbmVyTm9kZSgpLCBydW5FbmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KQEAgLTI1OTgsMTEgKzI1ODYsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxDb2xs
YXBzaWJsZVdoaXRlc3BhY2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0YXRpYyBQYXNzUmVm
UHRyPFJhbmdlPiBjb2xsYXBzZWRUb0JvdW5kYXJ5KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBm
b3J3YXJkKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxSYW5nZT4g
cmVzdWx0ID0gcmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHJl
c3VsdC0+Y29sbGFwc2UoIWZvcndhcmQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBSZWZQ
dHI8UmFuZ2U+IHJlc3VsdCA9IHJhbmdlLT5jbG9uZVJhbmdlKEFTU0VSVF9OT19FWENFUFRJT04p
OworICAgIHJlc3VsdC0+Y29sbGFwc2UoIWZvcndhcmQsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRt
bGVkaXRpbmcuY3BwCmluZGV4IDk2ZWY4NjMzNWE1MTRjZjI3NDcyNDc0OWNiZmNlMzEyY2VkODJh
N2MuLjE5ZmIzZjIwOTcwYWE4YTMyMDNmZjQ1MThiOGI1ODJiMzRiYzI4YTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCkBAIC05MzksOSArOTM5LDcgQEAgUGFzc1JlZlB0
cjxFbGVtZW50PiBjcmVhdGVUYWJTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NS
ZWZQdHI8Tm9kZT4gcHIKICAgICBpZiAoIXRhYlRleHROb2RlKQogICAgICAgICB0YWJUZXh0Tm9k
ZSA9IGRvY3VtZW50LT5jcmVhdGVFZGl0aW5nVGV4dE5vZGUoIlx0Iik7CiAKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hpbGQodGFiVGV4dE5vZGUu
cmVsZWFzZSgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIHNwYW5FbGVtZW50LT5h
cHBlbmRDaGlsZCh0YWJUZXh0Tm9kZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwog
CiAgICAgcmV0dXJuIHNwYW5FbGVtZW50LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFjL0VkaXRvck1hYy5tbQppbmRleCAwMzdlNDhhYzkxOTk4NTk5ZTVkYzc3MWJkOWI4MzY1
NzQ3YmI1NWNkLi44YzMzNTVhZDMxMmE1ZGI5ZjA0YTVmZjUyNDc3ZDdlODVhM2UxYjZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNTMsMTEgKzE1Myw4IEBA
IGNvbnN0IFNpbXBsZUZvbnREYXRhKiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFz
TXVsdGlwbGVGb250cykgY29uc3QKICAgICAgICAgaWYgKHN0eWxlKQogICAgICAgICAgICAgcmVz
dWx0ID0gc3R5bGUtPmZvbnQoKS5wcmltYXJ5Rm9udCgpOwogCi0gICAgICAgIGlmIChub2RlVG9S
ZW1vdmUpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICBub2Rl
VG9SZW1vdmUtPnJlbW92ZShlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAgICAgICAgICAgbm9kZVRvUmVtb3ZlLT5y
ZW1vdmUoQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CkBAIC0yNDIsMTEgKzIzOSw4IEBAIE5TRGljdGlvbmFyeSogRWRpdG9yOjpmb250QXR0cmli
dXRlc0ZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3QKICAgICBpZiAoZGVjb3JhdGlvbiAmIFVOREVS
TElORSkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6
TlNVbmRlcmxpbmVTdHlsZVNpbmdsZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVO
YW1lXTsKIAotICAgIGlmIChub2RlVG9SZW1vdmUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgICAgIG5vZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgQVNTRVJU
KGVjID09IDApOwotICAgIH0KKyAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAgICAgICBub2RlVG9S
ZW1vdmUtPnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIHJldHVybiByZXN1bHQ7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggMTJmYmNkYWI5ZjM1Nzc2MTBkMjY3
ZmU0ZGE3MjI5MTkzYWY5MmNkZi4uZjIwYzVmYjRkOWJiOGM0NTIzYzRlZDBlMmU4ZjU4ZmZiZTE0
MjhhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApAQCAtNTY0LDEzICs1NjQsMTAgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5v
ZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICBpZiAoZGVsZXRlQnV0dG9uKQogICAgICAgICBk
ZWxldGVCdXR0b24tPmRpc2FibGUoKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGJvb2wgY29sbGFwc2VkID0gdXBkYXRlZFJhbmdlLT5jb2xsYXBzZWQoZWMpOwotICAgIEFTU0VS
VCghZWMpOworICAgIGJvb2wgY29sbGFwc2VkID0gdXBkYXRlZFJhbmdlLT5jb2xsYXBzZWQoQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKGNvbGxhcHNlZCkKICAgICAgICAgcmV0dXJuICIi
OwotICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9yID0gdXBkYXRlZFJhbmdlLT5jb21tb25BbmNlc3Rv
ckNvbnRhaW5lcihlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgTm9kZSogY29tbW9uQW5jZXN0
b3IgPSB1cGRhdGVkUmFuZ2UtPmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGlmICghY29tbW9uQW5jZXN0b3IpCiAgICAgICAgIHJldHVybiAiIjsKIApA
QCAtNTk4LDE0ICs1OTUsMTEgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFu
Z2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICAgICAgYWNj
dW11bGF0b3IuYXBwZW5kU3RyaW5nKGludGVyY2hhbmdlTmV3bGluZVN0cmluZyk7CiAgICAgICAg
IHN0YXJ0Tm9kZSA9IHZpc2libGVTdGFydC5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNh
dGVkTm9kZSgpOwogCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpZiAo
cGFzdEVuZCAmJiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXJ0Tm9kZSwgMCwgcGFz
dEVuZCwgMCwgZWMpID49IDApIHsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBp
ZiAocGFzdEVuZCAmJiBSYW5nZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXJ0Tm9kZSwgMCwg
cGFzdEVuZCwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTikgPj0gMCkgewogICAgICAgICAgICAgaWYg
KGRlbGV0ZUJ1dHRvbikKICAgICAgICAgICAgICAgICBkZWxldGVCdXR0b24tPmVuYWJsZSgpOwog
ICAgICAgICAgICAgcmV0dXJuIGludGVyY2hhbmdlTmV3bGluZVN0cmluZzsKICAgICAgICAgfQot
ICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAKICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gYWNj
dW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoc3RhcnROb2RlLCBwYXN0RW5kKTsKQEAgLTY5Myw3ICs2
ODcsNiBAQCBzdGF0aWMgYm9vbCBmaW5kTm9kZXNTdXJyb3VuZGluZ0NvbnRleHQoRG9jdW1lbnQq
IGRvY3VtZW50LCBSZWZQdHI8Tm9kZT4mIG5vZGVCZQogCiBzdGF0aWMgdm9pZCB0cmltRnJhZ21l
bnQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIE5vZGUqIG5vZGVCZWZvcmVDb250ZXh0LCBO
b2RlKiBub2RlQWZ0ZXJDb250ZXh0KQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFJlZlB0cjxOb2RlPiBuZXh0OwogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBmcmFnbWVu
dC0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbmV4dCkgewogICAgICAgICBpZiAobm9kZUJl
Zm9yZUNvbnRleHQtPmlzRGVzY2VuZGFudE9mKG5vZGUuZ2V0KCkpKSB7CkBAIC03MDIsNyArNjk1
LDcgQEAgc3RhdGljIHZvaWQgdHJpbUZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50
LCBOb2RlKiBub2RlQmVmb3JlQ29udGV4dCwgTm8KICAgICAgICAgfQogICAgICAgICBuZXh0ID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7CiAgICAgICAg
IEFTU0VSVCghbm9kZS0+Y29udGFpbnMobm9kZUFmdGVyQ29udGV4dCkpOwotICAgICAgICBub2Rl
LT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIGVjKTsKKyAgICAgICAgbm9k
ZS0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKICAgICAgICAgaWYgKG5vZGVCZWZvcmVDb250ZXh0ID09IG5vZGUpCiAgICAgICAgICAg
ICBicmVhazsKICAgICB9CkBAIC03MTAsOCArNzAzLDcgQEAgc3RhdGljIHZvaWQgdHJpbUZyYWdt
ZW50KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBOb2RlKiBub2RlQmVmb3JlQ29udGV4dCwg
Tm8KICAgICBBU1NFUlQobm9kZUFmdGVyQ29udGV4dC0+cGFyZW50Tm9kZSgpKTsKICAgICBmb3Ig
KFJlZlB0cjxOb2RlPiBub2RlID0gbm9kZUFmdGVyQ29udGV4dDsgbm9kZTsgbm9kZSA9IG5leHQp
IHsKICAgICAgICAgbmV4dCA9IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5v
ZGUuZ2V0KCkpOwotICAgICAgICBub2RlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG5vZGUu
Z2V0KCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIG5vZGUtPnBhcmVudE5v
ZGUoKS0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
fQogfQogCkBAIC03NDEsMTkgKzczMywxNiBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cFdpdGhDb250ZXh0KERvY3VtZW50KiBkb2N1bQogICAg
ICAgICBwb3NpdGlvbkFmdGVyTm9kZShub2RlQmVmb3JlQ29udGV4dC5nZXQoKSkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksCiAgICAgICAgIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlQWZ0ZXJD
b250ZXh0LmdldCgpKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAKLSAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHJhbmdlLT5jb21tb25B
bmNlc3RvckNvbnRhaW5lcihlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgTm9kZSogY29tbW9u
QW5jZXN0b3IgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoQVNTRVJUX05PX0VYQ0VQ
VElPTik7CiAgICAgTm9kZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gYW5jZXN0b3JUb1JldGFp
blN0cnVjdHVyZUFuZEFwcGVhcmFuY2VXaXRoTm9SZW5kZXJlcihjb21tb25BbmNlc3Rvcik7CiAK
ICAgICAvLyBXaGVuIHRoZXJlJ3MgYSBzcGVjaWFsIGNvbW1vbiBhbmNlc3RvciBvdXRzaWRlIG9m
IHRoZSBmcmFnbWVudCwgd2UgbXVzdCBpbmNsdWRlIGl0IGFzIHdlbGwgdG8KICAgICAvLyBwcmVz
ZXJ2ZSB0aGUgc3RydWN0dXJlIGFuZCBhcHBlYXJhbmNlIG9mIHRoZSBmcmFnbWVudC4gRm9yIGV4
YW1wbGUsIGlmIHRoZSBmcmFnbWVudCBjb250YWlucwogICAgIC8vIFRELCB3ZSBuZWVkIHRvIGlu
Y2x1ZGUgdGhlIGVuY2xvc2luZyBUQUJMRSB0YWcgYXMgd2VsbC4KICAgICBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gZnJhZ21lbnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OwotICAgIGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3IpIHsKLSAgICAgICAgZnJhZ21lbnQtPmFw
cGVuZENoaWxkKHNwZWNpYWxDb21tb25BbmNlc3RvciwgZWMpOwotICAgICAgICBBU1NFUlQoIWVj
KTsKLSAgICB9IGVsc2UKKyAgICBpZiAoc3BlY2lhbENvbW1vbkFuY2VzdG9yKQorICAgICAgICBm
cmFnbWVudC0+YXBwZW5kQ2hpbGQoc3BlY2lhbENvbW1vbkFuY2VzdG9yLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICBlbHNlCiAgICAgICAgIGZyYWdtZW50LT50YWtlQWxsQ2hpbGRyZW5Gcm9t
KHN0YXRpY19jYXN0PENvbnRhaW5lck5vZGUqPihjb21tb25BbmNlc3RvcikpOwogCiAgICAgdHJp
bUZyYWdtZW50KGZyYWdtZW50LmdldCgpLCBub2RlQmVmb3JlQ29udGV4dC5nZXQoKSwgbm9kZUFm
dGVyQ29udGV4dC5nZXQoKSk7CkBAIC03ODEsMTAgKzc3MCw4IEBAIHN0YXRpYyB2b2lkIGZpbGxD
b250YWluZXJGcm9tU3RyaW5nKENvbnRhaW5lck5vZGUqIHBhcmFncmFwaCwgY29uc3QgU3RyaW5n
JiBzdHJpCiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcGFyYWdyYXBoLT5kb2N1bWVudCgp
OwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9sZGVy
RWxlbWVudChkb2N1bWVudCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHBh
cmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1l
bnQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
ODAxLDI0ICs3ODgsMjAgQEAgc3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29u
dGFpbmVyTm9kZSogcGFyYWdyYXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgLy8gYXBw
ZW5kIHRoZSBub24tdGFiIHRleHR1YWwgcGFydAogICAgICAgICBpZiAoIXMuaXNFbXB0eSgpKSB7
CiAgICAgICAgICAgICBpZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAg
cGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFi
VGV4dCksIGVjKTsKLSAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAg
ICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0
YWJUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgICAgICAgICAgdGFiVGV4dCA9
IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4g
dGV4dE5vZGUgPSBkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoc3RyaW5nV2l0aFJlYmFsYW5jZWRX
aGl0ZXNwYWNlKHMsIGZpcnN0LCBpICsgMSA9PSBudW1FbnRyaWVzKSk7Ci0gICAgICAgICAgICBw
YXJhZ3JhcGgtPmFwcGVuZENoaWxkKHRleHROb2RlLnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAg
ICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKHRleHRO
b2RlLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyB0aGVyZSBpcyBhIHRhYiBhZnRlciBldmVyeSBlbnRyeSwgZXhjZXB0IHRoZSBsYXN0IGVu
dHJ5CiAgICAgICAgIC8vIChpZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgYSB0YWIsIHRoZSBsaXN0
IGdldHMgYW4gZXh0cmEgZW1wdHkgZW50cnkpCiAgICAgICAgIGlmIChpICsgMSAhPSBudW1FbnRy
aWVzKQogICAgICAgICAgICAgdGFiVGV4dC5hcHBlbmQoJ1x0Jyk7Ci0gICAgICAgIGVsc2UgaWYg
KCF0YWJUZXh0LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGls
ZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dCksIGVjKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghZWMpOwotICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICBlbHNlIGlmICgh
dGFiVGV4dC5pc0VtcHR5KCkpCisgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNy
ZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CisKICAgICAgICAgZmlyc3QgPSBmYWxzZTsKICAgICB9CiB9CkBAIC04NTYsMTYgKzgzOSwx
MyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQo
UmFuZ2UqIGNvbnRleHQsIGNvbnN0IFN0cmluZwogICAgIHN0cmluZy5yZXBsYWNlKCJcclxuIiwg
IlxuIik7CiAgICAgc3RyaW5nLnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3R5bGVOb2RlLT5yZW5k
ZXJlcigpOwogICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS0+cHJlc2VydmVO
ZXdsaW5lKCkpIHsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVh
dGVUZXh0Tm9kZShzdHJpbmcpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBm
cmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZyksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKCdcbicpKSB7
CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUJyZWFrRWxlbWVu
dChkb2N1bWVudCk7CiAgICAgICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRy
LCBBcHBsZUludGVyY2hhbmdlTmV3bGluZSk7ICAgICAgICAgICAgCi0gICAgICAgICAgICBmcmFn
bWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVs
ZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4g
ZnJhZ21lbnQucmVsZWFzZSgpOwogICAgIH0KQEAgLTkwNyw4ICs4ODcsNyBAQCBQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQs
IGNvbnN0IFN0cmluZwogICAgICAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFy
YWdyYXBoRWxlbWVudChkb2N1bWVudCk7CiAgICAgICAgICAgICBmaWxsQ29udGFpbmVyRnJvbVN0
cmluZyhlbGVtZW50LmdldCgpLCBzKTsKICAgICAgICAgfQotICAgICAgICBmcmFnbWVudC0+YXBw
ZW5kQ2hpbGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgfQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CkBA
IC05MjQsMTQgKzkwMywxMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZy
YWdtZW50RnJvbU5vZGVzKERvY3VtZW50ICpkb2N1bWVudCwgY29uc3QgVgogCiAgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJh
Z21lbnQoKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHNpemVfdCBzaXplID0g
bm9kZXMuc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAg
ICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnQoZG9jdW1lbnQpOwotICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2Rlc1tpXSwg
ZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxk
KGVsZW1lbnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBl
bGVtZW50LT5hcHBlbmRDaGlsZChub2Rlc1tpXSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAg
ICAgIGZyYWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAgICAgfQogCiAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAppbmRleCA0OTA2M2IzNDhjZTJmYjc2OGUwOWI0NjQ1
YTBkZjYwZjZhNDQ1MzJmLi4wN2ZhMWJiYWYxNzI3OGMzZGU5MTYxOGI0MDZhMTgyZjBmNTQ5YmFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTI2LDExICsxMjYs
OCBAQCB2b2lkIENvbG9ySW5wdXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICB3cmFw
cGVyRWxlbWVudC0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2gt
d3JhcHBlciIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBSZWZQ
dHI8SFRNTERpdkVsZW1lbnQ+IGNvbG9yU3dhdGNoID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShk
b2N1bWVudCk7CiAgICAgY29sb3JTd2F0Y2gtPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJr
aXQtY29sb3Itc3dhdGNoIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHdyYXBwZXJFbGVtZW50LT5hcHBlbmRDaGls
ZChjb2xvclN3YXRjaC5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBlbGVt
ZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQod3JhcHBlckVsZW1lbnQu
cmVsZWFzZSgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgd3JhcHBlckVsZW1lbnQtPmFw
cGVuZENoaWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJF
bGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgCiAgICAgdXBkYXRl
Q29sb3JTd2F0Y2goKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9w
dGlvbnNDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xs
ZWN0aW9uLmNwcAppbmRleCBkN2MyNjdiYTE3Yjc5NzBkNmZhMmM0N2EwN2Y0MzE3NWI1MmU4Yjhi
Li5mMjk0MmEyODNiNTQzZDNlOThjYzA4ODdlZjZmNGRlMTU4MTEzNjk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC02NSw3ICs2NSw3IEBA
IHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGQoUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxl
bWVudD4gZWxlbWVudCwgaW50IGluZGV4CiAgICAgZWxzZQogICAgICAgICBzZWxlY3QtPmFkZChu
ZXdPcHRpb24sIHN0YXRpY19jYXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oaXRlbShpbmRleCkpLCBl
Yyk7CiAKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKIHZvaWQg
SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmUoaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKaW5kZXggNzYxOGEzM2YxMjI4NGY4MDA4NmQy
N2UzNTEwNGUxODAyMDdjZTBlMy4uYmZmZjRiZjY4YWEyM2JlZGRiMmZkMGVlMGYxMDc2MzU1NThh
YjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBA
IC01MzksMTIgKzUzOSwxMCBAQCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1hdGNoZXNSZWFk
V3JpdGVQc2V1ZG9DbGFzcygpIGNvbnN0CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBk
YXRlUGxhY2Vob2xkZXJUZXh0KCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBT
dHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gc3RyaXBwZWRQbGFjZWhvbGRlcigpOwogICAgIGlmIChw
bGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7
Ci0gICAgICAgICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vo
b2xkZXIsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgdXNlckFn
ZW50U2hhZG93Um9vdCgpLT5yZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVyLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICAgICAgICAgIG1fcGxhY2Vob2xkZXIgPSAwOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKQEAgLTU1MywxMSArNTUxLDkgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50
Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogICAgICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IHBsYWNlaG9sZGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICAg
ICAgbV9wbGFjZWhvbGRlciA9IHBsYWNlaG9sZGVyLmdldCgpOwogICAgICAgICBtX3BsYWNlaG9s
ZGVyLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgICAgICB1c2VyQWdlbnRT
aGFkb3dSb290KCktPmluc2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBpbm5lclRleHRFbGVtZW50
KCktPm5leHRTaWJsaW5nKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4
dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQot
ICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIGVjKTsKLSAg
ICBBU1NFUlQoIWVjKTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5lclRleHQocGxhY2Vob2xk
ZXJUZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBmaXhQbGFjZWhvbGRlclJlbmRlcmVy
KG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1lbnQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNjJmNGEx
NjJmY2UzMWM5ODVhMzM0NTc5OTAxNTg1OGYzYzEwMDBhMS4uOTczOTUyMzRhYTMwZTkyZjhhMmFj
MjI3MTFmOWNmYzE1ZjQzNzlhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTM1MCwxMiArMzUwLDkgQEAgaW50IEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjppbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNp
YmxlUG9zaXRpb24mIHAKICAgICBQb3NpdGlvbiBpbmRleFBvc2l0aW9uID0gcG9zLmRlZXBFcXVp
dmFsZW50KCkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCk7CiAgICAgaWYgKGVuY2xvc2luZ1Rl
eHRGb3JtQ29udHJvbChpbmRleFBvc2l0aW9uKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFu
Z2U6OmNyZWF0ZShpbmRleFBvc2l0aW9uLmRvY3VtZW50KCkpOwotICAgIHJhbmdlLT5zZXRTdGFy
dChpbm5lclRleHRFbGVtZW50KCksIDAsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICByYW5n
ZS0+c2V0RW5kKGluZGV4UG9zaXRpb24uY29udGFpbmVyTm9kZSgpLCBpbmRleFBvc2l0aW9uLm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgcmFuZ2Ut
PnNldFN0YXJ0KGlubmVyVGV4dEVsZW1lbnQoKSwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7Cisg
ICAgcmFuZ2UtPnNldEVuZChpbmRleFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSwgaW5kZXhQb3Np
dGlvbi5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
cmV0dXJuIFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOwogfQogCkBAIC01
MzksMTQgKzUzNiwxMCBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5l
clRleHRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgICAgICBpZiAodGV4dElzQ2hhbmdl
ZCAmJiBkb2N1bWVudCgpICYmIHJlbmRlcmVyKCkgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJp
bGl0eUVuYWJsZWQoKSkKICAgICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFs
c2UpOwogCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbm5lclRleHRF
bGVtZW50KCktPnNldElubmVyVGV4dCh2YWx1ZSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsK
KyAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5zZXRJbm5lclRleHQodmFsdWUsIEFTU0VSVF9O
T19FWENFUFRJT04pOwogCi0gICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnXG4nKSB8fCB2YWx1
ZS5lbmRzV2l0aCgnXHInKSkgewotICAgICAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5hcHBl
bmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghZWMpOwotICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgn
XG4nKSB8fCB2YWx1ZS5lbmRzV2l0aCgnXHInKSkKKyAgICAgICAgICAgIGlubmVyVGV4dEVsZW1l
bnQoKS0+YXBwZW5kQ2hpbGQoSFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiAKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hl
c1JlbmRlcmVyKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0Rmll
bGRJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUu
Y3BwCmluZGV4IDAyZWYyZDU2MjQ2MjQ4N2QzNjM4MDM0YTZkNzVmZjgwYWNmMjNmNzIuLjU4ZjJh
YTRlNWM0OGRmODJhNWVhOGFiYjE2ODExNjRiNTFkNjE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1RleHRGaWVsZElucHV0VHlwZS5jcHAKQEAgLTQwNiwxMiArNDA2LDEwIEBAIHZvaWQgVGV4
dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewogICAgIGlmICghc3Vw
cG9ydHNQbGFjZWhvbGRlcigpKQogICAgICAgICByZXR1cm47Ci0gICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7CiAgICAgU3RyaW5nIHBsYWNlaG9sZGVyVGV4dCA9IGVsZW1lbnQoKS0+c3RyaXBwZWRQ
bGFjZWhvbGRlcigpOwogICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7Ci0gICAgICAgICAgICBtX3BsYWNlaG9sZGVyLT5wYXJl
bnROb2RlKCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIGVjKTsKLSAgICAgICAg
ICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgbV9wbGFjZWhvbGRlci0+cGFyZW50Tm9kZSgp
LT5yZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVyLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAgICAgICAgIG1fcGxhY2Vob2xkZXIuY2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CkBAIC00MTksMTEgKzQxNyw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRh
dGVQbGFjZWhvbGRlclRleHQoKQogICAgIGlmICghbV9wbGFjZWhvbGRlcikgewogICAgICAgICBt
X3BsYWNlaG9sZGVyID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50
KCkpOwogICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Vi
a2l0LWlucHV0LXBsYWNlaG9sZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOwotICAgICAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVm
b3JlKG1fcGxhY2Vob2xkZXIsIG1fY29udGFpbmVyID8gbV9jb250YWluZXItPm5leHRTaWJsaW5n
KCkgOiBpbm5lclRleHRFbGVtZW50KCktPm5leHRTaWJsaW5nKCksIGVjKTsKLSAgICAgICAgQVNT
RVJUKCFlYyk7CisgICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNl
cnRCZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci0+bmV4dFNp
YmxpbmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhv
bGRlclRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRJ
bm5lclRleHQocGxhY2Vob2xkZXJUZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBlbGVt
ZW50KCktPmZpeFBsYWNlaG9sZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlci5nZXQoKSwgbV9jb250
YWluZXIgPyBtX2NvbnRhaW5lci5nZXQoKSA6IG1faW5uZXJUZXh0LmdldCgpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCBhNjM0M2Y5MjEzNGEw
Yzc5NGY0MWFiZTM1MzE5MmQ1YWQzYWJiZjRmLi4zOWQ1NjI1MDRhMzQ3MGJjNDU1NmZjYjY1MTUw
YmIyNDZhOTA1N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25N
ZXNzYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNw
cApAQCAtMTgzLDkgKzE4Myw3IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxl
VHJlZShUaW1lcjxWYWxpZGF0aW9uTWVzc2FnZT4qKQogICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9z
aXRpb246YWJzb2x1dGUgYmVjYXVzZSBSZW5kZXJNZW51TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAog
ICAgIC8vIGNvbnRhaW5zIG5vbi1hYnNvbHV0ZSBvciBub24tZml4ZWQgcmVuZGVyZXJzIGFzIGNo
aWxkcmVuLgogICAgIG1fYnViYmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5
UG9zaXRpb24sIENTU1ZhbHVlQWJzb2x1dGUpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIHNoYWRvd1Jvb3QtPmFwcGVuZENoaWxkKG1fYnViYmxlLmdldCgpLCBlYyk7Ci0gICAgQVNT
RVJUKCFlYyk7CisgICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9idWJibGUuZ2V0KCksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5
b3V0KCk7CiAgICAgYWRqdXN0QnViYmxlUG9zaXRpb24obV9lbGVtZW50LT5ib3VuZGluZ0JveCgp
LCBtX2J1YmJsZS5nZXQoKSk7CiAKQEAgLTE5MywxMCArMTkxLDggQEAgdm9pZCBWYWxpZGF0aW9u
TWVzc2FnZTo6YnVpbGRCdWJibGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAg
Y2xpcHBlci0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJs
ZS1hcnJvdy1jbGlwcGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwog
ICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gYnViYmxlQXJyb3cgPSBIVE1MRGl2RWxlbWVudDo6
Y3JlYXRlKGRvYyk7CiAgICAgYnViYmxlQXJyb3ctPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13
ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtYXJyb3ciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7Ci0gICAgY2xpcHBlci0+YXBwZW5kQ2hpbGQoYnViYmxlQXJyb3cucmVsZWFz
ZSgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAgbV9idWJibGUtPmFwcGVuZENoaWxkKGNs
aXBwZXIucmVsZWFzZSgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgY2xpcHBlci0+YXBw
ZW5kQ2hpbGQoYnViYmxlQXJyb3cucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAg
ICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQoY2xpcHBlci5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENF
UFRJT04pOwogCiAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBtZXNzYWdlID0gSFRNTERpdkVsZW1l
bnQ6OmNyZWF0ZShkb2MpOwogICAgIG1lc3NhZ2UtPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13
ZWJraXQtdmFsaWRhdGlvbi1idWJibGUtbWVzc2FnZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50VHlwZXMuY3BwCmluZGV4IDk4ZDgwMWI5ODVkY2Q1OGFkNDZmN2U0
ZWFiZjc5MzgwMTVlNWZkODguLmEwNDMxMzQ3ZjE0OTU3YmNiMGMwN2VhNzg1MWNhZTdlOWI4MWYz
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRUeXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudFR5cGVzLmNwcApAQCAtMjkzLDExICsyOTMsOCBAQCB2b2lkIE1lZGlhQ29udHJv
bFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQog
ICAgICAgICByZXR1cm47CiAKICAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHZhbHVlKCkudG9Eb3VibGUoKSk7Ci0gICAgaWYgKHZvbHVtZSAhPSBtZWRpYUNvbnRyb2xs
ZXIoKS0+dm9sdW1lKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAg
IG1lZGlhQ29udHJvbGxlcigpLT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7Ci0gICAgICAgIEFTU0VS
VCghZWMpOwotICAgIH0KKyAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1
bWUoKSkKKyAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VS
VF9OT19FWENFUFRJT04pOwogICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikK
ICAgICAgICAgbWVkaWFDb250cm9sbGVyKCktPnNldE11dGVkKGZhbHNlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggZTY3M2Ew
MDNiMTc3ZDUzNTkzMjNhNTgwNzExMmI2ZjFkNWNkZjlmNy4uOTQxMzUyNzY1YmNlZmZhNDE2NTU5
ZWZiYjlhYTg0OGNiZmI0NGM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclBhZ2VBZ2VudC5jcHAKQEAgLTU0NiwxMSArNTQ2LDEwIEBAIHZvaWQgSW5zcGVjdG9y
UGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpB
cnJheTxUeXBlCiAgICAgICAgICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29r
aWVzKGRvY3VtZW50LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3Qp
OwogICAgICAgICAgICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAg
ICAgICAvLyBGSVhNRTogV2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmlu
ZyByZXByZXNlbnRhdGlvbiBvZiBjb29raWVzLgotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgICAgICAgICAgICAgIHN0cmluZ0Nvb2tpZXNMaXN0LmFwcGVuZChkb2N1
bWVudC0+Y29va2llKGVjKSk7CisgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAv
LyBFeGNlcHRpb25zIGFyZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4g
VGhhdCB3b24ndCBoYXBwZW4gaGVyZQogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRvY3Vt
ZW50IiBpcyB0aGUgZG9jdW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCi0gICAg
ICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xp
c3QuYXBwZW5kKGRvY3VtZW50LT5jb29raWUoQVNTRVJUX05PX0VYQ0VQVElPTikpOwogICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29r
aWVzTGlzdC5zaXplKCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29r
aWVzU2l6ZTsgaSsrKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5jcHAKaW5kZXggNjNlNjM5ZWQ3M2RhMTdmNjU1NWQwZGY2YTZjYzZjYTU0ZTY4
ZmZhZC4uZGFhY2I5NzA4NGU3MTFhNmY1ODYxYWFiYjFkMmI1NGQwMmIzODE0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtODYy
LDggKzg2Miw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBFeGNlcHRpb25Db2RlCiAgICAgaWYgKCFzdHlsZVJ1bGUp
IHsKICAgICAgICAgLy8gV2hhdCB3ZSBqdXN0IGFkZGVkIGhhcyB0byBiZSBhIENTU1N0eWxlUnVs
ZSAtIHdlIGNhbm5vdCBoYW5kbGUgb3RoZXIgdHlwZXMgb2YgcnVsZXMgeWV0LgogICAgICAgICAv
LyBJZiBpdCBpcyBub3QgYSBzdHlsZSBydWxlLCBwcmV0ZW5kIHdlIG5ldmVyIHRvdWNoZWQgdGhl
IHN0eWxlc2hlZXQuCi0gICAgICAgIG1fcGFnZVN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUobGFzdFJ1
bGVJbmRleCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbV9wYWdlU3R5bGVT
aGVldC0+ZGVsZXRlUnVsZShsYXN0UnVsZUluZGV4LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
LmNwcAppbmRleCA1MTNmMDY2ZmRlNzQyODhkNDVkMTg4YjEyMDFjODVhNzRiZTgxYWRkLi4xOGZj
ZTY1Y2Y2MDk1MGY5NjQ0NjczMGY5NzQzNWY1ZjUxMzFkZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAg
LTMwOCwxNCArMzA4LDEyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9N
RXZlbnQoRXZlbnRJRCBpZCwgaW50IHRvdGFsLCBpbnQgZG9uZSkKIHsKICAgICBpZiAobV9kb21B
cHBsaWNhdGlvbkNhY2hlKSB7CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
ID0gRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpOwotICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKICAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKICAgICAgICAgaWYg
KGlkID09IFBST0dSRVNTX0VWRU5UKQogICAgICAgICAgICAgZXZlbnQgPSBQcm9ncmVzc0V2ZW50
OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBkb25lLCB0b3RhbCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7
Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMp
OwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5k
aXNwYXRjaEV2ZW50KGV2ZW50LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAppbmRleCBlMmQ3NzFhMTViMjIzODRiZWY2YmQ0
NjgyYWFjNGY2YTkwZjQzNTA5Li4yZDMxOTJiNmIzOTgyM2M4OTIzMTkwNTlmZTYwODA1MzE5MTkz
NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC00MzgsMTIgKzQzOCw5
IEBAIHZvaWQgRE9NU2VsZWN0aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQogICAgIGlmICghc2Vs
ZWN0ZWRSYW5nZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgc2VsZWN0ZWRSYW5nZS0+ZGVsZXRlQ29udGVudHMoZWMpOwotICAgIEFTU0VSVCghZWMp
OworICAgIHNlbGVjdGVkUmFuZ2UtPmRlbGV0ZUNvbnRlbnRzKEFTU0VSVF9OT19FWENFUFRJT04p
OwogCi0gICAgc2V0QmFzZUFuZEV4dGVudChzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcihl
YyksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29u
dGFpbmVyKCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIGVjKTsKLSAgICBBU1NFUlQo
IWVjKTsKKyAgICBzZXRCYXNlQW5kRXh0ZW50KHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KEFTU0VSVF9OT19FWENFUFRJT04pLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgpLCBzZWxl
Y3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcigpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgp
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5z
Tm9kZShjb25zdCBOb2RlKiBuLCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggMTAzMjI4MzdhMjAzMjE2MDI1ZTMxOWI0Yjgz
MzUyMDk2NDQyMGJkMy4uZTE3MTY1MzQ1OTQ5YmI4YzgxMjU4Yzk5MDE2OGJmNjIyNWQ3N2U5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTcwMSw5ICs3MDEsNyBA
QCBzdGF0aWMgdm9pZCBwcmVwYXJlQ2xpcGJvYXJkRm9ySW1hZ2VEcmFnKEZyYW1lKiBzb3VyY2Us
IENsaXBib2FyZCogY2xpcGJvYXJkLCBFbAogewogICAgIGlmIChub2RlLT5pc0NvbnRlbnRSaWNo
bHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzb3VyY2UtPmRv
Y3VtZW50KCktPmNyZWF0ZVJhbmdlKCk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICByYW5nZS0+c2VsZWN0Tm9kZShub2RlLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMp
OworICAgICAgICByYW5nZS0+c2VsZWN0Tm9kZShub2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAgICAgc291cmNlLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsKICAgICB9CiAgICAgY2xpcGJvYXJkLT5kZWNs
YXJlQW5kV3JpdGVEcmFnSW1hZ2Uobm9kZSwgIWxpbmtVUkwuaXNFbXB0eSgpID8gbGlua1VSTCA6
IGltYWdlVVJMLCBsYWJlbCwgc291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IGY5M2FkZGI0OTJlZTU0M2I0MjQxMTNmMjkzZWQ5
MGVmOWRkZmEyYzQuLmM3YzU3Njg5NjBiZjg0YWI0M2NkNTIxZWMwNjdmNDkxZDVmMDVkMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAt
MTI5LDEwICsxMjksOCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dENvbnRyb2w6OnZpc2li
bGVQb3NpdGlvbkZvckluZGV4KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPD0g
MCkKICAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKGlu
bmVyVGV4dEVsZW1lbnQoKSksIERPV05TVFJFQU0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCkpOwot
ICAgIHJhbmdlLT5zZWxlY3ROb2RlQ29udGVudHMoaW5uZXJUZXh0RWxlbWVudCgpLCBlYyk7Ci0g
ICAgQVNTRVJUKCFlYyk7CisgICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhpbm5lclRleHRF
bGVtZW50KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0
KHJhbmdlLmdldCgpKTsKICAgICBpdC5hZHZhbmNlKGluZGV4IC0gMSk7CiAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbihpdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU1ZHUmVuZGVyU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCmluZGV4IGJl
MGE0NzliY2YxOGEzZWZmMTY3ZWEzMzllMmM0ZWE1YTRjMDU0MDYuLmVlNjlkYjZlZmZhOThkZDA2
Y2Y2YjZiYWIyNDU4NWZmYzNiNzUxOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWYgRU5BQkxFKFNW
RykKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgiCisjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBl
cy5oIgogI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5o
IgpAQCAtOTcsMzYgKzk4LDI4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU1ZHTGVuZ3RoIGluaXRp
YWxCYXNlbGluZVNoaWZ0VmFsdWUoKQogICAgIHsKICAgICAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsK
LSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNw
ZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDAsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
Yyk7CisgICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1i
ZXIsIDAsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAg
IH0KIAogICAgIHN0YXRpYyBTVkdMZW5ndGggaW5pdGlhbEtlcm5pbmcoKQogICAgIHsKICAgICAg
ICAgU1ZHTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDAsIGVj
KTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDAsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAg
ICByZXR1cm4gbGVuZ3RoOwogICAgIH0KIAogICAgIHN0YXRpYyBTVkdMZW5ndGggaW5pdGlhbFN0
cm9rZURhc2hPZmZzZXQoKQogICAgIHsKICAgICAgICAgU1ZHTGVuZ3RoIGxlbmd0aDsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDAsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDAs
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICByZXR1cm4gbGVuZ3RoOwogICAgIH0KIAog
ICAgIHN0YXRpYyBTVkdMZW5ndGggaW5pdGlhbFN0cm9rZVdpZHRoKCkKICAgICB7CiAgICAgICAg
IFNWR0xlbmd0aCBsZW5ndGg7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVtYmVyLCAxLCBlYyk7
Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBsZW5ndGgubmV3VmFsdWVTcGVjaWZpZWRV
bml0cyhMZW5ndGhUeXBlTnVtYmVyLCAxLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAg
cmV0dXJuIGxlbmd0aDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZExlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5n
dGguY3BwCmluZGV4IDdjMjZlYmQzNWUzMzc3MzZlOGE2OTQyY2M3Y2I3ODdhZjFhOTRmNzkuLjBh
YzhiZjA2NTE2Y2ExNDU1OTFkMDA1OGY3ODE4NTUwZWZmYTNkZDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcApAQCAtMzYsOSArMzYsNyBAQCBTVkdBbmltYXRlZExl
bmd0aEFuaW1hdG9yOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1l
bnQqIGFuaW1hdAogc3RhdGljIGlubGluZSBTVkdMZW5ndGgmIHNoYXJlZFNWR0xlbmd0aChTVkdM
ZW5ndGhNb2RlIG1vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWVBc1N0cmluZykKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFNWR0xlbmd0aCwgc2hhcmVkTGVuZ3RoLCAoKSk7Ci0gICAgRXhjZXB0
aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2hhcmVkTGVuZ3RoLnNldFZhbHVlQXNTdHJpbmcodmFsdWVB
c1N0cmluZywgbW9kZSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNoYXJlZExlbmd0aC5z
ZXRWYWx1ZUFzU3RyaW5nKHZhbHVlQXNTdHJpbmcsIG1vZGUsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgIHJldHVybiBzaGFyZWRMZW5ndGg7CiB9CiAKQEAgLTgxLDkgKzc5LDcgQEAgdm9pZCBT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjphZGRBbmltYXRlZFR5cGVzKFNWR0FuaW1hdGVkVHlw
ZSogZnJvbSwgU1ZHQW5pbWEKICAgICBjb25zdCBTVkdMZW5ndGgmIGZyb21MZW5ndGggPSBmcm9t
LT5sZW5ndGgoKTsKICAgICBTVkdMZW5ndGgmIHRvTGVuZ3RoID0gdG8tPmxlbmd0aCgpOwogCi0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgdG9MZW5ndGguc2V0VmFsdWUodG9MZW5ndGgu
dmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpLCBs
ZW5ndGhDb250ZXh0LCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgdG9MZW5ndGguc2V0VmFs
dWUodG9MZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCkgKyBmcm9tTGVuZ3RoLnZhbHVlKGxlbmd0
aENvbnRleHQpLCBsZW5ndGhDb250ZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogc3Rh
dGljIFNWR0xlbmd0aCBwYXJzZUxlbmd0aEZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xMTAsOSArMTA2LDcg
QEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmUKICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0g
cGVyY2VudGFnZSA8IDAuNSA/IGZyb21TVkdMZW5ndGgudW5pdFR5cGUoKSA6IHRvU1ZHTGVuZ3Ro
LnVuaXRUeXBlKCk7CiAgICAgbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRlQWRkaXRpdmVOdW1i
ZXIocGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGZyb21TVkdMZW5ndGgudmFsdWUobGVuZ3RoQ29u
dGV4dCksIHRvU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpLCB0b0F0RW5kT2ZEdXJhdGlv
blNWR0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSwgYW5pbWF0ZWROdW1iZXIpOwogCi0gICAg
RXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYW5pbWF0ZWRTVkdMZW5ndGguc2V0VmFsdWUobGVu
Z3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5cGUsIGVjKTsK
LSAgICBBU1NFUlQoIWVjKTsKKyAgICBhbmltYXRlZFNWR0xlbmd0aC5zZXRWYWx1ZShsZW5ndGhD
b250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5ndGhNb2RlLCB1bml0VHlwZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiB9CiAKIGZsb2F0IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1
bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0
cmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aExp
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKaW5k
ZXggODEyYjkwYWY4NTY2ZDRjZmY2ZTEwZjdmNDE2MDBhMzRmMzgxZGZlYS4uYjZhMjNhY2JhMmE4
ODNiZWQ1OGJjYThjNmI2ZTNiNTM0MTQxYjM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAKQEAgLTc4LDExICs3OCw4IEBAIHZvaWQgU1ZHQW5pbWF0
ZWRMZW5ndGhMaXN0QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRUeXBlKiBm
cm9tLCBTVkdBCiAgICAgICAgIHJldHVybjsKIAogICAgIFNWR0xlbmd0aENvbnRleHQgbGVuZ3Ro
Q29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJvbUxlbmd0aExpc3RTaXplOyArK2kpIHsKLSAg
ICAgICAgdG9MZW5ndGhMaXN0W2ldLnNldFZhbHVlKHRvTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5n
dGhDb250ZXh0KSArIGZyb21MZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBsZW5n
dGhDb250ZXh0LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnJvbUxlbmd0aExpc3RTaXplOyArK2kpCisgICAgICAgIHRvTGVu
Z3RoTGlzdFtpXS5zZXRWYWx1ZSh0b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCkg
KyBmcm9tTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0KSwgbGVuZ3RoQ29udGV4dCwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHN0YXRpYyBTVkdMZW5ndGhMaXN0IHBhcnNlTGVu
Z3RoTGlzdEZyb21TdHJpbmcoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwg
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCkBAIC0xMTQsNyArMTExLDYgQEAgdm9pZCBTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50
YWdlLCB1bnMKICAgICB1bnNpZ25lZCB0b0F0RW5kT2ZEdXJhdGlvbkxpc3RTaXplID0gdG9BdEVu
ZE9mRHVyYXRpb25MZW5ndGhMaXN0LnNpemUoKTsKIAogICAgIFNWR0xlbmd0aENvbnRleHQgbGVu
Z3RoQ29udGV4dChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9MZW5ndGhMaXN0U2l6ZTsgKytpKSB7CiAg
ICAgICAgIGZsb2F0IGFuaW1hdGVkTnVtYmVyID0gYW5pbWF0ZWRMZW5ndGhMaXN0W2ldLnZhbHVl
KGxlbmd0aENvbnRleHQpOwogICAgICAgICBTVkdMZW5ndGhUeXBlIHVuaXRUeXBlID0gdG9MZW5n
dGhMaXN0W2ldLnVuaXRUeXBlKCk7CkBAIC0xMjcsOCArMTIzLDcgQEAgdm9pZCBTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50
YWdlLCB1bnMKICAgICAgICAgZmxvYXQgZWZmZWN0aXZlVG9BdEVuZCA9IGkgPCB0b0F0RW5kT2ZE
dXJhdGlvbkxpc3RTaXplID8gdG9BdEVuZE9mRHVyYXRpb25MZW5ndGhMaXN0W2ldLnZhbHVlKGxl
bmd0aENvbnRleHQpIDogMDsKIAogICAgICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVB
ZGRpdGl2ZU51bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZWZmZWN0aXZlRnJvbSwgdG9M
ZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBlZmZlY3RpdmVUb0F0RW5kLCBhbmlt
YXRlZE51bWJlcik7Ci0gICAgICAgIGFuaW1hdGVkTGVuZ3RoTGlzdFtpXS5zZXRWYWx1ZShsZW5n
dGhDb250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5ndGhNb2RlLCB1bml0VHlwZSwgZWMpOwot
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgYW5pbWF0ZWRMZW5ndGhMaXN0W2ldLnNldFZh
bHVlKGxlbmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBl
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMZW5ndGguY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5j
cHAKaW5kZXggYmY1YmY0MjM2MTUxNDc3NzQ2YmY3MDIyNTc5NDYzZTFhYTEyNTE2OS4uZTcwZDg2
YWQzMzQyMzMyM2FlODk1Y2QxYTNiMjhiN2UxZTM5MzU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xlbmd0
aC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDU1NIZWxwZXIuaCIKICNpbmNsdWRl
ICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJGbG9hdENvbnZlcnNp
b24uaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGll
cy5oIgpAQCAtMTMyLDkgKzEzMyw3IEBAIFNWR0xlbmd0aDo6U1ZHTGVuZ3RoKGNvbnN0IFNWR0xl
bmd0aENvbnRleHQmIGNvbnRleHQsIGZsb2F0IHZhbHVlLCBTVkdMZW5ndGhNb2RlCiAgICAgOiBt
X3ZhbHVlSW5TcGVjaWZpZWRVbml0cygwKQogICAgICwgbV91bml0KHN0b3JlVW5pdChtb2RlLCB1
bml0VHlwZSkpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2V0VmFsdWUodmFs
dWUsIGNvbnRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzZXRWYWx1ZSh2YWx1ZSwg
Y29udGV4dCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIFNWR0xlbmd0aDo6U1ZHTGVuZ3Ro
KGNvbnN0IFNWR0xlbmd0aCYgb3RoZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuY3BwCmluZGV4IDM5NDNmZmViZGEyM2NiMjI0YTk0NGFlOGQ5NzlmZWE2MWVl
NTA3MzUuLmNiODZmMDhiNjhkMjczNDgyZWZhYzM5NjUxN2MxODAzZGIxMDQ0OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBAIC05NSwxMSArOTUs
OCBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1RleHRDb250ZW50RWxlbWVu
dDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoVwogUGFzc1JlZlB0cjxTVkdBbmltYXRlZExlbmd0
aD4gU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojp0ZXh0TGVuZ3RoQW5pbWF0ZWQoKQogewogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU1ZHTGVuZ3RoLCBkZWZhdWx0VGV4dExlbmd0aCwgKExlbmd0aE1v
ZGVPdGhlcikpOwotICAgIGlmIChtX3NwZWNpZmllZFRleHRMZW5ndGggPT0gZGVmYXVsdFRleHRM
ZW5ndGgpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1fdGV4dExl
bmd0aC52YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIGdldENv
bXB1dGVkVGV4dExlbmd0aCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KKyAg
ICBpZiAobV9zcGVjaWZpZWRUZXh0TGVuZ3RoID09IGRlZmF1bHRUZXh0TGVuZ3RoKQorICAgICAg
ICBtX3RleHRMZW5ndGgudmFsdWUubmV3VmFsdWVTcGVjaWZpZWRVbml0cyhMZW5ndGhUeXBlTnVt
YmVyLCBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAg
ICBtX3RleHRMZW5ndGguc2hvdWxkU3luY2hyb25pemUgPSB0cnVlOwogICAgIHJldHVybiBzdGF0
aWNfcG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkTGVuZ3RoPihsb29rdXBPckNyZWF0ZVRleHRMZW5n
dGhXcmFwcGVyKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9hbmltYXRp
b24vU1ZHU01JTEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAKaW5kZXggNjc3YjdlMGQ3ZjZhNGY3NDA3N2Q5YWRlZDIxMWRjYmNmZThi
MDVhOS4uY2I4YTQ0NGJjYmQyOTM1ZTI0ZjdkZWE3OGU1MjdjNGZlYWQ4Nzc3YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKQEAgLTIwMiwx
MCArMjAyLDggQEAgc3RhdGljIGlubGluZSBRdWFsaWZpZWROYW1lIGNvbnN0cnVjdFF1YWxpZmll
ZE5hbWUoY29uc3QgU1ZHRWxlbWVudCogc3ZnRWxlbWVudCwKICAgICAKICAgICBTdHJpbmcgcHJl
Zml4OwogICAgIFN0cmluZyBsb2NhbE5hbWU7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgaWYgKCFEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1lKGF0dHJpYnV0ZU5hbWUsIHByZWZp
eCwgbG9jYWxOYW1lLCBlYykpCisgICAgaWYgKCFEb2N1bWVudDo6cGFyc2VRdWFsaWZpZWROYW1l
KGF0dHJpYnV0ZU5hbWUsIHByZWZpeCwgbG9jYWxOYW1lLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSkK
ICAgICAgICAgcmV0dXJuIGFueVFOYW1lKCk7Ci0gICAgQVNTRVJUKCFlYyk7CiAgICAgCiAgICAg
U3RyaW5nIG5hbWVzcGFjZVVSSSA9IHN2Z0VsZW1lbnQtPmxvb2t1cE5hbWVzcGFjZVVSSShwcmVm
aXgpOyAgICAKICAgICBpZiAobmFtZXNwYWNlVVJJLmlzRW1wdHkoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187004</attachid>
            <date>2013-02-07 00:20:20 -0800</date>
            <delta_ts>2013-02-08 00:51:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-109044-20130207091655.patch</filename>
            <type>text/plain</type>
            <size>57500</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZiYjJlNzVkNTVhZDNk
MTRjYmZlZjA1NWU5MzJlYmRhMDIxMmYxNy4uNDc5M2I1MDQ4YWQxMjVmZTM3YmNlZDM3OGU1Y2Zk
Njk5M2I5NGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAxMy0wMi0wNyAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgRXhjZXB0aW9u
Q29kZSBhc3NlcnRpb25zIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTiBtYWNyby4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoZSBwYXR0ZXJuOgorCisgICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1ldGhvZFRoYXRHZW5l
cmF0ZXNFeGNlcHRpb24oZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisKKyAgICAgICAg
aXMgbW9yZSBjbGVhcmx5IGFuZCBzdWNjaW5jdGx5IHdyaXR0ZW4gYXM6CisKKyAgICAgICAgICAg
IG1ldGhvZFRoYXRHZW5lcmF0ZXNFeGNlcHRpb24oQVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgb2NjdXJhbmNlcyBvZiB0aGUgZm9ybWVyIHRo
YXQgbmV2ZXIgdG91Y2ggJ2VjJworICAgICAgICBhZ2FpbiB3aXRoIHRoZSBsYXR0ZXIuIEl0IGRv
ZXMgdGhlIHNhbWUgZm9yICdBU1NFUlQoZWMgPT0gMCk7JyAoYW5kLCBhcworICAgICAgICBhIGRy
aXZlLWJ5LCByZXBsYWNlcyAnQVNTRVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScgaW4g
cGxhY2VzCisgICAgICAgIHdoZXJlIGl0IGRvZXMgaW5kZWVkIG1hdHRlciB0aGF0ICdlYycgZ2V0
IHNldCBwcm9wZXJseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc2hvdWxkIHJl
c3VsdCBmcm9tIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpkaXJlY3Rpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uOjptb2RlKToKKyAgICAgICAg
KiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2Rl
Ojp0YWtlQWxsQ2hpbGRyZW5Gcm9tKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vTWVzc2Fn
ZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2Fn
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMpOgor
ICAgICAgICAqIGVkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjplbmNsb3NpbmdEZWxldGFibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRl
bGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmNyZWF0ZURlbGV0aW9uVUkpOgorICAgICAgICAgICAgUmVw
bGFjZWQgaW5saW5lIEFTU0VSVCB3aXRoIEFTU0VSVF9OT19FWENFUFRJT04uCisgICAgICAgIChX
ZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAgICAgIFJlcGxh
Y2VkICdBU1NFUlQoZWMgPT0gMCknIHdpdGggJ0FTU0VSVCghZWMpJyB0byBtYXRjaCB0aGUgc3R5
bGUgZ3VpZGUuCisgICAgICAgICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnVuaW9uRE9NUmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2Rl
V2l0aFNwYW5Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnN3YXBJbk5vZGVQcmVzZXJ2
aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6
OlJlcGxhY2VtZW50RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZW1lbnRGcmFn
bWVudDo6cmVtb3ZlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50
OjppbnNlcnROb2RlQmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21l
bnQ6Omluc2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXBsYWNlbWVudEZyYWdtZW50OjpyZXN0b3JlQW5kUmVtb3ZlVGVzdFJlbmRlcmluZ05vZGVzVG9G
cmFnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5z
ZXJ0QXNMaXN0SXRlbXMpOgorICAgICAgICAqIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSk6
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2hhcmFjdGVySXRlcmF0b3I6OnJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0No
YXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6
OnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxhcHNl
ZFRvQm91bmRhcnkpOgorICAgICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlVGFiU3BhbkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFj
L0VkaXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNlbGVjdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9u
U3RhcnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjp0cmltRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6ZmlsbENvbnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlRnJhZ21lbnRGcm9tVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVu
dEZyb21Ob2Rlcyk6CisgICAgICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAg
ICAgICBSZXBsYWNlZCBpbmxpbmUgQVNTRVJUIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTi4KKyAg
ICAgICAgKiBodG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZCk6CisgICAgICAgICAgICBSZXBsYWNlZCAnQVNT
RVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScgdG8gbWF0Y2ggdGhlIHN0eWxlIGd1aWRl
LgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRl
eHRWYWx1ZSk6CisgICAgICAgICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgor
ICAgICAgICAqIGh0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9zaGFk
b3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNo
ZWV0OjphZGRSdWxlKToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3Bh
dGNoRE9NRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVNlbGVjdGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KToKKyAgICAgICAgKiBw
YWdlL0RyYWdDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVDbGlwYm9h
cmRGb3JJbWFnZURyYWcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxCYXNlbGluZVNoaWZ0VmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3R5bGU6OmluaXRpYWxLZXJuaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlclN0eWxlOjppbml0aWFsU3Ryb2tlRGFzaE9mZnNl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdHlsZTo6aW5pdGlhbFN0cm9rZVdpZHRo
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hhcmVkU1ZHTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3Ro
QW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZExlbmd0aExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6
CisgICAgICAgICogc3ZnL1NWR0xlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMZW5n
dGg6OlNWR0xlbmd0aCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmlt
YXRlZCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RRdWFsaWZpZWROYW1lKToKKyAgICAgICAgICAgIFJlcGxh
Y2VkIGlubGluZSBBU1NFUlQgd2l0aCBBU1NFUlRfTk9fRVhDRVBUSU9OLgorCiAyMDEzLTAyLTA2
ICBNaWtlIFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRW50aXR5LWhlYWRl
ciBleHRlbnNpb24gaGVhZGVycyBob25vcmVkIG9uIDMwNCByZXNwb25zZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcAppbmRleCA3NDY1MDEzMWY5
YTFkZDE5YTVmNmZlMTA2ZTYxNDJiZTYwNmE3MzNlLi41OWY2MTEyZDE5MDg3YjIwODYxNTZlZTRi
NWJiZjM3NjUxYzE3NDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkN1cnNvci5jcHAKQEAgLTk1LDEwICs5NSw3IEBAIElEQkN1cnNvcjo6fklEQkN1cnNvcigp
CiBjb25zdCBTdHJpbmcmIElEQkN1cnNvcjo6ZGlyZWN0aW9uKCkgY29uc3QKIHsKICAgICBJREJf
VFJBQ0UoIklEQkN1cnNvcjo6ZGlyZWN0aW9uIik7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBkaXJlY3Rpb24gPSBkaXJlY3Rpb25Ub1N0cmluZyht
X2RpcmVjdGlvbiwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHJldHVybiBkaXJlY3Rpb247
CisgICAgcmV0dXJuIGRpcmVjdGlvblRvU3RyaW5nKG1fZGlyZWN0aW9uLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKIH0KIAogY29uc3QgU2NyaXB0VmFsdWUmIElEQkN1cnNvcjo6a2V5KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3Jl
LmNwcAppbmRleCAzNDM2ODM0MDE3NTAzMjgxOTgxY2RlZWIwN2UwYjRhMzcxMTAxOTcxLi40YzU4
Y2UzYTc3Mzc2NDc1YTI0NGM3NDhmOGE0ODU3YzMzZGZlMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuY3BwCkBAIC0zMjIsOSAr
MzIyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IGV2ZW50LT50
YXJnZXQoKTsKICAgICAgICAgSURCUmVxdWVzdCogcmVxdWVzdCA9IHN0YXRpY19jYXN0PElEQlJl
cXVlc3QqPih0YXJnZXQpOwogCi0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICBSZWZQdHI8SURCQW55PiBjdXJzb3JBbnkgPSByZXF1ZXN0LT5yZXN1bHQoZWMpOwotICAgICAg
ICBBU1NFUlQoIWVjKTsKKyAgICAgICAgUmVmUHRyPElEQkFueT4gY3Vyc29yQW55ID0gcmVxdWVz
dC0+cmVzdWx0KEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBSZWZQdHI8SURCQ3Vyc29y
V2l0aFZhbHVlPiBjdXJzb3I7CiAgICAgICAgIGlmIChjdXJzb3JBbnktPnR5cGUoKSA9PSBJREJB
bnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGUpCiAgICAgICAgICAgICBjdXJzb3IgPSBjdXJzb3JB
bnktPmlkYkN1cnNvcldpdGhWYWx1ZSgpOwpAQCAtMzMyLDggKzMzMCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIFZlY3RvcjxpbnQ2NF90LCAxPiBpbmRleElkczsKICAgICAgICAgaW5kZXhJZHMuYXBw
ZW5kKG1faW5kZXhNZXRhZGF0YS5pZCk7CiAgICAgICAgIGlmIChjdXJzb3IpIHsKLSAgICAgICAg
ICAgIGN1cnNvci0+Y29udGludWVGdW5jdGlvbihzdGF0aWNfY2FzdDxJREJLZXkqPigwKSwgZWMp
OwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBjdXJzb3ItPmNvbnRpbnVl
RnVuY3Rpb24oc3RhdGljX2Nhc3Q8SURCS2V5Kj4oMCksIEFTU0VSVF9OT19FWENFUFRJT04pOwog
CiAgICAgICAgICAgICBSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5ID0gY3Vyc29yLT5pZGJQcmlt
YXJ5S2V5KCk7CiAgICAgICAgICAgICBTY3JpcHRWYWx1ZSB2YWx1ZSA9IGN1cnNvci0+dmFsdWUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uLmNwcAppbmRleCBiYjYwYjRlNDdhNGExMjE5YmI4YWJhZDI2YmQ0OTcxY2YxNWI3YjBhLi4w
MmRmZTBmZTMyMmNkZGM2N2I3MzE5ODJmNGEyNzA5OGQyNWUzZDE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCkBAIC0xMjEs
MTAgKzEyMSw3IEBAIElEQlRyYW5zYWN0aW9uOjp+SURCVHJhbnNhY3Rpb24oKQogCiBjb25zdCBT
dHJpbmcmIElEQlRyYW5zYWN0aW9uOjptb2RlKCkgY29uc3QKIHsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIG1vZGUgPSBtb2RlVG9TdHJpbmcobV9t
b2RlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAgcmV0dXJuIG1vZGU7CisgICAgcmV0dXJu
IG1vZGVUb1N0cmluZyhtX21vZGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiB2b2lkIElE
QlRyYW5zYWN0aW9uOjpzZXRFcnJvcihQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvciwgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5k
ZXggMjc3ZmNhMGY3M2M0ODdiYWQ3YzQ4NzgxMmRhYTE4YTFmZmM3OGYzNi4uOWRkN2FhMGRjM2Q5
NGM1MDFlMDNkOGE5MzA5ZDQ0MmRiZWVjMWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcApAQCAtMTA4LDEyICsxMDgsMTAgQEAgdm9pZCBDb250YWluZXJOb2RlOjp0YWtlQWxs
Q2hpbGRyZW5Gcm9tKENvbnRhaW5lck5vZGUqIG9sZFBhcmVudCkKICAgICBvbGRQYXJlbnQtPnJl
bW92ZURldGFjaGVkQ2hpbGRyZW4oKTsKIAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBj
aGlsZHJlbi5zaXplKCk7ICsraSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICAgICAgaWYgKGNoaWxkcmVuW2ldLT5hdHRhY2hlZCgpKQogICAgICAgICAgICAgY2hpbGRyZW5b
aV0tPmRldGFjaCgpOwogICAgICAgICAvLyBGSVhNRTogV2UgbmVlZCBhIG5vIG11dGF0aW9uIGV2
ZW50IHZlcnNpb24gb2YgYWRvcHROb2RlLgotICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBk
b2N1bWVudCgpLT5hZG9wdE5vZGUoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAg
IEFTU0VSVCghZWMpOworICAgICAgICBSZWZQdHI8Tm9kZT4gY2hpbGQgPSBkb2N1bWVudCgpLT5h
ZG9wdE5vZGUoY2hpbGRyZW5baV0ucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICAgICAgcGFyc2VyQXBwZW5kQ2hpbGQoY2hpbGQuZ2V0KCkpOwogICAgICAgICAvLyBGSVhNRTog
VG9nZXRoZXIgd2l0aCBhZG9wdE5vZGUgYWJvdmUsIHRoZSB0cmVlIHNjb3BlIG1pZ2h0IGdldCB1
cGRhdGVkIHJlY3Vyc2l2ZWx5IHR3aWNlCiAgICAgICAgIC8vIChpZiB0aGUgZG9jdW1lbnQgY2hh
bmdlZCBvciBvbGRQYXJlbnQgd2FzIGluIGEgc2hhZG93IHRyZWUsIEFORCAqdGhpcyBpcyBpbiBh
IHNoYWRvdyB0cmVlKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDYyMTQ3NTZiYzE0Mzg5
MzE2OTk2NGRlYWNmZjcyY2FmYTcyMDM2YjIuLmE5ZmJhYTVjNjk0NzlmMjI4YWYwMDc0MDEzMGNi
MTg2ZDQ4NWQ4MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTUyOSw5ICsxNTI5LDcg
QEAgdm9pZCBEb2N1bWVudDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBlbHNl
IGlmICghbV90aXRsZUVsZW1lbnQpIHsKICAgICAgICAgaWYgKEhUTUxFbGVtZW50KiBoZWFkRWxl
bWVudCA9IGhlYWQoKSkgewogICAgICAgICAgICAgbV90aXRsZUVsZW1lbnQgPSBjcmVhdGVFbGVt
ZW50KHRpdGxlVGFnLCBmYWxzZSk7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICAgICAgICAgIGhlYWRFbGVtZW50LT5hcHBlbmRDaGlsZChtX3RpdGxlRWxlbWVudCwgZWMp
OwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBoZWFkRWxlbWVudC0+YXBw
ZW5kQ2hpbGQobV90aXRsZUVsZW1lbnQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA5NWM1YTZkMDExNzI2
NGI2MTBkYmQ4MDIwMmNiYTc2YzIzMDVhZjcyLi43Y2I3MmFlYWEzZDE2MzJlNDkxMzMxNDEzY2Qw
OWEzODQxZDY0OTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTE4Niw5ICsx
ODYsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICAgICAgT3du
UHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMo
Km1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgZXZlbnREYXRhLT5jaGFubmVscygpKTsKICAgICAg
ICAgUmVmUHRyPEV2ZW50PiBldnQgPSBNZXNzYWdlRXZlbnQ6OmNyZWF0ZShwb3J0cy5yZWxlYXNl
KCksIGV2ZW50RGF0YS0+bWVzc2FnZSgpKTsKIAotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICBkaXNwYXRjaEV2ZW50KGV2dC5yZWxlYXNlKCksIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgIH0KIH0KIApAQCAtMjI5LDggKzIyNyw3IEBAIFBhc3NPd25QdHI8
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKGNv
bnN0IE1lc3NhZ2VQCiAgICAgLy8gUGFzc2VkLWluIHBvcnRzIHBhc3NlZCB2YWxpZGl0eSBjaGVj
a3MsIHNvIHdlIGNhbiBkaXNlbnRhbmdsZSB0aGVtLgogICAgIE93blB0cjxNZXNzYWdlUG9ydENo
YW5uZWxBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5KHBvcnRzLT5zaXplKCkpKTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMCA7IGkgPCBw
b3J0cy0+c2l6ZSgpIDsgKytpKSB7Ci0gICAgICAgIE93blB0cjxNZXNzYWdlUG9ydENoYW5uZWw+
IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUoZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsgLy8gQ2FuJ3QgZ2VuZXJhdGUgZXhjZXB0aW9uIGhlcmUgaWYgcGFzc2VkIGFib3ZlIGNo
ZWNrcy4KKyAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbD4gY2hhbm5lbCA9ICgqcG9y
dHMpW2ldLT5kaXNlbnRhbmdsZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsgLy8gQ2FuJ3QgZ2VuZXJh
dGUgZXhjZXB0aW9uIGhlcmUgaWYgcGFzc2VkIGFib3ZlIGNoZWNrcy4KICAgICAgICAgKCpwb3J0
QXJyYXkpW2ldID0gY2hhbm5lbC5yZWxlYXNlKCk7CiAgICAgfQogICAgIHJldHVybiBwb3J0QXJy
YXkucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVC
dXR0b25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9u
Q29udHJvbGxlci5jcHAKaW5kZXggYzBkYTI0NjkyMmUyNGY1MGI5MjIwNjViMWRhYWQ3ODYwYTlm
M2NkNi4uOTBkMjUzZTgxYzg4MTk3ZDNhYTAxNTk4OTIyNzQ5NWYwZmVjZmFiOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCkBAIC0x
NTUsMTAgKzE1NSw4IEBAIHN0YXRpYyBIVE1MRWxlbWVudCogZW5jbG9zaW5nRGVsZXRhYmxlRWxl
bWVudChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBOb2Rl
KiBjb250YWluZXIgPSByYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoZWMpOworICAgIE5v
ZGUqIGNvbnRhaW5lciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7
CiAKICAgICAvLyBUaGUgZW5jbG9zaW5nTm9kZU9mVHlwZSBmdW5jdGlvbiBvbmx5IHdvcmtzIG9u
IG5vZGVzIHRoYXQgYXJlIGVkaXRhYmxlCiAgICAgLy8gKHdoaWNoIGlzIHN0cmFuZ2UsIGdpdmVu
IGl0cyBuYW1lKS4KQEAgLTIzNCw3ICsyMzIsNyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI6OmNyZWF0ZURlbGV0aW9uVUkoKQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
Y29udGFpbmVyLT5hcHBlbmRDaGlsZChvdXRsaW5lLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVj
ID09IDApOworICAgIEFTU0VSVCghZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuOwog
CkBAIC0yNjYsNyArMjY0LDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVE
ZWxldGlvblVJKCkKICAgICBidXR0b24tPnNldENhY2hlZEltYWdlKG5ldyBDYWNoZWRJbWFnZShi
dXR0b25JbWFnZS5nZXQoKSkpOwogCiAgICAgY29udGFpbmVyLT5hcHBlbmRDaGlsZChidXR0b24u
Z2V0KCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgQVNTRVJUKCFlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMCw3ICsyOTgsNyBAQCB2b2lkIERlbGV0
ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3coSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBtX3RhcmdldC0+YXBwZW5kQ2hpbGQobV9jb250YWluZXJF
bGVtZW50LmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIEFTU0VSVCghZWMp
OwogICAgIGlmIChlYykgewogICAgICAgICBoaWRlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDQ3MzMyNDkzYWM5OWI1ZDE4
NThkMGYzZDFmZjJiM2IzMDE0YzhlN2YuLjI1NmE1YjM1ZDE0MmI4Yzk2ZjI2ZDhmMzM1YjgxNTk2
ZTY4ODhlNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcApAQCAt
MjY2LDExICsyNjYsOCBAQCBzdGF0aWMgdW5zaWduZWQgdmVydGljYWxTY3JvbGxEaXN0YW5jZShG
cmFtZSogZnJhbWUpCiAKIHN0YXRpYyBSZWZQdHI8UmFuZ2U+IHVuaW9uRE9NUmFuZ2VzKFJhbmdl
KiBhLCBSYW5nZSogYikKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSYW5nZSog
c3RhcnQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OlNUQVJUX1RPX1NUQVJULCBi
LCBlYykgPD0gMCA/IGEgOiBiOwotICAgIEFTU0VSVCghZWMpOwotICAgIFJhbmdlKiBlbmQgPSBh
LT5jb21wYXJlQm91bmRhcnlQb2ludHMoUmFuZ2U6OkVORF9UT19FTkQsIGIsIGVjKSA8PSAwID8g
YiA6IGE7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgUmFuZ2UqIHN0YXJ0ID0gYS0+Y29tcGFyZUJv
dW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgYiwgQVNTRVJUX05PX0VYQ0VQVElP
TikgPD0gMCA/IGEgOiBiOworICAgIFJhbmdlKiBlbmQgPSBhLT5jb21wYXJlQm91bmRhcnlQb2lu
dHMoUmFuZ2U6OkVORF9UT19FTkQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pIDw9IDAgPyBiIDog
YTsKIAogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKGEtPm93bmVyRG9jdW1lbnQoKSwgc3RhcnQt
PnN0YXJ0Q29udGFpbmVyKCksIHN0YXJ0LT5zdGFydE9mZnNldCgpLCBlbmQtPmVuZENvbnRhaW5l
cigpLCBlbmQtPmVuZE9mZnNldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9SZXBsYWNlTm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKaW5kZXggODcxMjMwNDA5NTFlZjlh
MmE5YjFkYjEwOGY3YTI3YTExMTU1YzRmNy4uZjUwN2QyODg2ODJiZjc4M2I0YmIzZTZkOTRiYjBi
NDI0NzVkZGEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlTm9k
ZVdpdGhTcGFuQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
Tm9kZVdpdGhTcGFuQ29tbWFuZC5jcHAKQEAgLTUxLDIzICs1MSwxOCBAQCBSZXBsYWNlTm9kZVdp
dGhTcGFuQ29tbWFuZDo6UmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQoUGFzc1JlZlB0cjxIVE1M
RWxlbWVudD4gZQogc3RhdGljIHZvaWQgc3dhcEluTm9kZVByZXNlcnZpbmdBdHRyaWJ1dGVzQW5k
Q2hpbGRyZW4oSFRNTEVsZW1lbnQqIG5ld05vZGUsIEhUTUxFbGVtZW50KiBub2RlVG9SZXBsYWNl
KQogewogICAgIEFTU0VSVChub2RlVG9SZXBsYWNlLT5pbkRvY3VtZW50KCkpOwotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnROb2RlID0g
bm9kZVRvUmVwbGFjZS0+cGFyZW50Tm9kZSgpOwotICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9y
ZShuZXdOb2RlLCBub2RlVG9SZXBsYWNlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgcGFy
ZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKG5ld05vZGUsIG5vZGVUb1JlcGxhY2UsIEFTU0VSVF9OT19F
WENFUFRJT04pOwogCiAgICAgTm9kZVZlY3RvciBjaGlsZHJlbjsKICAgICBnZXRDaGlsZE5vZGVz
KG5vZGVUb1JlcGxhY2UsIGNoaWxkcmVuKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNo
aWxkcmVuLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIG5ld05vZGUtPmFwcGVuZENoaWxkKGNoaWxk
cmVuW2ldLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNoaWxkcmVuLnNpemUoKTsgKytpKQorICAgICAgICBuZXdOb2RlLT5hcHBl
bmRDaGlsZChjaGlsZHJlbltpXSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAvLyBGSVhN
RTogRml4IHRoaXMgdG8gc2VuZCB0aGUgcHJvcGVyIE11dGF0aW9uUmVjb3JkcyB3aGVuIE11dGF0
aW9uT2JzZXJ2ZXJzIGFyZSBwcmVzZW50LgogICAgIG5ld05vZGUtPmNsb25lRGF0YUZyb21FbGVt
ZW50KCpub2RlVG9SZXBsYWNlKTsKIAotICAgIHBhcmVudE5vZGUtPnJlbW92ZUNoaWxkKG5vZGVU
b1JlcGxhY2UsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBwYXJlbnROb2RlLT5yZW1vdmVD
aGlsZChub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBSZXBs
YWNlTm9kZVdpdGhTcGFuQ29tbWFuZDo6ZG9BcHBseSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDRhZGU2OGFhOGNmMDc2
NmQyYzhkOGY1NjNjNGJjNzNmNDNhMjgxYjIuLmE5NGViMTBjY2ZjN2E1NWYxNThiNGYwZjZhZTdi
OGY3NTIyYTk1MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0xODEsOSArMTgxLDcgQEAgUmVwbGFjZW1lbnRGcmFnbWVu
dDo6UmVwbGFjZW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQsIERvY3VtZW50RnJhZ21l
bnQqIGYKIAogICAgIC8vIEdpdmUgdGhlIHJvb3QgYSBjaGFuY2UgdG8gY2hhbmdlIHRoZSB0ZXh0
LgogICAgIFJlZlB0cjxCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudD4gZXZ0ID0gQmVmb3JlVGV4dElu
c2VydGVkRXZlbnQ6OmNyZWF0ZSh0ZXh0KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBlZGl0YWJsZVJvb3QtPmRpc3BhdGNoRXZlbnQoZXZ0LCBlYyk7Ci0gICAgQVNTRVJUKGVjID09
IDApOworICAgIGVkaXRhYmxlUm9vdC0+ZGlzcGF0Y2hFdmVudChldnQsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIGlmICh0ZXh0ICE9IGV2dC0+dGV4dCgpIHx8ICFlZGl0YWJsZVJvb3QtPnJl
bmRlcmVySXNSaWNobHlFZGl0YWJsZSgpKSB7CiAgICAgICAgIHJlc3RvcmVBbmRSZW1vdmVUZXN0
UmVuZGVyaW5nTm9kZXNUb0ZyYWdtZW50KGhvbGRlci5nZXQoKSk7CiAKQEAgLTIzNCw5ICsyMzIs
NyBAQCB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlbW92ZU5vZGUoUGFzc1JlZlB0cjxOb2Rl
PiBub2RlKQogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgcGFyZW50LT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBl
Yyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZS5n
ZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgUmVwbGFjZW1lbnRGcmFnbWVu
dDo6aW5zZXJ0Tm9kZUJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIHJlZk5vZGUp
CkBAIC0yNDgsMjMgKzI0NCwxNSBAQCB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydE5v
ZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBOb2RlKiByZWZOb2RlKQogICAgIGlmICgh
cGFyZW50KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5vZGUsIGVjKTsKLSAgICBB
U1NFUlQoZWMgPT0gMCk7CisgICAgcGFyZW50LT5pbnNlcnRCZWZvcmUobm9kZSwgcmVmTm9kZSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIFBhc3NSZWZQdHI8U3R5bGVkRWxlbWVudD4gUmVw
bGFjZW1lbnRGcmFnbWVudDo6aW5zZXJ0RnJhZ21lbnRGb3JUZXN0UmVuZGVyaW5nKE5vZGUqIHJv
b3RFZGl0YWJsZUVsZW1lbnQpCiB7CiAgICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IGhvbGRlciA9
IGNyZWF0ZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KG1fZG9jdW1lbnQuZ2V0KCkpOwotICAgIAot
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotCi0gICAgaG9sZGVyLT5hcHBlbmRDaGlsZChtX2Zy
YWdtZW50LCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOwotCi0gICAgcm9vdEVkaXRhYmxlRWxl
bWVudC0+YXBwZW5kQ2hpbGQoaG9sZGVyLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDAp
OwogCisgICAgaG9sZGVyLT5hcHBlbmRDaGlsZChtX2ZyYWdtZW50LCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKyAgICByb290RWRpdGFibGVFbGVtZW50LT5hcHBlbmRDaGlsZChob2xkZXIuZ2V0KCks
IEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIG1fZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgcmV0dXJuIGhvbGRlci5yZWxlYXNlKCk7CkBA
IC0yNzUsMTIgKzI2Myw5IEBAIHZvaWQgUmVwbGFjZW1lbnRGcmFnbWVudDo6cmVzdG9yZUFuZFJl
bW92ZVRlc3RSZW5kZXJpbmdOb2Rlc1RvRnJhZ21lbnQoU3R5bGVkRWxlCiAgICAgaWYgKCFob2xk
ZXIpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICB3aGlsZSAoUmVmUHRyPE5vZGU+IG5vZGUgPSBob2xkZXItPmZpcnN0Q2hpbGQoKSkgewotICAg
ICAgICBob2xkZXItPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIGVjKTsKLSAgICAgICAgQVNTRVJU
KGVjID09IDApOwotICAgICAgICBtX2ZyYWdtZW50LT5hcHBlbmRDaGlsZChub2RlLmdldCgpLCBl
Yyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICAgICAgaG9sZGVyLT5yZW1vdmVDaGls
ZChub2RlLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgbV9mcmFnbWVudC0+
YXBwZW5kQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQogCiAg
ICAgcmVtb3ZlTm9kZShob2xkZXIpOwpAQCAtMTMxOCw5ICsxMzAzLDcgQEAgTm9kZSogUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6Omluc2VydEFzTGlzdEl0ZW1zKFBhc3NSZWZQdHI8SFRNTEVsZW1l
bnQ+IHBycExpc3QKICAgICB9CiAKICAgICB3aGlsZSAoUmVmUHRyPE5vZGU+IGxpc3RJdGVtID0g
bGlzdEVsZW1lbnQtPmZpcnN0Q2hpbGQoKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgbGlzdEVsZW1lbnQtPnJlbW92ZUNoaWxkKGxpc3RJdGVtLmdldCgpLCBlYyk7
Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBsaXN0RWxlbWVudC0+cmVtb3ZlQ2hpbGQo
bGlzdEl0ZW0uZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICBpZiAoaXNTdGFy
dCB8fCBpc01pZGRsZSkgewogICAgICAgICAgICAgaW5zZXJ0Tm9kZUJlZm9yZShsaXN0SXRlbSwg
bGFzdE5vZGUpOwogICAgICAgICAgICAgaW5zZXJ0ZWROb2Rlcy5yZXNwb25kVG9Ob2RlSW5zZXJ0
aW9uKGxpc3RJdGVtLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
U3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRl
eHROb2RlQ29tbWFuZC5jcHAKaW5kZXggMGVlY2E2YWRmNDA3NDY4YzNiOTY0ODI2YWY3OTRjZGU5
MTkxYjk4OC4uY2YwN2RmMzc2ZTI3MDEwNmUzZTIzYWFiNGExZTZhODY3NTYzZjM1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGxpdFRleHROb2RlQ29tbWFuZC5jcHAKQEAgLTc1
LDEyICs3NSwxMCBAQCB2b2lkIFNwbGl0VGV4dE5vZGVDb21tYW5kOjpkb1VuYXBwbHkoKQogCiAg
ICAgU3RyaW5nIHByZWZpeFRleHQgPSBtX3RleHQxLT5kYXRhKCk7CiAKLSAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBtX3RleHQyLT5pbnNlcnREYXRhKDAsIHByZWZpeFRleHQsIGVjKTsK
LSAgICBBU1NFUlQoIWVjKTsKKyAgICBtX3RleHQyLT5pbnNlcnREYXRhKDAsIHByZWZpeFRleHQs
IEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgZG9jdW1lbnQoKS0+bWFya2VycygpLT5jb3B5
TWFya2VycyhtX3RleHQxLmdldCgpLCAwLCBwcmVmaXhUZXh0Lmxlbmd0aCgpLCBtX3RleHQyLmdl
dCgpLCAwKTsKLSAgICBtX3RleHQxLT5yZW1vdmUoZWMpOworICAgIG1fdGV4dDEtPnJlbW92ZShB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogdm9pZCBTcGxpdFRleHROb2RlQ29tbWFuZDo6ZG9S
ZWFwcGx5KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAppbmRleCBiNmIw
MDFiN2QwMjFhNWJlOGRlNzliNjE1Y2FmZGY3MDFiZWVjNzAxLi5lMmIxZTJlNjIzMmFmYWRlZTlm
MmE3NTlkZjQwOTNjNjlkMTI2ZDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0
b3IuY3BwCkBAIC0xNDE4LDEwICsxNDE4LDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gQ2hhcmFjdGVy
SXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKICAgICAgICAgICAgIE5vZGUqIG4gPSByLT5zdGFydENv
bnRhaW5lcigpOwogICAgICAgICAgICAgQVNTRVJUKG4gPT0gci0+ZW5kQ29udGFpbmVyKCkpOwog
ICAgICAgICAgICAgaW50IG9mZnNldCA9IHItPnN0YXJ0T2Zmc2V0KCkgKyBtX3J1bk9mZnNldDsK
LSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgci0+c2V0U3Rh
cnQobiwgb2Zmc2V0LCBlYyk7Ci0gICAgICAgICAgICByLT5zZXRFbmQobiwgb2Zmc2V0ICsgMSwg
ZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICByLT5zZXRTdGFydChu
LCBvZmZzZXQsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICAgICAgci0+c2V0RW5kKG4s
IG9mZnNldCArIDEsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgfQogICAg
IHJldHVybiByLnJlbGVhc2UoKTsKQEAgLTE1MjYsMTAgKzE1MjQsOCBAQCBQYXNzUmVmUHRyPFJh
bmdlPiBCYWNrd2FyZHNDaGFyYWN0ZXJJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdAogICAgICAgICAg
ICAgTm9kZSogbiA9IHItPnN0YXJ0Q29udGFpbmVyKCk7CiAgICAgICAgICAgICBBU1NFUlQobiA9
PSByLT5lbmRDb250YWluZXIoKSk7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gci0+ZW5kT2Zm
c2V0KCkgLSBtX3J1bk9mZnNldDsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0IC0gMSwgZWMpOwotICAgICAgICAgICAg
ci0+c2V0RW5kKG4sIG9mZnNldCwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAg
ICAgICAgICByLT5zZXRTdGFydChuLCBvZmZzZXQgLSAxLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
KyAgICAgICAgICAgIHItPnNldEVuZChuLCBvZmZzZXQsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByLnJlbGVhc2UoKTsKQEAgLTI0NDAsMTEgKzI0
MzYsOCBAQCBQYXNzUmVmUHRyPFJhbmdlPiBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKENvbnRhaW5lck5vZGUqIHNjb3BlLAogICAgIGlmIChyYW5nZUxvY2F0aW9uID09
IDAgJiYgcmFuZ2VMZW5ndGggPT0gMCAmJiBpdC5hdEVuZCgpKSB7CiAgICAgICAgIHRleHRSdW5S
YW5nZSA9IGl0LnJhbmdlKCk7CiAgICAgICAgIAotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgcmVzdWx0UmFuZ2UtPnNldFN0YXJ0KHRleHRSdW5SYW5nZS0+c3RhcnRDb250
YWluZXIoKSwgMCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgcmVzdWx0UmFu
Z2UtPnNldEVuZCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIGVjKTsKLSAgICAg
ICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHJlc3VsdFJhbmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFu
Z2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIEFTU0VSVF9OT19FWENFUFRJT04pOworICAgICAgICBy
ZXN1bHRSYW5nZS0+c2V0RW5kKHRleHRSdW5SYW5nZS0+c3RhcnRDb250YWluZXIoKSwgMCwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gcmVzdWx0UmFuZ2Uu
cmVsZWFzZSgpOwogICAgIH0KQEAgLTI0NjYsMTcgKzI0NTksMTIgQEAgUGFzc1JlZlB0cjxSYW5n
ZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJOb2Rl
KiBzY29wZSwKICAgICAgICAgICAgICAgICBpdC5hZHZhbmNlKCk7CiAgICAgICAgICAgICAgICAg
aWYgKCFpdC5hdEVuZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBpdC5yYW5nZSgpOwotICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQocmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpLCBlYyk7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVu
ZChyYW5nZS0+c3RhcnRDb250YWluZXIoKSwgcmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
ICAgIFBvc2l0aW9uIHJ1blN0YXJ0ID0gdGV4dFJ1blJhbmdlLT5zdGFydFBvc2l0aW9uKCk7CiAg
ICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIHJ1bkVuZCA9IFZpc2libGVQb3NpdGlvbihydW5T
dGFydCkubmV4dCgpLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChy
dW5FbmQuaXNOb3ROdWxsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQo
cnVuRW5kLmNvbnRhaW5lck5vZGUoKSwgcnVuRW5kLmNvbXB1dGVPZmZzZXRJbkNvbnRhaW5lck5v
ZGUoKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bkVuZC5pc05vdE51bGwo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJ1bkVuZC5j
b250YWluZXJOb2RlKCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQpAQCAtMjU5OCwxMSArMjU4Niw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0FsbENv
bGxhcHNpYmxlV2hpdGVzcGFjZShjb25zdCBTdHJpbmcmIHN0cmluZykKIAogc3RhdGljIFBhc3NS
ZWZQdHI8UmFuZ2U+IGNvbGxhcHNlZFRvQm91bmRhcnkoY29uc3QgUmFuZ2UqIHJhbmdlLCBib29s
IGZvcndhcmQpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmVmUHRyPFJhbmdl
PiByZXN1bHQgPSByYW5nZS0+Y2xvbmVSYW5nZShlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Ci0gICAg
cmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIFJl
ZlB0cjxSYW5nZT4gcmVzdWx0ID0gcmFuZ2UtPmNsb25lUmFuZ2UoQVNTRVJUX05PX0VYQ0VQVElP
Tik7CisgICAgcmVzdWx0LT5jb2xsYXBzZSghZm9yd2FyZCwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9o
dG1sZWRpdGluZy5jcHAKaW5kZXggOTZlZjg2MzM1YTUxNGNmMjc0NzI0NzQ5Y2JmY2UzMTJjZWQ4
MmE3Yy4uMTlmYjNmMjA5NzBhYThhMzIwM2ZmNDUxOGI4YjU4MmIzNGJjMjhhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5jcHAKQEAgLTkzOSw5ICs5MzksNyBAQCBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGNyZWF0ZVRhYlNwYW5FbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgUGFz
c1JlZlB0cjxOb2RlPiBwcgogICAgIGlmICghdGFiVGV4dE5vZGUpCiAgICAgICAgIHRhYlRleHRO
b2RlID0gZG9jdW1lbnQtPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiXHQiKTsKIAotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHNwYW5FbGVtZW50LT5hcHBlbmRDaGlsZCh0YWJUZXh0Tm9k
ZS5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoZWMgPT0gMCk7CisgICAgc3BhbkVsZW1lbnQt
PmFwcGVuZENoaWxkKHRhYlRleHROb2RlLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAKICAgICByZXR1cm4gc3BhbkVsZW1lbnQucmVsZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IDAzN2U0OGFjOTE5OTg1OTllNWRjNzcxYmQ5Yjgz
NjU3NDdiYjU1Y2QuLjhjMzM1NWFkMzEyYTVkYjlmMDRhNWZmNTI0NzdkN2U4NWEzZTFiNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTE1MywxMSArMTUzLDgg
QEAgY29uc3QgU2ltcGxlRm9udERhdGEqIEVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbihib29sJiBo
YXNNdWx0aXBsZUZvbnRzKSBjb25zdAogICAgICAgICBpZiAoc3R5bGUpCiAgICAgICAgICAgICBy
ZXN1bHQgPSBzdHlsZS0+Zm9udCgpLnByaW1hcnlGb250KCk7CiAKLSAgICAgICAgaWYgKG5vZGVU
b1JlbW92ZSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAgICAgICAgIG5v
ZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAg
ICB9CisgICAgICAgIGlmIChub2RlVG9SZW1vdmUpCisgICAgICAgICAgICBub2RlVG9SZW1vdmUt
PnJlbW92ZShBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KQEAgLTI0MiwxMSArMjM5LDggQEAgTlNEaWN0aW9uYXJ5KiBFZGl0b3I6OmZvbnRBdHRy
aWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQoKSBjb25zdAogICAgIGlmIChkZWNvcmF0aW9uICYgVU5E
RVJMSU5FKQogICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aElu
dDpOU1VuZGVybGluZVN0eWxlU2luZ2xlXSBmb3JLZXk6TlNVbmRlcmxpbmVTdHlsZUF0dHJpYnV0
ZU5hbWVdOwogCi0gICAgaWYgKG5vZGVUb1JlbW92ZSkgewotICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoZWMpOwotICAgICAgICBBU1NF
UlQoZWMgPT0gMCk7Ci0gICAgfQorICAgIGlmIChub2RlVG9SZW1vdmUpCisgICAgICAgIG5vZGVU
b1JlbW92ZS0+cmVtb3ZlKEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCAxMmZiY2RhYjlmMzU3NzYxMGQy
NjdmZTRkYTcyMjkxOTNhZjkyY2RmLi5mMjBjNWZiNGQ5YmI4YzQ1MjNjNGVkMGUyZThmNThmZmJl
MTQyOGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC01NjQsMTMgKzU2NCwxMCBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiog
bm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogICAgIGlmIChkZWxldGVCdXR0b24pCiAgICAgICAg
IGRlbGV0ZUJ1dHRvbi0+ZGlzYWJsZSgpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVkUmFuZ2UtPmNvbGxhcHNlZChlYyk7Ci0gICAgQVNT
RVJUKCFlYyk7CisgICAgYm9vbCBjb2xsYXBzZWQgPSB1cGRhdGVkUmFuZ2UtPmNvbGxhcHNlZChB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBpZiAoY29sbGFwc2VkKQogICAgICAgICByZXR1cm4g
IiI7Ci0gICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFuZ2UtPmNvbW1vbkFuY2Vz
dG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBOb2RlKiBjb21tb25BbmNl
c3RvciA9IHVwZGF0ZWRSYW5nZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAgICAgaWYgKCFjb21tb25BbmNlc3RvcikKICAgICAgICAgcmV0dXJuICIiOwog
CkBAIC01OTgsMTQgKzU5NSwxMSBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiBy
YW5nZSwgVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogICAgICAgICBh
Y2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKICAgICAg
ICAgc3RhcnROb2RlID0gdmlzaWJsZVN0YXJ0Lm5leHQoKS5kZWVwRXF1aXZhbGVudCgpLmRlcHJl
Y2F0ZWROb2RlKCk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlm
IChwYXN0RW5kICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMoc3RhcnROb2RlLCAwLCBw
YXN0RW5kLCAwLCBlYykgPj0gMCkgewotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAg
IGlmIChwYXN0RW5kICYmIFJhbmdlOjpjb21wYXJlQm91bmRhcnlQb2ludHMoc3RhcnROb2RlLCAw
LCBwYXN0RW5kLCAwLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSA+PSAwKSB7CiAgICAgICAgICAgICBp
ZiAoZGVsZXRlQnV0dG9uKQogICAgICAgICAgICAgICAgIGRlbGV0ZUJ1dHRvbi0+ZW5hYmxlKCk7
CiAgICAgICAgICAgICByZXR1cm4gaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nOwogICAgICAgICB9
Ci0gICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIAogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSBh
Y2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcyhzdGFydE5vZGUsIHBhc3RFbmQpOwpAQCAtNjkzLDcg
KzY4Nyw2IEBAIHN0YXRpYyBib29sIGZpbmROb2Rlc1N1cnJvdW5kaW5nQ29udGV4dChEb2N1bWVu
dCogZG9jdW1lbnQsIFJlZlB0cjxOb2RlPiYgbm9kZUJlCiAKIHN0YXRpYyB2b2lkIHRyaW1GcmFn
bWVudChEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgTm9kZSogbm9kZUJlZm9yZUNvbnRleHQs
IE5vZGUqIG5vZGVBZnRlckNvbnRleHQpCiB7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgUmVmUHRyPE5vZGU+IG5leHQ7CiAgICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IGZyYWdt
ZW50LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBuZXh0KSB7CiAgICAgICAgIGlmIChub2Rl
QmVmb3JlQ29udGV4dC0+aXNEZXNjZW5kYW50T2Yobm9kZS5nZXQoKSkpIHsKQEAgLTcwMiw3ICs2
OTUsNyBAQCBzdGF0aWMgdm9pZCB0cmltRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21l
bnQsIE5vZGUqIG5vZGVCZWZvcmVDb250ZXh0LCBObwogICAgICAgICB9CiAgICAgICAgIG5leHQg
PSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihub2RlLmdldCgpKTsKICAgICAg
ICAgQVNTRVJUKCFub2RlLT5jb250YWlucyhub2RlQWZ0ZXJDb250ZXh0KSk7Ci0gICAgICAgIG5v
ZGUtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgZWMpOworICAgICAgICBu
b2RlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgICAgICBpZiAobm9kZUJlZm9yZUNvbnRleHQgPT0gbm9kZSkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTcxMCw4ICs3MDMsNyBAQCBzdGF0aWMgdm9pZCB0cmltRnJh
Z21lbnQoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIE5vZGUqIG5vZGVCZWZvcmVDb250ZXh0
LCBObwogICAgIEFTU0VSVChub2RlQWZ0ZXJDb250ZXh0LT5wYXJlbnROb2RlKCkpOwogICAgIGZv
ciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBub2RlQWZ0ZXJDb250ZXh0OyBub2RlOyBub2RlID0gbmV4
dCkgewogICAgICAgICBuZXh0ID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
bm9kZS5nZXQoKSk7Ci0gICAgICAgIG5vZGUtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobm9k
ZS5nZXQoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbm9kZS0+cGFyZW50
Tm9kZSgpLT5yZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICB9CiB9CiAKQEAgLTc0MSwxOSArNzMzLDE2IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQoRG9jdW1lbnQqIGRvY3VtCiAg
ICAgICAgIHBvc2l0aW9uQWZ0ZXJOb2RlKG5vZGVCZWZvcmVDb250ZXh0LmdldCgpKS5wYXJlbnRB
bmNob3JlZEVxdWl2YWxlbnQoKSwKICAgICAgICAgcG9zaXRpb25CZWZvcmVOb2RlKG5vZGVBZnRl
ckNvbnRleHQuZ2V0KCkpLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKIAotICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIE5vZGUqIGNvbW1vbkFuY2VzdG9yID0gcmFuZ2UtPmNvbW1v
bkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBOb2RlKiBjb21t
b25BbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5jZXN0b3IgPSBhbmNlc3RvclRvUmV0
YWluU3RydWN0dXJlQW5kQXBwZWFyYW5jZVdpdGhOb1JlbmRlcmVyKGNvbW1vbkFuY2VzdG9yKTsK
IAogICAgIC8vIFdoZW4gdGhlcmUncyBhIHNwZWNpYWwgY29tbW9uIGFuY2VzdG9yIG91dHNpZGUg
b2YgdGhlIGZyYWdtZW50LCB3ZSBtdXN0IGluY2x1ZGUgaXQgYXMgd2VsbCB0bwogICAgIC8vIHBy
ZXNlcnZlIHRoZSBzdHJ1Y3R1cmUgYW5kIGFwcGVhcmFuY2Ugb2YgdGhlIGZyYWdtZW50LiBGb3Ig
ZXhhbXBsZSwgaWYgdGhlIGZyYWdtZW50IGNvbnRhaW5zCiAgICAgLy8gVEQsIHdlIG5lZWQgdG8g
aW5jbHVkZSB0aGUgZW5jbG9zaW5nIFRBQkxFIHRhZyBhcyB3ZWxsLgogICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVu
dCk7Ci0gICAgaWYgKHNwZWNpYWxDb21tb25BbmNlc3RvcikgewotICAgICAgICBmcmFnbWVudC0+
YXBwZW5kQ2hpbGQoc3BlY2lhbENvbW1vbkFuY2VzdG9yLCBlYyk7Ci0gICAgICAgIEFTU0VSVCgh
ZWMpOwotICAgIH0gZWxzZQorICAgIGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3IpCisgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChzcGVjaWFsQ29tbW9uQW5jZXN0b3IsIEFTU0VSVF9OT19F
WENFUFRJT04pOworICAgIGVsc2UKICAgICAgICAgZnJhZ21lbnQtPnRha2VBbGxDaGlsZHJlbkZy
b20oc3RhdGljX2Nhc3Q8Q29udGFpbmVyTm9kZSo+KGNvbW1vbkFuY2VzdG9yKSk7CiAKICAgICB0
cmltRnJhZ21lbnQoZnJhZ21lbnQuZ2V0KCksIG5vZGVCZWZvcmVDb250ZXh0LmdldCgpLCBub2Rl
QWZ0ZXJDb250ZXh0LmdldCgpKTsKQEAgLTc4MSwxMCArNzcwLDggQEAgc3RhdGljIHZvaWQgZmls
bENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdyYXBoLCBjb25zdCBTdHJp
bmcmIHN0cmkKIHsKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwYXJhZ3JhcGgtPmRvY3VtZW50
KCk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHko
KSkgewotICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZUJsb2NrUGxhY2Vob2xk
ZXJFbGVtZW50KGRvY3VtZW50KSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAg
cGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChkb2N1
bWVudCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC04MDEsMjQgKzc4OCwyMCBAQCBzdGF0aWMgdm9pZCBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhD
b250YWluZXJOb2RlKiBwYXJhZ3JhcGgsIGNvbnN0IFN0cmluZyYgc3RyaQogICAgICAgICAvLyBh
cHBlbmQgdGhlIG5vbi10YWIgdGV4dHVhbCBwYXJ0CiAgICAgICAgIGlmICghcy5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIGlmICghdGFiVGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAg
ICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0
YWJUZXh0KSwgZWMpOwotICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAg
ICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQoY3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQs
IHRhYlRleHQpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgICAgICAgICB0YWJUZXh0
ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJlZlB0cjxOb2Rl
PiB0ZXh0Tm9kZSA9IGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJpbmdXaXRoUmViYWxhbmNl
ZFdoaXRlc3BhY2UocywgZmlyc3QsIGkgKyAxID09IG51bUVudHJpZXMpKTsKLSAgICAgICAgICAg
IHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQodGV4dE5vZGUucmVsZWFzZSgpLCBlYyk7Ci0gICAgICAg
ICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQodGV4
dE5vZGUucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogCiAgICAg
ICAgIC8vIHRoZXJlIGlzIGEgdGFiIGFmdGVyIGV2ZXJ5IGVudHJ5LCBleGNlcHQgdGhlIGxhc3Qg
ZW50cnkKICAgICAgICAgLy8gKGlmIHRoZSBsYXN0IGNoYXJhY3RlciBpcyBhIHRhYiwgdGhlIGxp
c3QgZ2V0cyBhbiBleHRyYSBlbXB0eSBlbnRyeSkKICAgICAgICAgaWYgKGkgKyAxICE9IG51bUVu
dHJpZXMpCiAgICAgICAgICAgICB0YWJUZXh0LmFwcGVuZCgnXHQnKTsKLSAgICAgICAgZWxzZSBp
ZiAoIXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENo
aWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgZWMpOwotICAgICAg
ICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIGVsc2UgaWYg
KCF0YWJUZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hpbGQo
Y3JlYXRlVGFiU3BhbkVsZW1lbnQoZG9jdW1lbnQsIHRhYlRleHQpLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKwogICAgICAgICBmaXJzdCA9IGZhbHNlOwogICAgIH0KIH0KQEAgLTg1NiwxNiArODM5
LDEzIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4
dChSYW5nZSogY29udGV4dCwgY29uc3QgU3RyaW5nCiAgICAgc3RyaW5nLnJlcGxhY2UoIlxyXG4i
LCAiXG4iKTsKICAgICBzdHJpbmcucmVwbGFjZSgnXHInLCAnXG4nKTsKIAotICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdHlsZU5vZGUtPnJl
bmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5zdHlsZSgpLT5wcmVzZXJ2
ZU5ld2xpbmUoKSkgewotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNy
ZWF0ZVRleHROb2RlKHN0cmluZyksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAg
IGZyYWdtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUoc3RyaW5nKSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIGlmIChzdHJpbmcuZW5kc1dpdGgoJ1xuJykp
IHsKICAgICAgICAgICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gY3JlYXRlQnJlYWtFbGVt
ZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShjbGFzc0F0
dHIsIEFwcGxlSW50ZXJjaGFuZ2VOZXdsaW5lKTsgICAgICAgICAgICAKLSAgICAgICAgICAgIGZy
YWdtZW50LT5hcHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAgICAg
QVNTRVJUKCFlYyk7CisgICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5y
ZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biBmcmFnbWVudC5yZWxlYXNlKCk7CiAgICAgfQpAQCAtOTA3LDggKzg4Nyw3IEBAIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChSYW5nZSogY29udGV4
dCwgY29uc3QgU3RyaW5nCiAgICAgICAgICAgICAgICAgZWxlbWVudCA9IGNyZWF0ZURlZmF1bHRQ
YXJhZ3JhcGhFbGVtZW50KGRvY3VtZW50KTsKICAgICAgICAgICAgIGZpbGxDb250YWluZXJGcm9t
U3RyaW5nKGVsZW1lbnQuZ2V0KCksIHMpOwogICAgICAgICB9Ci0gICAgICAgIGZyYWdtZW50LT5h
cHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsK
KyAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKICAgICB9CiAgICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKIH0K
QEAgLTkyNCwxNCArOTAzLDExIEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
RnJhZ21lbnRGcm9tTm9kZXMoRG9jdW1lbnQgKmRvY3VtZW50LCBjb25zdCBWCiAKICAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBkb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRG
cmFnbWVudCgpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgc2l6ZV90IHNpemUg
PSBub2Rlcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
ICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBo
RWxlbWVudChkb2N1bWVudCk7Ci0gICAgICAgIGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ld
LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hp
bGQoZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAg
IGVsZW1lbnQtPmFwcGVuZENoaWxkKG5vZGVzW2ldLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAg
ICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB9CiAKICAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IDQ5MDYzYjM0OGNlMmZiNzY4ZTA5YjQ2
NDVhMGRmNjBmNmE0NDUzMmYuLjA3ZmExYmJhZjE3Mjc4YzNkZTkxNjE4YjQwNmExODJmMGY1NDli
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0xMjYsMTEgKzEy
Niw4IEBAIHZvaWQgQ29sb3JJbnB1dFR5cGU6OmNyZWF0ZVNoYWRvd1N1YnRyZWUoKQogICAgIHdy
YXBwZXJFbGVtZW50LT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWNvbG9yLXN3YXRj
aC13cmFwcGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIFJl
ZlB0cjxIVE1MRGl2RWxlbWVudD4gY29sb3JTd2F0Y2ggPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRl
KGRvY3VtZW50KTsKICAgICBjb2xvclN3YXRjaC0+c2V0UHNldWRvKEF0b21pY1N0cmluZygiLXdl
YmtpdC1jb2xvci1zd2F0Y2giLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgd3JhcHBlckVsZW1lbnQtPmFwcGVuZENo
aWxkKGNvbG9yU3dhdGNoLnJlbGVhc2UoKSwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIGVs
ZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5hcHBlbmRDaGlsZCh3cmFwcGVyRWxlbWVu
dC5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICB3cmFwcGVyRWxlbWVudC0+
YXBwZW5kQ2hpbGQoY29sb3JTd2F0Y2gucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
KyAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQod3JhcHBl
ckVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAKICAgICB1cGRh
dGVDb2xvclN3YXRjaCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uc0Nv
bGxlY3Rpb24uY3BwCmluZGV4IGQ3YzI2N2JhMTdiNzk3MGQ2ZmEyYzQ3YTA3ZjQzMTc1YjUyZThi
OGIuLmYyOTQyYTI4M2I1NDNkM2U5OGNjMDg4N2VmNmY0ZGUxNTgxMTM2OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKQEAgLTY1LDcgKzY1LDcg
QEAgdm9pZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZChQYXNzUmVmUHRyPEhUTUxPcHRpb25F
bGVtZW50PiBlbGVtZW50LCBpbnQgaW5kZXgKICAgICBlbHNlCiAgICAgICAgIHNlbGVjdC0+YWRk
KG5ld09wdGlvbiwgc3RhdGljX2Nhc3Q8SFRNTE9wdGlvbkVsZW1lbnQqPihpdGVtKGluZGV4KSks
IGVjKTsKIAotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQoIWVjKTsKIH0KIAogdm9p
ZCBIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnJlbW92ZShpbnQgaW5kZXgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCA3NjE4YTMzZjEyMjg0ZjgwMDg2
ZDI3ZTM1MTA0ZTE4MDIwN2NlMGUzLi5iZmZmNGJmNjhhYTIzYmVkZGIyZmQwZWUwZjEwNzYzNTU1
OGFiNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
QEAgLTUzOSwxMiArNTM5LDEwIEBAIGJvb2wgSFRNTFRleHRBcmVhRWxlbWVudDo6bWF0Y2hlc1Jl
YWRXcml0ZVBzZXVkb0NsYXNzKCkgY29uc3QKIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1
cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAg
IFN0cmluZyBwbGFjZWhvbGRlclRleHQgPSBzdHJpcHBlZFBsYWNlaG9sZGVyKCk7CiAgICAgaWYg
KHBsYWNlaG9sZGVyVGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKG1fcGxhY2Vob2xkZXIp
IHsKLSAgICAgICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+cmVtb3ZlQ2hpbGQobV9wbGFj
ZWhvbGRlciwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICB1c2Vy
QWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIsIEFTU0VSVF9OT19F
WENFUFRJT04pOwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlciA9IDA7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuOwpAQCAtNTUzLDExICs1NTEsOSBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVu
dD4gcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwogICAg
ICAgICBtX3BsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXIuZ2V0KCk7CiAgICAgICAgIG1fcGxhY2Vo
b2xkZXItPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIi
LCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAgICAgIHVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1l
bnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAg
dXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhvbGRlciwgaW5uZXJU
ZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9
Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNlaG9sZGVyVGV4dCwgZWMpOwot
ICAgIEFTU0VSVCghZWMpOworICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhv
bGRlclRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGZpeFBsYWNlaG9sZGVyUmVuZGVy
ZXIobV9wbGFjZWhvbGRlciwgaW5uZXJUZXh0RWxlbWVudCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA2MmY0
YTE2MmZjZTMxYzk4NWEzMzQ1Nzk5MDE1ODU4ZjNjMTAwMGExLi45NzM5NTIzNGFhMzBlOTJmOGEy
YWMyMjcxMWY5Y2ZjMTVmNDM3OWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMzUwLDEyICszNTAsOSBAQCBpbnQgSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgcAogICAgIFBvc2l0aW9uIGluZGV4UG9zaXRpb24gPSBwb3MuZGVlcEVx
dWl2YWxlbnQoKS5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKTsKICAgICBpZiAoZW5jbG9zaW5n
VGV4dEZvcm1Db250cm9sKGluZGV4UG9zaXRpb24pICE9IHRoaXMpCiAgICAgICAgIHJldHVybiAw
OwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBS
YW5nZTo6Y3JlYXRlKGluZGV4UG9zaXRpb24uZG9jdW1lbnQoKSk7Ci0gICAgcmFuZ2UtPnNldFN0
YXJ0KGlubmVyVGV4dEVsZW1lbnQoKSwgMCwgZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHJh
bmdlLT5zZXRFbmQoaW5kZXhQb3NpdGlvbi5jb250YWluZXJOb2RlKCksIGluZGV4UG9zaXRpb24u
b2Zmc2V0SW5Db250YWluZXJOb2RlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICByYW5n
ZS0+c2V0U3RhcnQoaW5uZXJUZXh0RWxlbWVudCgpLCAwLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
KyAgICByYW5nZS0+c2V0RW5kKGluZGV4UG9zaXRpb24uY29udGFpbmVyTm9kZSgpLCBpbmRleFBv
c2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAg
ICByZXR1cm4gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSk7CiB9CiAKQEAg
LTUzOSwxNCArNTM2LDEwIEBAIHZvaWQgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldElu
bmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiAgICAgICAgIGlmICh0ZXh0SXNDaGFu
Z2VkICYmIGRvY3VtZW50KCkgJiYgcmVuZGVyZXIoKSAmJiBBWE9iamVjdENhY2hlOjphY2Nlc3Np
YmlsaXR5RW5hYmxlZCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgp
LT5wb3N0Tm90aWZpY2F0aW9uKHRoaXMsIEFYT2JqZWN0Q2FjaGU6OkFYVmFsdWVDaGFuZ2VkLCBm
YWxzZSk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGlubmVyVGV4
dEVsZW1lbnQoKS0+c2V0SW5uZXJUZXh0KHZhbHVlLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMp
OworICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVyVGV4dCh2YWx1ZSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CiAKLSAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZh
bHVlLmVuZHNXaXRoKCdccicpKSB7Ci0gICAgICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPmFw
cGVuZENoaWxkKEhUTUxCUkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKSwgZWMpOwotICAgICAg
ICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRo
KCdcbicpIHx8IHZhbHVlLmVuZHNXaXRoKCdccicpKQorICAgICAgICAgICAgaW5uZXJUZXh0RWxl
bWVudCgpLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIAogICAgIHNldEZvcm1Db250cm9sVmFsdWVNYXRj
aGVzUmVuZGVyZXIodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRG
aWVsZElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0VHlw
ZS5jcHAKaW5kZXggMDJlZjJkNTYyNDYyNDg3ZDM2MzgwMzRhNmQ3NWZmODBhY2YyM2Y3Mi4uNThm
MmFhNGU1YzQ4ZGY4MmE1ZWE4YWJiMTY4MTE2NGI1MWQ2MTgwMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dEZpZWxkSW5wdXRUeXBlLmNwcApAQCAtNDA2LDEyICs0MDYsMTAgQEAgdm9pZCBU
ZXh0RmllbGRJbnB1dFR5cGU6OnVwZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiB7CiAgICAgaWYgKCFz
dXBwb3J0c1BsYWNlaG9sZGVyKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJUZXh0ID0gZWxlbWVudCgpLT5zdHJpcHBl
ZFBsYWNlaG9sZGVyKCk7CiAgICAgaWYgKHBsYWNlaG9sZGVyVGV4dC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgaWYgKG1fcGxhY2Vob2xkZXIpIHsKLSAgICAgICAgICAgIG1fcGxhY2Vob2xkZXItPnBh
cmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQobV9wbGFjZWhvbGRlci5nZXQoKSwgZWMpOwotICAgICAg
ICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgICAgICBtX3BsYWNlaG9sZGVyLT5wYXJlbnROb2Rl
KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgICAgICAgICAgbV9wbGFjZWhvbGRlci5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybjsKQEAgLTQxOSwxMSArNDE3LDkgQEAgdm9pZCBUZXh0RmllbGRJbnB1dFR5cGU6OnVw
ZGF0ZVBsYWNlaG9sZGVyVGV4dCgpCiAgICAgaWYgKCFtX3BsYWNlaG9sZGVyKSB7CiAgICAgICAg
IG1fcGxhY2Vob2xkZXIgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGVsZW1lbnQoKS0+ZG9jdW1l
bnQoKSk7CiAgICAgICAgIG1fcGxhY2Vob2xkZXItPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13
ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRl
cmFsKSk7Ci0gICAgICAgIGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRC
ZWZvcmUobV9wbGFjZWhvbGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci0+bmV4dFNpYmxp
bmcoKSA6IGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgZWMpOwotICAgICAgICBB
U1NFUlQoIWVjKTsKKyAgICAgICAgZWxlbWVudCgpLT51c2VyQWdlbnRTaGFkb3dSb290KCktPmlu
c2VydEJlZm9yZShtX3BsYWNlaG9sZGVyLCBtX2NvbnRhaW5lciA/IG1fY29udGFpbmVyLT5uZXh0
U2libGluZygpIDogaW5uZXJUZXh0RWxlbWVudCgpLT5uZXh0U2libGluZygpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB9Ci0gICAgbV9wbGFjZWhvbGRlci0+c2V0SW5uZXJUZXh0KHBsYWNl
aG9sZGVyVGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIG1fcGxhY2Vob2xkZXItPnNl
dElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGVs
ZW1lbnQoKS0+Zml4UGxhY2Vob2xkZXJSZW5kZXJlcihtX3BsYWNlaG9sZGVyLmdldCgpLCBtX2Nv
bnRhaW5lciA/IG1fY29udGFpbmVyLmdldCgpIDogbV9pbm5lclRleHQuZ2V0KCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2UuY3BwCmluZGV4IGE2MzQzZjkyMTM0
YTBjNzk0ZjQxYWJlMzUzMTkyZDVhZDNhYmJmNGYuLjM5ZDU2MjUwNGEzNDcwYmM0NTU2ZmNiNjUx
NTBiYjI0NmE5MDU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlv
bk1lc3NhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVmFsaWRhdGlvbk1lc3NhZ2Uu
Y3BwCkBAIC0xODMsOSArMTgzLDcgQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJi
bGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgLy8gTmVlZCB0byBmb3JjZSBw
b3NpdGlvbjphYnNvbHV0ZSBiZWNhdXNlIFJlbmRlck1lbnVMaXN0IGRvZXNuJ3QgYXNzdW1lIGl0
CiAgICAgLy8gY29udGFpbnMgbm9uLWFic29sdXRlIG9yIG5vbi1maXhlZCByZW5kZXJlcnMgYXMg
Y2hpbGRyZW4uCiAgICAgbV9idWJibGUtPnNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVy
dHlQb3NpdGlvbiwgQ1NTVmFsdWVBYnNvbHV0ZSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgc2hhZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9idWJibGUuZ2V0KCksIGVjKTsKLSAgICBB
U1NFUlQoIWVjKTsKKyAgICBzaGFkb3dSb290LT5hcHBlbmRDaGlsZChtX2J1YmJsZS5nZXQoKSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT51cGRhdGVM
YXlvdXQoKTsKICAgICBhZGp1c3RCdWJibGVQb3NpdGlvbihtX2VsZW1lbnQtPmJvdW5kaW5nQm94
KCksIG1fYnViYmxlLmdldCgpKTsKIApAQCAtMTkzLDEwICsxOTEsOCBAQCB2b2lkIFZhbGlkYXRp
b25NZXNzYWdlOjpidWlsZEJ1YmJsZVRyZWUoVGltZXI8VmFsaWRhdGlvbk1lc3NhZ2U+KikKICAg
ICBjbGlwcGVyLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LXZhbGlkYXRpb24tYnVi
YmxlLWFycm93LWNsaXBwZXIiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7
CiAgICAgUmVmUHRyPEhUTUxEaXZFbGVtZW50PiBidWJibGVBcnJvdyA9IEhUTUxEaXZFbGVtZW50
OjpjcmVhdGUoZG9jKTsKICAgICBidWJibGVBcnJvdy0+c2V0UHNldWRvKEF0b21pY1N0cmluZygi
LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKLSAgICBjbGlwcGVyLT5hcHBlbmRDaGlsZChidWJibGVBcnJvdy5yZWxl
YXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBtX2J1YmJsZS0+YXBwZW5kQ2hpbGQo
Y2xpcHBlci5yZWxlYXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBjbGlwcGVyLT5h
cHBlbmRDaGlsZChidWJibGVBcnJvdy5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwor
ICAgIG1fYnViYmxlLT5hcHBlbmRDaGlsZChjbGlwcGVyLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAKICAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IG1lc3NhZ2UgPSBIVE1MRGl2RWxl
bWVudDo6Y3JlYXRlKGRvYyk7CiAgICAgbWVzc2FnZS0+c2V0UHNldWRvKEF0b21pY1N0cmluZygi
LXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1tZXNzYWdlIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1
Y3RGcm9tTGl0ZXJhbCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKaW5kZXggOThkODAxYjk4NWRjZDU4YWQ0NmY3
ZTRlYWJmNzkzODAxNWU1ZmQ4OC4uYTA0MzEzNDdmMTQ5NTdiY2IwYzA3ZWE3ODUxY2FlN2U5Yjgx
ZjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9s
RWxlbWVudFR5cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xFbGVtZW50VHlwZXMuY3BwCkBAIC0yOTMsMTEgKzI5Myw4IEBAIHZvaWQgTWVkaWFDb250
cm9sVm9sdW1lU2xpZGVyRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGZsb2F0IHZvbHVtZSA9IG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQodmFsdWUoKS50b0RvdWJsZSgpKTsKLSAgICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJv
bGxlcigpLT52b2x1bWUoKSkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAg
ICAgbWVkaWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKLSAgICAgICAgQVNT
RVJUKCFlYyk7Ci0gICAgfQorICAgIGlmICh2b2x1bWUgIT0gbWVkaWFDb250cm9sbGVyKCktPnZv
bHVtZSgpKQorICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Vm9sdW1lKHZvbHVtZSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgaWYgKG1fY2xlYXJNdXRlZE9uVXNlckludGVyYWN0aW9u
KQogICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0TXV0ZWQoZmFsc2UpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAppbmRleCBlNjcz
YTAwM2IxNzdkNTM1OTMyM2E1ODA3MTEyYjZmMWQ1Y2RmOWY3Li45NDEzNTI3NjViY2VmZmE0MTY1
NTllZmJiOWFhODQ4Y2JmYjQ0YzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUGFnZUFnZW50LmNwcApAQCAtNTQ2LDExICs1NDYsMTAgQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8VHlwZUJ1aWxkZXI6
OkFycmF5PFR5cGUKICAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nv
b2tpZXMoZG9jdW1lbnQsIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCAqaXQpLCBkb2NDb29raWVzTGlz
dCk7CiAgICAgICAgICAgICBpZiAoIXJhd0Nvb2tpZXNJbXBsZW1lbnRlZCkgewogICAgICAgICAg
ICAgICAgIC8vIEZJWE1FOiBXZSBuZWVkIGR1cGxpY2F0aW9uIGNoZWNraW5nIGZvciB0aGUgU3Ry
aW5nIHJlcHJlc2VudGF0aW9uIG9mIGNvb2tpZXMuCi0gICAgICAgICAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QuYXBwZW5kKGRv
Y3VtZW50LT5jb29raWUoZWMpKTsKKyAgICAgICAgICAgICAgICAvLwogICAgICAgICAgICAgICAg
IC8vIEV4Y2VwdGlvbnMgYXJlIHRocm93biBieSBjb29raWUoKSBpbiBzYW5kYm94ZWQgZnJhbWVz
LiBUaGF0IHdvbid0IGhhcHBlbiBoZXJlCiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSAiZG9j
dW1lbnQiIGlzIHRoZSBkb2N1bWVudCBvZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUgcGFnZS4KLSAg
ICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdDb29raWVz
TGlzdC5hcHBlbmQoZG9jdW1lbnQtPmNvb2tpZShBU1NFUlRfTk9fRVhDRVBUSU9OKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGludCBjb29raWVzU2l6ZSA9IGRvY0Nv
b2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
b2tpZXNTaXplOyBpKyspIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcAppbmRleCA2M2U2MzllZDczZGExN2Y2NTU1ZDBkZjZhNmNjNmNhNTRl
NjhmZmFkLi5kYWFjYjk3MDg0ZTcxMWE2ZjU4NjFhYWJiMWQyYjU0ZDAyYjM4MTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC04
NjIsOCArODYyLDcgQEAgQ1NTU3R5bGVSdWxlKiBJbnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxl
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3IsIEV4Y2VwdGlvbkNvZGUKICAgICBpZiAoIXN0eWxlUnVs
ZSkgewogICAgICAgICAvLyBXaGF0IHdlIGp1c3QgYWRkZWQgaGFzIHRvIGJlIGEgQ1NTU3R5bGVS
dWxlIC0gd2UgY2Fubm90IGhhbmRsZSBvdGhlciB0eXBlcyBvZiBydWxlcyB5ZXQuCiAgICAgICAg
IC8vIElmIGl0IGlzIG5vdCBhIHN0eWxlIHJ1bGUsIHByZXRlbmQgd2UgbmV2ZXIgdG91Y2hlZCB0
aGUgc3R5bGVzaGVldC4KLSAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+ZGVsZXRlUnVsZShsYXN0
UnVsZUluZGV4LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBtX3BhZ2VTdHls
ZVNoZWV0LT5kZWxldGVSdWxlKGxhc3RSdWxlSW5kZXgsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwCmluZGV4IDUxM2YwNjZmZGU3NDI4OGQ0NWQxODhiMTIwMWM4NWE3NGJlODFhZGQuLjE4
ZmNlNjVjZjYwOTUwZjk2NDQ2NzMwZjk3NDM1ZjVmNTEzMWRlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApA
QCAtMzA4LDE0ICszMDgsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZGlzcGF0Y2hE
T01FdmVudChFdmVudElEIGlkLCBpbnQgdG90YWwsIGludCBkb25lKQogewogICAgIGlmIChtX2Rv
bUFwcGxpY2F0aW9uQ2FjaGUpIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCk7Ci0gICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50OwogICAgICAgICBp
ZiAoaWQgPT0gUFJPR1JFU1NfRVZFTlQpCiAgICAgICAgICAgICBldmVudCA9IFByb2dyZXNzRXZl
bnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGRvbmUsIHRvdGFsKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNl
KTsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUt
PmRpc3BhdGNoRXZlbnQoZXZlbnQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IGUyZDc3MWExNWIyMjM4NGJlZjZi
ZDQ2ODJhYWM0ZjZhOTBmNDM1MDkuLjJkMzE5MmI2YjM5ODIzYzg5MjMxOTA1OWZlNjA4MDUzMTkx
OTM0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTQzOCwxMiArNDM4
LDkgQEAgdm9pZCBET01TZWxlY3Rpb246OmRlbGV0ZUZyb21Eb2N1bWVudCgpCiAgICAgaWYgKCFz
ZWxlY3RlZFJhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBzZWxlY3RlZFJhbmdlLT5kZWxldGVDb250ZW50cyhlYyk7Ci0gICAgQVNTRVJUKCFl
Yyk7CisgICAgc2VsZWN0ZWRSYW5nZS0+ZGVsZXRlQ29udGVudHMoQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAKLSAgICBzZXRCYXNlQW5kRXh0ZW50KHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVy
KGVjKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRD
b250YWluZXIoKSwgc2VsZWN0ZWRSYW5nZS0+c3RhcnRPZmZzZXQoKSwgZWMpOwotICAgIEFTU0VS
VCghZWMpOworICAgIHNldEJhc2VBbmRFeHRlbnQoc2VsZWN0ZWRSYW5nZS0+c3RhcnRDb250YWlu
ZXIoQVNTRVJUX05PX0VYQ0VQVElPTiksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIHNl
bGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0T2Zmc2V0
KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiBib29sIERPTVNlbGVjdGlvbjo6Y29udGFp
bnNOb2RlKGNvbnN0IE5vZGUqIG4sIGJvb2wgYWxsb3dQYXJ0aWFsKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAxMDMyMjgzN2EyMDMyMTYwMjVlMzE5YjRi
ODMzNTIwOTY0NDIwYmQzLi5lMTcxNjUzNDU5NDliYjhjODEyNThjOTkwMTY4YmY2MjI1ZDc3ZTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNzAxLDkgKzcwMSw3
IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcoRnJhbWUqIHNvdXJj
ZSwgQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEVsCiB7CiAgICAgaWYgKG5vZGUtPmlzQ29udGVudFJp
Y2hseUVkaXRhYmxlKCkpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IHNvdXJjZS0+
ZG9jdW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgICAgIHJhbmdlLT5zZWxlY3ROb2RlKG5vZGUsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
Yyk7CisgICAgICAgIHJhbmdlLT5zZWxlY3ROb2RlKG5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgICAgICBzb3VyY2UtPnNlbGVjdGlvbigpLT5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSkpOwogICAgIH0KICAgICBjbGlwYm9hcmQtPmRl
Y2xhcmVBbmRXcml0ZURyYWdJbWFnZShub2RlLCAhbGlua1VSTC5pc0VtcHR5KCkgPyBsaW5rVVJM
IDogaW1hZ2VVUkwsIGxhYmVsLCBzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKaW5kZXggZjkzYWRkYjQ5MmVlNTQzYjQyNDExM2YyOTNl
ZDkwZWY5ZGRmYTJjNC4uYzdjNTc2ODk2MGJmODRhYjQzY2Q1MjFlYzA2N2Y0OTFkNWYwNWQwNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwCkBA
IC0xMjksMTAgKzEyOSw4IEBAIFZpc2libGVQb3NpdGlvbiBSZW5kZXJUZXh0Q29udHJvbDo6dmlz
aWJsZVBvc2l0aW9uRm9ySW5kZXgoaW50IGluZGV4KSBjb25zdAogewogICAgIGlmIChpbmRleCA8
PSAwKQogICAgICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKGZpcnN0UG9zaXRpb25Jbk5vZGUo
aW5uZXJUZXh0RWxlbWVudCgpKSwgRE9XTlNUUkVBTSk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQoKSk7
Ci0gICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhpbm5lclRleHRFbGVtZW50KCksIGVjKTsK
LSAgICBBU1NFUlQoIWVjKTsKKyAgICByYW5nZS0+c2VsZWN0Tm9kZUNvbnRlbnRzKGlubmVyVGV4
dEVsZW1lbnQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgQ2hhcmFjdGVySXRlcmF0b3Ig
aXQocmFuZ2UuZ2V0KCkpOwogICAgIGl0LmFkdmFuY2UoaW5kZXggLSAxKTsKICAgICByZXR1cm4g
VmlzaWJsZVBvc2l0aW9uKGl0LnJhbmdlKCktPmVuZFBvc2l0aW9uKCksIFVQU1RSRUFNKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TVkdSZW5kZXJTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKaW5kZXgg
YmUwYTQ3OWJjZjE4YTNlZmYxNjdlYTMzOWUyYzRlYTVhNGMwNTQwNi4uZWU2OWRiNmVmZmE5OGRk
MDZjZjZiNmJhYjI0NTg1ZmZjM2I3NTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1NWR1JlbmRlclN0eWxlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZiBFTkFCTEUo
U1ZHKQogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc1R5
cGVzLmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29uc3RhbnRz
LmgiCkBAIC05NywzNiArOTgsMjggQEAgcHVibGljOgogICAgIHN0YXRpYyBTVkdMZW5ndGggaW5p
dGlhbEJhc2VsaW5lU2hpZnRWYWx1ZSgpCiAgICAgewogICAgICAgICBTVkdMZW5ndGggbGVuZ3Ro
OwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVl
U3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKKyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51
bWJlciwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybiBsZW5ndGg7CiAg
ICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFsS2VybmluZygpCiAgICAgewogICAg
ICAgICBTVkdMZW5ndGggbGVuZ3RoOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwg
ZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
ICAgIHJldHVybiBsZW5ndGg7CiAgICAgfQogCiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFs
U3Ryb2tlRGFzaE9mZnNldCgpCiAgICAgewogICAgICAgICBTVkdMZW5ndGggbGVuZ3RoOwotICAg
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lm
aWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgMCwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsK
KyAgICAgICAgbGVuZ3RoLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwg
MCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIHJldHVybiBsZW5ndGg7CiAgICAgfQog
CiAgICAgc3RhdGljIFNWR0xlbmd0aCBpbml0aWFsU3Ryb2tlV2lkdGgoKQogICAgIHsKICAgICAg
ICAgU1ZHTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAg
ICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDEsIGVj
KTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGxlbmd0aC5uZXdWYWx1ZVNwZWNpZmll
ZFVuaXRzKExlbmd0aFR5cGVOdW1iZXIsIDEsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAg
ICByZXR1cm4gbGVuZ3RoOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTGVuZ3RoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExl
bmd0aC5jcHAKaW5kZXggN2MyNmViZDM1ZTMzNzczNmU4YTY5NDJjYzdjYjc4N2FmMWE5NGY3OS4u
MGFjOGJmMDY1MTZjYTE0NTU5MWQwMDU4Zjc4MTg1NTBlZmZhM2RkOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCkBAIC0zNiw5ICszNiw3IEBAIFNWR0FuaW1hdGVk
TGVuZ3RoQW5pbWF0b3I6OlNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxl
bWVudCogYW5pbWF0CiBzdGF0aWMgaW5saW5lIFNWR0xlbmd0aCYgc2hhcmVkU1ZHTGVuZ3RoKFNW
R0xlbmd0aE1vZGUgbW9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUFzU3RyaW5nKQogewogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoU1ZHTGVuZ3RoLCBzaGFyZWRMZW5ndGgsICgpKTsKLSAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKLSAgICBzaGFyZWRMZW5ndGguc2V0VmFsdWVBc1N0cmluZyh2YWx1
ZUFzU3RyaW5nLCBtb2RlLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2hhcmVkTGVuZ3Ro
LnNldFZhbHVlQXNTdHJpbmcodmFsdWVBc1N0cmluZywgbW9kZSwgQVNTRVJUX05PX0VYQ0VQVElP
Tik7CiAgICAgcmV0dXJuIHNoYXJlZExlbmd0aDsKIH0KIApAQCAtODEsOSArNzksNyBAQCB2b2lk
IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmFkZEFuaW1hdGVkVHlwZXMoU1ZHQW5pbWF0ZWRU
eXBlKiBmcm9tLCBTVkdBbmltYQogICAgIGNvbnN0IFNWR0xlbmd0aCYgZnJvbUxlbmd0aCA9IGZy
b20tPmxlbmd0aCgpOwogICAgIFNWR0xlbmd0aCYgdG9MZW5ndGggPSB0by0+bGVuZ3RoKCk7CiAK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICB0b0xlbmd0aC5zZXRWYWx1ZSh0b0xlbmd0
aC52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCks
IGxlbmd0aENvbnRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICB0b0xlbmd0aC5zZXRW
YWx1ZSh0b0xlbmd0aC52YWx1ZShsZW5ndGhDb250ZXh0KSArIGZyb21MZW5ndGgudmFsdWUobGVu
Z3RoQ29udGV4dCksIGxlbmd0aENvbnRleHQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogfQogCiBz
dGF0aWMgU1ZHTGVuZ3RoIHBhcnNlTGVuZ3RoRnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50
KiBhbmltYXRpb25FbGVtZW50LCBjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExMCw5ICsxMDYs
NyBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZQogICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUg
PSBwZXJjZW50YWdlIDwgMC41ID8gZnJvbVNWR0xlbmd0aC51bml0VHlwZSgpIDogdG9TVkdMZW5n
dGgudW5pdFR5cGUoKTsKICAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVBZGRpdGl2ZU51
bWJlcihwZXJjZW50YWdlLCByZXBlYXRDb3VudCwgZnJvbVNWR0xlbmd0aC52YWx1ZShsZW5ndGhD
b250ZXh0KSwgdG9TVkdMZW5ndGgudmFsdWUobGVuZ3RoQ29udGV4dCksIHRvQXRFbmRPZkR1cmF0
aW9uU1ZHTGVuZ3RoLnZhbHVlKGxlbmd0aENvbnRleHQpLCBhbmltYXRlZE51bWJlcik7CiAKLSAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBhbmltYXRlZFNWR0xlbmd0aC5zZXRWYWx1ZShs
ZW5ndGhDb250ZXh0LCBhbmltYXRlZE51bWJlciwgbV9sZW5ndGhNb2RlLCB1bml0VHlwZSwgZWMp
OwotICAgIEFTU0VSVCghZWMpOworICAgIGFuaW1hdGVkU1ZHTGVuZ3RoLnNldFZhbHVlKGxlbmd0
aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKIH0KIAogZmxvYXQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3Ro
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcApp
bmRleCA4MTJiOTBhZjg1NjZkNGNmZjZlMTBmN2Y0MTYwMGEzNGYzODFkZmVhLi5iNmEyM2FjYmEy
YTg4M2JlZDU4YmNhOGM2YjZlM2I1MzQxNDFiMzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcApAQCAtNzgsMTEgKzc4LDggQEAgdm9pZCBTVkdBbmlt
YXRlZExlbmd0aExpc3RBbmltYXRvcjo6YWRkQW5pbWF0ZWRUeXBlcyhTVkdBbmltYXRlZFR5cGUq
IGZyb20sIFNWR0EKICAgICAgICAgcmV0dXJuOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBsZW5n
dGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVuZ3RoTGlzdFNpemU7ICsraSkgewot
ICAgICAgICB0b0xlbmd0aExpc3RbaV0uc2V0VmFsdWUodG9MZW5ndGhMaXN0W2ldLnZhbHVlKGxl
bmd0aENvbnRleHQpICsgZnJvbUxlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCksIGxl
bmd0aENvbnRleHQsIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQorICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBmcm9tTGVuZ3RoTGlzdFNpemU7ICsraSkKKyAgICAgICAgdG9M
ZW5ndGhMaXN0W2ldLnNldFZhbHVlKHRvTGVuZ3RoTGlzdFtpXS52YWx1ZShsZW5ndGhDb250ZXh0
KSArIGZyb21MZW5ndGhMaXN0W2ldLnZhbHVlKGxlbmd0aENvbnRleHQpLCBsZW5ndGhDb250ZXh0
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogc3RhdGljIFNWR0xlbmd0aExpc3QgcGFyc2VM
ZW5ndGhMaXN0RnJvbVN0cmluZyhTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50
LCBjb25zdCBTdHJpbmcmIHN0cmluZykKQEAgLTExNCw3ICsxMTEsNiBAQCB2b2lkIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVucwogICAgIHVuc2lnbmVkIHRvQXRFbmRPZkR1cmF0aW9uTGlzdFNpemUgPSB0b0F0
RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3Quc2l6ZSgpOwogCiAgICAgU1ZHTGVuZ3RoQ29udGV4dCBs
ZW5ndGhDb250ZXh0KG1fY29udGV4dEVsZW1lbnQpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b0xlbmd0aExpc3RTaXplOyArK2kpIHsK
ICAgICAgICAgZmxvYXQgYW5pbWF0ZWROdW1iZXIgPSBhbmltYXRlZExlbmd0aExpc3RbaV0udmFs
dWUobGVuZ3RoQ29udGV4dCk7CiAgICAgICAgIFNWR0xlbmd0aFR5cGUgdW5pdFR5cGUgPSB0b0xl
bmd0aExpc3RbaV0udW5pdFR5cGUoKTsKQEAgLTEyNyw4ICsxMjMsNyBAQCB2b2lkIFNWR0FuaW1h
dGVkTGVuZ3RoTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVucwogICAgICAgICBmbG9hdCBlZmZlY3RpdmVUb0F0RW5kID0gaSA8IHRvQXRFbmRP
ZkR1cmF0aW9uTGlzdFNpemUgPyB0b0F0RW5kT2ZEdXJhdGlvbkxlbmd0aExpc3RbaV0udmFsdWUo
bGVuZ3RoQ29udGV4dCkgOiAwOwogCiAgICAgICAgIG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
ZUFkZGl0aXZlTnVtYmVyKHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBlZmZlY3RpdmVGcm9tLCB0
b0xlbmd0aExpc3RbaV0udmFsdWUobGVuZ3RoQ29udGV4dCksIGVmZmVjdGl2ZVRvQXRFbmQsIGFu
aW1hdGVkTnVtYmVyKTsKLSAgICAgICAgYW5pbWF0ZWRMZW5ndGhMaXN0W2ldLnNldFZhbHVlKGxl
bmd0aENvbnRleHQsIGFuaW1hdGVkTnVtYmVyLCBtX2xlbmd0aE1vZGUsIHVuaXRUeXBlLCBlYyk7
Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBhbmltYXRlZExlbmd0aExpc3RbaV0uc2V0
VmFsdWUobGVuZ3RoQ29udGV4dCwgYW5pbWF0ZWROdW1iZXIsIG1fbGVuZ3RoTW9kZSwgdW5pdFR5
cGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xlbmd0aC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVuZ3Ro
LmNwcAppbmRleCBiZjViZjQyMzYxNTE0Nzc3NDZiZjcwMjI1Nzk0NjNlMWFhMTI1MTY5Li5lNzBk
ODZhZDMzNDIzMzIzYWU4OTVjZDFhM2IyOGI3ZTFlMzkzNThkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGVu
Z3RoLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNTU0hlbHBlci5oIgogI2luY2x1
ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgogI2luY2x1ZGUgIkZsb2F0Q29udmVy
c2lvbi5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0
aWVzLmgiCkBAIC0xMzIsOSArMTMzLDcgQEAgU1ZHTGVuZ3RoOjpTVkdMZW5ndGgoY29uc3QgU1ZH
TGVuZ3RoQ29udGV4dCYgY29udGV4dCwgZmxvYXQgdmFsdWUsIFNWR0xlbmd0aE1vZGUKICAgICA6
IG1fdmFsdWVJblNwZWNpZmllZFVuaXRzKDApCiAgICAgLCBtX3VuaXQoc3RvcmVVbml0KG1vZGUs
IHVuaXRUeXBlKSkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBzZXRWYWx1ZSh2
YWx1ZSwgY29udGV4dCwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNldFZhbHVlKHZhbHVl
LCBjb250ZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIH0KIAogU1ZHTGVuZ3RoOjpTVkdMZW5n
dGgoY29uc3QgU1ZHTGVuZ3RoJiBvdGhlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHAKaW5kZXggMzk0M2ZmZWJkYTIzY2IyMjRhOTQ0YWU4ZDk3OWZlYTYx
ZWU1MDczNS4uY2I4NmYwOGI2OGQyNzM0ODJlZmFjMzk2NTE3YzE4MDNkYjEwNDQ4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKQEAgLTk1LDExICs5
NSw4IEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVGV4dENvbnRlbnRFbGVt
ZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXCiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkTGVu
Z3RoPiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnRleHRMZW5ndGhBbmltYXRlZCgpCiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTVkdMZW5ndGgsIGRlZmF1bHRUZXh0TGVuZ3RoLCAoTGVuZ3Ro
TW9kZU90aGVyKSk7Ci0gICAgaWYgKG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9PSBkZWZhdWx0VGV4
dExlbmd0aCkgewotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbV90ZXh0
TGVuZ3RoLnZhbHVlLm5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMoTGVuZ3RoVHlwZU51bWJlciwgZ2V0
Q29tcHV0ZWRUZXh0TGVuZ3RoKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgfQor
ICAgIGlmIChtX3NwZWNpZmllZFRleHRMZW5ndGggPT0gZGVmYXVsdFRleHRMZW5ndGgpCisgICAg
ICAgIG1fdGV4dExlbmd0aC52YWx1ZS5uZXdWYWx1ZVNwZWNpZmllZFVuaXRzKExlbmd0aFR5cGVO
dW1iZXIsIGdldENvbXB1dGVkVGV4dExlbmd0aCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAog
ICAgIG1fdGV4dExlbmd0aC5zaG91bGRTeW5jaHJvbml6ZSA9IHRydWU7CiAgICAgcmV0dXJuIHN0
YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRMZW5ndGg+KGxvb2t1cE9yQ3JlYXRlVGV4dExl
bmd0aFdyYXBwZXIodGhpcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1h
dGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcAppbmRleCA2NzdiN2UwZDdmNmE0Zjc0MDc3ZDlhZGVkMjExZGNiY2Zl
OGIwNWE5Li5jYjhhNDQ0YmNiZDI5MzVlMjRmN2RlYTc4ZTUyN2M0ZmVhZDg3NzdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMjAy
LDEwICsyMDIsOCBAQCBzdGF0aWMgaW5saW5lIFF1YWxpZmllZE5hbWUgY29uc3RydWN0UXVhbGlm
aWVkTmFtZShjb25zdCBTVkdFbGVtZW50KiBzdmdFbGVtZW50LAogICAgIAogICAgIFN0cmluZyBw
cmVmaXg7CiAgICAgU3RyaW5nIGxvY2FsTmFtZTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoYXR0cmlidXRlTmFtZSwgcHJl
Zml4LCBsb2NhbE5hbWUsIGVjKSkKKyAgICBpZiAoIURvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5h
bWUoYXR0cmlidXRlTmFtZSwgcHJlZml4LCBsb2NhbE5hbWUsIEFTU0VSVF9OT19FWENFUFRJT04p
KQogICAgICAgICByZXR1cm4gYW55UU5hbWUoKTsKLSAgICBBU1NFUlQoIWVjKTsKICAgICAKICAg
ICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gc3ZnRWxlbWVudC0+bG9va3VwTmFtZXNwYWNlVVJJKHBy
ZWZpeCk7ICAgIAogICAgIGlmIChuYW1lc3BhY2VVUkkuaXNFbXB0eSgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187259</attachid>
            <date>2013-02-08 00:51:18 -0800</date>
            <delta_ts>2013-02-08 01:14:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109044-20130208094752.patch</filename>
            <type>text/plain</type>
            <size>44893</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQzYjYwZGFhNmY1OWU0
ODA1NDdiNTg5MTVmNDUwOTQ2NjI3Nzc1YS4uMDlmYTY3Y2VmYjhkY2Y0ZWVkZTUwODhlZDdjYzFm
NzM4OGIzMjFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAxMy0wMi0wOCAgTWlr
ZSBXZXN0ICA8bWt3c3RAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJlcGxhY2UgRXhjZXB0aW9u
Q29kZSBhc3NlcnRpb25zIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTiBtYWNyby4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTA0NAorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFRoZSBwYXR0ZXJuOgorCisgICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgIG1ldGhvZFRoYXRHZW5l
cmF0ZXNFeGNlcHRpb24oZWMpOworICAgICAgICAgICAgQVNTRVJUKCFlYyk7CisKKyAgICAgICAg
aXMgbW9yZSBjbGVhcmx5IGFuZCBzdWNjaW5jdGx5IHdyaXR0ZW4gYXM6CisKKyAgICAgICAgICAg
IG1ldGhvZFRoYXRHZW5lcmF0ZXNFeGNlcHRpb24oQVNTRVJUX05PX0VYQ0VQVElPTik7CisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgb2NjdXJhbmNlcyBvZiB0aGUgZm9ybWVyIHRo
YXQgbmV2ZXIgdG91Y2ggJ2VjJworICAgICAgICBhZ2FpbiB3aXRoIHRoZSBsYXR0ZXIuIEl0IGRv
ZXMgdGhlIHNhbWUgZm9yICdBU1NFUlQoZWMgPT0gMCk7JyAoYW5kLCBhcworICAgICAgICBhIGRy
aXZlLWJ5LCByZXBsYWNlcyAnQVNTRVJUKGVjID09IDApJyB3aXRoICdBU1NFUlQoIWVjKScgaW4g
cGxhY2VzCisgICAgICAgIHdoZXJlIGl0IGRvZXMgaW5kZWVkIG1hdHRlciB0aGF0ICdlYycgZ2V0
IHNldCBwcm9wZXJseS4KKworICAgICAgICBObyBjaGFuZ2UgaW4gYmVoYXZpb3Igc2hvdWxkIHJl
c3VsdCBmcm9tIHRoaXMgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjp0YWtlQWxsQ2hpbGRyZW5G
cm9tKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlUG9ydHMpOgorICAgICAgICAqIGVkaXRpbmcv
RGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbmNsb3NpbmdE
ZWxldGFibGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUJ1dHRvbkNvbnRyb2xs
ZXI6OmNyZWF0ZURlbGV0aW9uVUkpOgorICAgICAgICAgICAgUmVwbGFjZWQgaW5saW5lIEFTU0VS
VCB3aXRoIEFTU0VSVF9OT19FWENFUFRJT04uCisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0
b25Db250cm9sbGVyOjpzaG93KToKKyAgICAgICAgICAgIFJlcGxhY2VkICdBU1NFUlQoZWMgPT0g
MCknIHdpdGggJ0FTU0VSVCghZWMpJyB0byBtYXRjaCB0aGUgc3R5bGUgZ3VpZGUuCisgICAgICAg
ICogZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVuaW9uRE9N
UmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENo
aWxkcmVuKToKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGFjZW1lbnRGcmFnbWVudDo6cmVtb3ZlTm9kZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnROb2RlQmVmb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydEZyYWdtZW50
Rm9yVGVzdFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlbWVudEZyYWdtZW50
OjpyZXN0b3JlQW5kUmVtb3ZlVGVzdFJlbmRlcmluZ05vZGVzVG9GcmFnbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5zZXJ0QXNMaXN0SXRlbXMpOgor
ICAgICAgICAqIGVkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmRvVW5hcHBseSk6CisgICAgICAgICogZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6
OnJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJhY2t3YXJkc0NoYXJhY3Rlckl0ZXJhdG9yOjpy
YW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9u
QW5kTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxhcHNlZFRvQm91bmRhcnkpOgorICAg
ICAgICAqIGVkaXRpbmcvaHRtbGVkaXRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
VGFiU3BhbkVsZW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvbWFjL0VkaXRvck1hYy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Zm9udEZvclNlbGVjdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpFZGl0b3I6OmZvbnRBdHRyaWJ1dGVzRm9yU2VsZWN0aW9uU3RhcnQpOgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZU1hcmt1cCk6Cisg
ICAgICAgIChXZWJDb3JlOjp0cmltRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRl
RnJhZ21lbnRGcm9tTWFya3VwV2l0aENvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsbENv
bnRhaW5lckZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21lbnRGcm9t
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGcmFnbWVudEZyb21Ob2Rlcyk6CisgICAg
ICAgICogaHRtbC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklu
cHV0VHlwZTo6Y3JlYXRlU2hhZG93U3VidHJlZSk6CisgICAgICAgICAgICBSZXBsYWNlZCBpbmxp
bmUgQVNTRVJUIHdpdGggQVNTRVJUX05PX0VYQ0VQVElPTi4KKyAgICAgICAgKiBodG1sL0hUTUxP
cHRpb25zQ29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MT3B0aW9uc0NvbGxl
Y3Rpb246OmFkZCk6CisgICAgICAgICAgICBSZXBsYWNlZCAnQVNTRVJUKGVjID09IDApJyB3aXRo
ICdBU1NFUlQoIWVjKScgdG8gbWF0Y2ggdGhlIHN0eWxlIGd1aWRlLgorICAgICAgICAqIGh0bWwv
SFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFF
bGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29u
dHJvbEVsZW1lbnQ6OmluZGV4Rm9yVmlzaWJsZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZSk6CisgICAgICAg
ICogaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEZp
ZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQpOgorICAgICAgICAqIGh0bWwvVmFs
aWRhdGlvbk1lc3NhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmFsaWRhdGlvbk1lc3NhZ2U6
OmJ1aWxkQnViYmxlVHJlZSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudFR5cGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFZvbHVtZVNsaWRl
ckVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
OjpnZXRDb29raWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0OjphZGRSdWxlKToKKyAg
ICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQpOgorICAg
ICAgICAqIHBhZ2UvRE9NU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVNlbGVj
dGlvbjo6ZGVsZXRlRnJvbURvY3VtZW50KToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByZXBhcmVDbGlwYm9hcmRGb3JJbWFnZURyYWcpOgor
ICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6dmlzaWJsZVBvc2l0aW9uRm9ySW5kZXgpOgorICAgICAg
ICAgICAgUmVwbGFjZWQgaW5saW5lIEFTU0VSVCB3aXRoIEFTU0VSVF9OT19FWENFUFRJT04uCisK
IDIwMTMtMDItMDggIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFN1cHBvcnQgYSByZWxhdGVkVGFyZ2V0IGF0dHJpYnV0ZSBvbiBmb2N1cy9ibHVyIGV2ZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCmluZGV4IGEzYzk1MDQ0MDFjOTliOTNi
OWM2OGUzYzIzNDlkYjA3ZDIyMjk4MTkuLjdhNDEwODA5MGRjN2RlM2EwYjIyOGExNmY3ZWE1YmJi
YjczZDE2MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKQEAgLTExOCwxMiAr
MTE4LDEwIEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6dGFrZUFsbENoaWxkcmVuRnJvbShDb250YWlu
ZXJOb2RlKiBvbGRQYXJlbnQpCiAgICAgb2xkUGFyZW50LT5yZW1vdmVEZXRhY2hlZENoaWxkcmVu
KCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRyZW4uc2l6ZSgpOyArK2kp
IHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgICAgIGlmIChjaGlsZHJlbltp
XS0+YXR0YWNoZWQoKSkKICAgICAgICAgICAgIGNoaWxkcmVuW2ldLT5kZXRhY2goKTsKICAgICAg
ICAgLy8gRklYTUU6IFdlIG5lZWQgYSBubyBtdXRhdGlvbiBldmVudCB2ZXJzaW9uIG9mIGFkb3B0
Tm9kZS4KLSAgICAgICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gZG9jdW1lbnQoKS0+YWRvcHROb2Rl
KGNoaWxkcmVuW2ldLnJlbGVhc2UoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAg
ICAgUmVmUHRyPE5vZGU+IGNoaWxkID0gZG9jdW1lbnQoKS0+YWRvcHROb2RlKGNoaWxkcmVuW2ld
LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIHBhcnNlckFwcGVuZENo
aWxkKGNoaWxkLmdldCgpKTsKICAgICAgICAgLy8gRklYTUU6IFRvZ2V0aGVyIHdpdGggYWRvcHRO
b2RlIGFib3ZlLCB0aGUgdHJlZSBzY29wZSBtaWdodCBnZXQgdXBkYXRlZCByZWN1cnNpdmVseSB0
d2ljZQogICAgICAgICAvLyAoaWYgdGhlIGRvY3VtZW50IGNoYW5nZWQgb3Igb2xkUGFyZW50IHdh
cyBpbiBhIHNoYWRvdyB0cmVlLCBBTkQgKnRoaXMgaXMgaW4gYSBzaGFkb3cgdHJlZSkuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAppbmRleCA4ZTkwNmY4NmEwOTQ2ODVhOGU3YTdlYjhiOTNhM2NkOTE1
MGU0YTI0Li4zMDRjM2IwNTI1ODAyMmUwMTU4NzVmNDg1NTY3OWFjM2VjNmQxMzNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKQEAgLTE1MjYsOSArMTUyNiw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgZWxzZSBpZiAoIW1fdGl0bGVFbGVtZW50
KSB7CiAgICAgICAgIGlmIChIVE1MRWxlbWVudCogaGVhZEVsZW1lbnQgPSBoZWFkKCkpIHsKICAg
ICAgICAgICAgIG1fdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudCh0aXRsZVRhZywgZmFsc2Up
OwotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBoZWFkRWxl
bWVudC0+YXBwZW5kQ2hpbGQobV90aXRsZUVsZW1lbnQsIGVjKTsKLSAgICAgICAgICAgIEFTU0VS
VCghZWMpOworICAgICAgICAgICAgaGVhZEVsZW1lbnQtPmFwcGVuZENoaWxkKG1fdGl0bGVFbGVt
ZW50LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NZXNzYWdlUG9ydC5jcHAKaW5kZXggOTVjNWE2ZDAxMTcyNjRiNjEwZGJkODAyMDJjYmE3NmMy
MzA1YWY3Mi4uN2NiNzJhZWFhM2QxNjMyZTQ5MTMzMTQxM2NkMDlhMzg0MWQ2NDkyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCkBAIC0xODYsOSArMTg2LDcgQEAgdm9pZCBNZXNzYWdl
UG9ydDo6ZGlzcGF0Y2hNZXNzYWdlcygpCiAgICAgICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5
PiBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIGV2ZW50RGF0YS0+Y2hhbm5lbHMoKSk7CiAgICAgICAgIFJlZlB0cjxFdmVudD4gZXZ0
ID0gTWVzc2FnZUV2ZW50OjpjcmVhdGUocG9ydHMucmVsZWFzZSgpLCBldmVudERhdGEtPm1lc3Nh
Z2UoKSk7CiAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGRpc3BhdGNo
RXZlbnQoZXZ0LnJlbGVhc2UoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAg
ZGlzcGF0Y2hFdmVudChldnQucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9
CiB9CiAKQEAgLTIyOSw4ICsyMjcsNyBAQCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFy
cmF5PiBNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGVQb3J0cyhjb25zdCBNZXNzYWdlUAogICAgIC8v
IFBhc3NlZC1pbiBwb3J0cyBwYXNzZWQgdmFsaWRpdHkgY2hlY2tzLCBzbyB3ZSBjYW4gZGlzZW50
YW5nbGUgdGhlbS4KICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IHBvcnRBcnJh
eSA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENoYW5uZWxBcnJheShwb3J0cy0+c2l6ZSgpKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAgOyBpIDwgcG9ydHMtPnNpemUoKSA7ICsraSkg
ewotICAgICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsID0gKCpwb3J0cylb
aV0tPmRpc2VudGFuZ2xlKGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7IC8vIENhbid0IGdlbmVy
YXRlIGV4Y2VwdGlvbiBoZXJlIGlmIHBhc3NlZCBhYm92ZSBjaGVja3MuCisgICAgICAgIE93blB0
cjxNZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwgPSAoKnBvcnRzKVtpXS0+ZGlzZW50YW5nbGUo
QVNTRVJUX05PX0VYQ0VQVElPTik7IC8vIENhbid0IGdlbmVyYXRlIGV4Y2VwdGlvbiBoZXJlIGlm
IHBhc3NlZCBhYm92ZSBjaGVja3MuCiAgICAgICAgICgqcG9ydEFycmF5KVtpXSA9IGNoYW5uZWwu
cmVsZWFzZSgpOwogICAgIH0KICAgICByZXR1cm4gcG9ydEFycmF5LnJlbGVhc2UoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCmluZGV4
IGMwZGEyNDY5MjJlMjRmNTBiOTIyMDY1YjFkYWFkNzg2MGE5ZjNjZDYuLjkwZDI1M2U4MWM4ODE5
N2QzYWEwMTU5ODkyMjc0OTVmMGZlY2ZhYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9EZWxldGVCdXR0b25Db250cm9sbGVyLmNwcApAQCAtMTU1LDEwICsxNTUsOCBAQCBzdGF0
aWMgSFRNTEVsZW1lbnQqIGVuY2xvc2luZ0RlbGV0YWJsZUVsZW1lbnQoY29uc3QgVmlzaWJsZVNl
bGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSogY29udGFpbmVyID0gcmFuZ2Ut
PmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKGVjKTsKKyAgICBOb2RlKiBjb250YWluZXIgPSByYW5n
ZS0+Y29tbW9uQW5jZXN0b3JDb250YWluZXIoQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgQVNT
RVJUKGNvbnRhaW5lcik7Ci0gICAgQVNTRVJUKGVjID09IDApOwogCiAgICAgLy8gVGhlIGVuY2xv
c2luZ05vZGVPZlR5cGUgZnVuY3Rpb24gb25seSB3b3JrcyBvbiBub2RlcyB0aGF0IGFyZSBlZGl0
YWJsZQogICAgIC8vICh3aGljaCBpcyBzdHJhbmdlLCBnaXZlbiBpdHMgbmFtZSkuCkBAIC0yMzQs
NyArMjMyLDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpjcmVhdGVEZWxldGlvblVJ
KCkKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hp
bGQob3V0bGluZS5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQo
IWVjKTsKICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjY2LDcgKzI2NCw3IEBA
IHZvaWQgRGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6Y3JlYXRlRGVsZXRpb25VSSgpCiAgICAgYnV0
dG9uLT5zZXRDYWNoZWRJbWFnZShuZXcgQ2FjaGVkSW1hZ2UoYnV0dG9uSW1hZ2UuZ2V0KCkpKTsK
IAogICAgIGNvbnRhaW5lci0+YXBwZW5kQ2hpbGQoYnV0dG9uLmdldCgpLCBlYyk7Ci0gICAgQVNT
RVJUKGVjID09IDApOworICAgIEFTU0VSVCghZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0
dXJuOwogCkBAIC0zMDAsNyArMjk4LDcgQEAgdm9pZCBEZWxldGVCdXR0b25Db250cm9sbGVyOjpz
aG93KEhUTUxFbGVtZW50KiBlbGVtZW50KQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgbV90YXJnZXQtPmFwcGVuZENoaWxkKG1fY29udGFpbmVyRWxlbWVudC5nZXQoKSwgZWMpOwot
ICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBBU1NFUlQoIWVjKTsKICAgICBpZiAoZWMpIHsKICAg
ICAgICAgaGlkZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAppbmRleCA0NzMzMjQ5M2FjOTliNWQxODU4ZDBmM2QxZmYyYjNiMzAxNGM4
ZTdmLi4yNTZhNWIzNWQxNDJiOGM5NmYyNmQ4ZjMzNWI4MTU5NmU2ODg4ZTU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTI2NiwxMSArMjY2LDggQEAgc3Rh
dGljIHVuc2lnbmVkIHZlcnRpY2FsU2Nyb2xsRGlzdGFuY2UoRnJhbWUqIGZyYW1lKQogCiBzdGF0
aWMgUmVmUHRyPFJhbmdlPiB1bmlvbkRPTVJhbmdlcyhSYW5nZSogYSwgUmFuZ2UqIGIpCiB7Ci0g
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgUmFuZ2UqIHN0YXJ0ID0gYS0+Y29tcGFyZUJv
dW5kYXJ5UG9pbnRzKFJhbmdlOjpTVEFSVF9UT19TVEFSVCwgYiwgZWMpIDw9IDAgPyBhIDogYjsK
LSAgICBBU1NFUlQoIWVjKTsKLSAgICBSYW5nZSogZW5kID0gYS0+Y29tcGFyZUJvdW5kYXJ5UG9p
bnRzKFJhbmdlOjpFTkRfVE9fRU5ELCBiLCBlYykgPD0gMCA/IGIgOiBhOwotICAgIEFTU0VSVCgh
ZWMpOworICAgIFJhbmdlKiBzdGFydCA9IGEtPmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZTo6
U1RBUlRfVE9fU1RBUlQsIGIsIEFTU0VSVF9OT19FWENFUFRJT04pIDw9IDAgPyBhIDogYjsKKyAg
ICBSYW5nZSogZW5kID0gYS0+Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKFJhbmdlOjpFTkRfVE9fRU5E
LCBiLCBBU1NFUlRfTk9fRVhDRVBUSU9OKSA8PSAwID8gYiA6IGE7CiAKICAgICByZXR1cm4gUmFu
Z2U6OmNyZWF0ZShhLT5vd25lckRvY3VtZW50KCksIHN0YXJ0LT5zdGFydENvbnRhaW5lcigpLCBz
dGFydC0+c3RhcnRPZmZzZXQoKSwgZW5kLT5lbmRDb250YWluZXIoKSwgZW5kLT5lbmRPZmZzZXQo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VOb2RlV2l0
aFNwYW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRo
U3BhbkNvbW1hbmQuY3BwCmluZGV4IDg3MTIzMDQwOTUxZWY5YTJhOWIxZGIxMDhmN2EyN2ExMTE1
NWM0ZjcuLmY1MDdkMjg4NjgyYmY3ODNiNGJiM2U2ZDk0YmIwYjQyNDc1ZGRhMjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQu
Y3BwCkBAIC01MSwyMyArNTEsMTggQEAgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQ6OlJlcGxh
Y2VOb2RlV2l0aFNwYW5Db21tYW5kKFBhc3NSZWZQdHI8SFRNTEVsZW1lbnQ+IGUKIHN0YXRpYyB2
b2lkIHN3YXBJbk5vZGVQcmVzZXJ2aW5nQXR0cmlidXRlc0FuZENoaWxkcmVuKEhUTUxFbGVtZW50
KiBuZXdOb2RlLCBIVE1MRWxlbWVudCogbm9kZVRvUmVwbGFjZSkKIHsKICAgICBBU1NFUlQobm9k
ZVRvUmVwbGFjZS0+aW5Eb2N1bWVudCgpKTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50Tm9kZSA9IG5vZGVUb1JlcGxhY2UtPnBhcmVu
dE5vZGUoKTsKLSAgICBwYXJlbnROb2RlLT5pbnNlcnRCZWZvcmUobmV3Tm9kZSwgbm9kZVRvUmVw
bGFjZSwgZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHBhcmVudE5vZGUtPmluc2VydEJlZm9y
ZShuZXdOb2RlLCBub2RlVG9SZXBsYWNlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIE5v
ZGVWZWN0b3IgY2hpbGRyZW47CiAgICAgZ2V0Q2hpbGROb2Rlcyhub2RlVG9SZXBsYWNlLCBjaGls
ZHJlbik7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJlbi5zaXplKCk7ICsraSkg
ewotICAgICAgICBuZXdOb2RlLT5hcHBlbmRDaGlsZChjaGlsZHJlbltpXSwgZWMpOwotICAgICAg
ICBBU1NFUlQoIWVjKTsKLSAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjaGlsZHJl
bi5zaXplKCk7ICsraSkKKyAgICAgICAgbmV3Tm9kZS0+YXBwZW5kQ2hpbGQoY2hpbGRyZW5baV0s
IEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgLy8gRklYTUU6IEZpeCB0aGlzIHRvIHNlbmQg
dGhlIHByb3BlciBNdXRhdGlvblJlY29yZHMgd2hlbiBNdXRhdGlvbk9ic2VydmVycyBhcmUgcHJl
c2VudC4KICAgICBuZXdOb2RlLT5jbG9uZURhdGFGcm9tRWxlbWVudCgqbm9kZVRvUmVwbGFjZSk7
CiAKLSAgICBwYXJlbnROb2RlLT5yZW1vdmVDaGlsZChub2RlVG9SZXBsYWNlLCBlYyk7Ci0gICAg
QVNTRVJUKCFlYyk7CisgICAgcGFyZW50Tm9kZS0+cmVtb3ZlQ2hpbGQobm9kZVRvUmVwbGFjZSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiB9CiAKIHZvaWQgUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1h
bmQ6OmRvQXBwbHkoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcAppbmRleCA0YWRlNjhhYThjZjA3NjZkMmM4ZDhmNTYzYzRiYzczZjQz
YTI4MWIyLi5hOTRlYjEwY2NmYzdhNTVmMTU4YjRmMGY2YWU3YjhmNzUyMmE5NTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcApA
QCAtMTgxLDkgKzE4MSw3IEBAIFJlcGxhY2VtZW50RnJhZ21lbnQ6OlJlcGxhY2VtZW50RnJhZ21l
bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBEb2N1bWVudEZyYWdtZW50KiBmCiAKICAgICAvLyBHaXZl
IHRoZSByb290IGEgY2hhbmNlIHRvIGNoYW5nZSB0aGUgdGV4dC4KICAgICBSZWZQdHI8QmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQ+IGV2dCA9IEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50OjpjcmVhdGUo
dGV4dCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgZWRpdGFibGVSb290LT5kaXNw
YXRjaEV2ZW50KGV2dCwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKKyAgICBlZGl0YWJsZVJv
b3QtPmRpc3BhdGNoRXZlbnQoZXZ0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBpZiAodGV4
dCAhPSBldnQtPnRleHQoKSB8fCAhZWRpdGFibGVSb290LT5yZW5kZXJlcklzUmljaGx5RWRpdGFi
bGUoKSkgewogICAgICAgICByZXN0b3JlQW5kUmVtb3ZlVGVzdFJlbmRlcmluZ05vZGVzVG9GcmFn
bWVudChob2xkZXIuZ2V0KCkpOwogCkBAIC0yMzQsOSArMjMyLDcgQEAgdm9pZCBSZXBsYWNlbWVu
dEZyYWdtZW50OjpyZW1vdmVOb2RlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKICAgICBpZiAoIXBh
cmVudCkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9
PSAwKTsKKyAgICBwYXJlbnQtPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIEFTU0VSVF9OT19FWENF
UFRJT04pOwogfQogCiB2b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6Omluc2VydE5vZGVCZWZvcmUo
UGFzc1JlZlB0cjxOb2RlPiBub2RlLCBOb2RlKiByZWZOb2RlKQpAQCAtMjQ4LDIzICsyNDQsMTUg
QEAgdm9pZCBSZXBsYWNlbWVudEZyYWdtZW50OjppbnNlcnROb2RlQmVmb3JlKFBhc3NSZWZQdHI8
Tm9kZT4gbm9kZSwgTm9kZSogcmVmTm9kZSkKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBwYXJlbnQtPmlu
c2VydEJlZm9yZShub2RlLCByZWZOb2RlLCBlYyk7Ci0gICAgQVNTRVJUKGVjID09IDApOworICAg
IHBhcmVudC0+aW5zZXJ0QmVmb3JlKG5vZGUsIHJlZk5vZGUsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogfQogCiBQYXNzUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IFJlcGxhY2VtZW50RnJhZ21lbnQ6Omlu
c2VydEZyYWdtZW50Rm9yVGVzdFJlbmRlcmluZyhOb2RlKiByb290RWRpdGFibGVFbGVtZW50KQog
ewogICAgIFJlZlB0cjxTdHlsZWRFbGVtZW50PiBob2xkZXIgPSBjcmVhdGVEZWZhdWx0UGFyYWdy
YXBoRWxlbWVudChtX2RvY3VtZW50LmdldCgpKTsKLSAgICAKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKLQotICAgIGhvbGRlci0+YXBwZW5kQ2hpbGQobV9mcmFnbWVudCwgZWMpOwotICAgIEFT
U0VSVChlYyA9PSAwKTsKLQotICAgIHJvb3RFZGl0YWJsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGhv
bGRlci5nZXQoKSwgZWMpOwotICAgIEFTU0VSVChlYyA9PSAwKTsKIAorICAgIGhvbGRlci0+YXBw
ZW5kQ2hpbGQobV9mcmFnbWVudCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgcm9vdEVkaXRh
YmxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoaG9sZGVyLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKICAgICBtX2RvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMo
KTsKIAogICAgIHJldHVybiBob2xkZXIucmVsZWFzZSgpOwpAQCAtMjc1LDEyICsyNjMsOSBAQCB2
b2lkIFJlcGxhY2VtZW50RnJhZ21lbnQ6OnJlc3RvcmVBbmRSZW1vdmVUZXN0UmVuZGVyaW5nTm9k
ZXNUb0ZyYWdtZW50KFN0eWxlZEVsZQogICAgIGlmICghaG9sZGVyKQogICAgICAgICByZXR1cm47
CiAgICAgCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgd2hpbGUgKFJlZlB0cjxOb2Rl
PiBub2RlID0gaG9sZGVyLT5maXJzdENoaWxkKCkpIHsKLSAgICAgICAgaG9sZGVyLT5yZW1vdmVD
aGlsZChub2RlLmdldCgpLCBlYyk7Ci0gICAgICAgIEFTU0VSVChlYyA9PSAwKTsKLSAgICAgICAg
bV9mcmFnbWVudC0+YXBwZW5kQ2hpbGQobm9kZS5nZXQoKSwgZWMpOwotICAgICAgICBBU1NFUlQo
ZWMgPT0gMCk7CisgICAgICAgIGhvbGRlci0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSwgQVNTRVJU
X05PX0VYQ0VQVElPTik7CisgICAgICAgIG1fZnJhZ21lbnQtPmFwcGVuZENoaWxkKG5vZGUuZ2V0
KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIH0KIAogICAgIHJlbW92ZU5vZGUoaG9sZGVy
KTsKQEAgLTEzMTgsOSArMTMwMyw3IEBAIE5vZGUqIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpp
bnNlcnRBc0xpc3RJdGVtcyhQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBwcnBMaXN0CiAgICAgfQog
CiAgICAgd2hpbGUgKFJlZlB0cjxOb2RlPiBsaXN0SXRlbSA9IGxpc3RFbGVtZW50LT5maXJzdENo
aWxkKCkpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIGxpc3RFbGVt
ZW50LT5yZW1vdmVDaGlsZChsaXN0SXRlbS5nZXQoKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVj
KTsKKyAgICAgICAgbGlzdEVsZW1lbnQtPnJlbW92ZUNoaWxkKGxpc3RJdGVtLmdldCgpLCBBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgaWYgKGlzU3RhcnQgfHwgaXNNaWRkbGUpIHsKICAg
ICAgICAgICAgIGluc2VydE5vZGVCZWZvcmUobGlzdEl0ZW0sIGxhc3ROb2RlKTsKICAgICAgICAg
ICAgIGluc2VydGVkTm9kZXMucmVzcG9uZFRvTm9kZUluc2VydGlvbihsaXN0SXRlbS5nZXQoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwbGl0VGV4dE5vZGVDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCmlu
ZGV4IDBlZWNhNmFkZjQwNzQ2OGMzYjk2NDgyNmFmNzk0Y2RlOTE5MWI5ODguLmNmMDdkZjM3NmUy
NzAxMDZlM2UyM2FhYjRhMWU2YTg2NzU2M2YzNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU3BsaXRUZXh0Tm9kZUNvbW1hbmQuY3BwCkBAIC03NSwxMiArNzUsMTAgQEAgdm9pZCBT
cGxpdFRleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKIAogICAgIFN0cmluZyBwcmVmaXhUZXh0
ID0gbV90ZXh0MS0+ZGF0YSgpOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgbV90
ZXh0Mi0+aW5zZXJ0RGF0YSgwLCBwcmVmaXhUZXh0LCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Cisg
ICAgbV90ZXh0Mi0+aW5zZXJ0RGF0YSgwLCBwcmVmaXhUZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKIAogICAgIGRvY3VtZW50KCktPm1hcmtlcnMoKS0+Y29weU1hcmtlcnMobV90ZXh0MS5nZXQo
KSwgMCwgcHJlZml4VGV4dC5sZW5ndGgoKSwgbV90ZXh0Mi5nZXQoKSwgMCk7Ci0gICAgbV90ZXh0
MS0+cmVtb3ZlKGVjKTsKKyAgICBtX3RleHQxLT5yZW1vdmUoQVNTRVJUX05PX0VYQ0VQVElPTik7
CiB9CiAKIHZvaWQgU3BsaXRUZXh0Tm9kZUNvbW1hbmQ6OmRvUmVhcHBseSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggYjZiMDAxYjdkMDIxYTViZThkZTc5YjYx
NWNhZmRmNzAxYmVlYzcwMS4uZTJiMWUyZTYyMzJhZmFkZWU5ZjJhNzU5ZGY0MDkzYzY5ZDEyNmQ1
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMTQxOCwxMCAr
MTQxOCw4IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IENoYXJhY3Rlckl0ZXJhdG9yOjpyYW5nZSgpIGNv
bnN0CiAgICAgICAgICAgICBOb2RlKiBuID0gci0+c3RhcnRDb250YWluZXIoKTsKICAgICAgICAg
ICAgIEFTU0VSVChuID09IHItPmVuZENvbnRhaW5lcigpKTsKICAgICAgICAgICAgIGludCBvZmZz
ZXQgPSByLT5zdGFydE9mZnNldCgpICsgbV9ydW5PZmZzZXQ7Ci0gICAgICAgICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIHItPnNldFN0YXJ0KG4sIG9mZnNldCwgZWMpOwot
ICAgICAgICAgICAgci0+c2V0RW5kKG4sIG9mZnNldCArIDEsIGVjKTsKLSAgICAgICAgICAgIEFT
U0VSVCghZWMpOworICAgICAgICAgICAgci0+c2V0U3RhcnQobiwgb2Zmc2V0LCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgICAgIHItPnNldEVuZChuLCBvZmZzZXQgKyAxLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gci5yZWxlYXNlKCk7
CkBAIC0xNTI2LDEwICsxNTI0LDggQEAgUGFzc1JlZlB0cjxSYW5nZT4gQmFja3dhcmRzQ2hhcmFj
dGVySXRlcmF0b3I6OnJhbmdlKCkgY29uc3QKICAgICAgICAgICAgIE5vZGUqIG4gPSByLT5zdGFy
dENvbnRhaW5lcigpOwogICAgICAgICAgICAgQVNTRVJUKG4gPT0gci0+ZW5kQ29udGFpbmVyKCkp
OwogICAgICAgICAgICAgaW50IG9mZnNldCA9IHItPmVuZE9mZnNldCgpIC0gbV9ydW5PZmZzZXQ7
Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIHItPnNldFN0
YXJ0KG4sIG9mZnNldCAtIDEsIGVjKTsKLSAgICAgICAgICAgIHItPnNldEVuZChuLCBvZmZzZXQs
IGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgci0+c2V0U3RhcnQo
biwgb2Zmc2V0IC0gMSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgICAgICByLT5zZXRF
bmQobiwgb2Zmc2V0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgIH0KICAg
ICByZXR1cm4gci5yZWxlYXNlKCk7CkBAIC0yNDQwLDExICsyNDM2LDggQEAgUGFzc1JlZlB0cjxS
YW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChDb250YWluZXJO
b2RlKiBzY29wZSwKICAgICBpZiAocmFuZ2VMb2NhdGlvbiA9PSAwICYmIHJhbmdlTGVuZ3RoID09
IDAgJiYgaXQuYXRFbmQoKSkgewogICAgICAgICB0ZXh0UnVuUmFuZ2UgPSBpdC5yYW5nZSgpOwog
ICAgICAgICAKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIHJlc3VsdFJh
bmdlLT5zZXRTdGFydCh0ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIGVjKTsKLSAg
ICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIHJlc3VsdFJhbmdlLT5zZXRFbmQodGV4dFJ1blJh
bmdlLT5zdGFydENvbnRhaW5lcigpLCAwLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAg
ICAgICByZXN1bHRSYW5nZS0+c2V0U3RhcnQodGV4dFJ1blJhbmdlLT5zdGFydENvbnRhaW5lcigp
LCAwLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZCh0
ZXh0UnVuUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIDAsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgICAgICAKICAgICAgICAgcmV0dXJuIHJlc3VsdFJhbmdlLnJlbGVhc2UoKTsKICAgICB9CkBA
IC0yNDY2LDE3ICsyNDU5LDEyIEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFu
Z2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoQ29udGFpbmVyTm9kZSogc2NvcGUsCiAgICAgICAgICAg
ICAgICAgaXQuYWR2YW5jZSgpOwogICAgICAgICAgICAgICAgIGlmICghaXQuYXRFbmQoKSkgewog
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gaXQucmFuZ2UoKTsKLSAg
ICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJhbmdlLT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+
c3RhcnRPZmZzZXQoKSwgZWMpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGV4dFJ1blJhbmdlLT5zZXRFbmQocmFuZ2UtPnN0YXJ0Q29udGFp
bmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBydW5TdGFy
dCA9IHRleHRSdW5SYW5nZS0+c3RhcnRQb3NpdGlvbigpOwogICAgICAgICAgICAgICAgICAgICBQ
b3NpdGlvbiBydW5FbmQgPSBWaXNpYmxlUG9zaXRpb24ocnVuU3RhcnQpLm5leHQoKS5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAocnVuRW5kLmlzTm90TnVsbCgpKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRleHRSdW5SYW5nZS0+c2V0RW5kKHJ1bkVuZC5jb250YWluZXJOb2Rl
KCksIHJ1bkVuZC5jb21wdXRlT2Zmc2V0SW5Db250YWluZXJOb2RlKCksIGVjKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGlmIChydW5FbmQuaXNOb3ROdWxsKCkpCisgICAgICAgICAgICAgICAg
ICAgICAgICB0ZXh0UnVuUmFuZ2UtPnNldEVuZChydW5FbmQuY29udGFpbmVyTm9kZSgpLCBydW5F
bmQuY29tcHV0ZU9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI1OTgsMTEg
KzI1ODYsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBbGxDb2xsYXBzaWJsZVdoaXRlc3BhY2Uo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAKIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBjb2xsYXBz
ZWRUb0JvdW5kYXJ5KGNvbnN0IFJhbmdlKiByYW5nZSwgYm9vbCBmb3J3YXJkKQogewotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0ID0gcmFuZ2UtPmNs
b25lUmFuZ2UoZWMpOwotICAgIEFTU0VSVCghZWMpOwotICAgIHJlc3VsdC0+Y29sbGFwc2UoIWZv
cndhcmQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJlc3VsdCA9
IHJhbmdlLT5jbG9uZVJhbmdlKEFTU0VSVF9OT19FWENFUFRJT04pOworICAgIHJlc3VsdC0+Y29s
bGFwc2UoIWZvcndhcmQsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIHJldHVybiByZXN1bHQu
cmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxl
ZGl0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCmluZGV4
IDk2ZWY4NjMzNWE1MTRjZjI3NDcyNDc0OWNiZmNlMzEyY2VkODJhN2MuLjE5ZmIzZjIwOTcwYWE4
YTMyMDNmZjQ1MThiOGI1ODJiMzRiYzI4YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaHRtbGVkaXRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVk
aXRpbmcuY3BwCkBAIC05MzksOSArOTM5LDcgQEAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVU
YWJTcGFuRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFBhc3NSZWZQdHI8Tm9kZT4gcHIKICAg
ICBpZiAoIXRhYlRleHROb2RlKQogICAgICAgICB0YWJUZXh0Tm9kZSA9IGRvY3VtZW50LT5jcmVh
dGVFZGl0aW5nVGV4dE5vZGUoIlx0Iik7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBzcGFuRWxlbWVudC0+YXBwZW5kQ2hpbGQodGFiVGV4dE5vZGUucmVsZWFzZSgpLCBlYyk7Ci0g
ICAgQVNTRVJUKGVjID09IDApOworICAgIHNwYW5FbGVtZW50LT5hcHBlbmRDaGlsZCh0YWJUZXh0
Tm9kZS5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgcmV0dXJuIHNwYW5F
bGVtZW50LnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFjL0VkaXRvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5t
bQppbmRleCAwMzdlNDhhYzkxOTk4NTk5ZTVkYzc3MWJkOWI4MzY1NzQ3YmI1NWNkLi44YzMzNTVh
ZDMxMmE1ZGI5ZjA0YTVmZjUyNDc3ZDdlODVhM2UxYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9tYWMvRWRpdG9yTWFjLm1tCkBAIC0xNTMsMTEgKzE1Myw4IEBAIGNvbnN0IFNpbXBsZUZvbnRE
YXRhKiBFZGl0b3I6OmZvbnRGb3JTZWxlY3Rpb24oYm9vbCYgaGFzTXVsdGlwbGVGb250cykgY29u
c3QKICAgICAgICAgaWYgKHN0eWxlKQogICAgICAgICAgICAgcmVzdWx0ID0gc3R5bGUtPmZvbnQo
KS5wcmltYXJ5Rm9udCgpOwogCi0gICAgICAgIGlmIChub2RlVG9SZW1vdmUpIHsKLSAgICAgICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7Ci0gICAgICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShl
Yyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9k
ZVRvUmVtb3ZlKQorICAgICAgICAgICAgbm9kZVRvUmVtb3ZlLT5yZW1vdmUoQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CkBAIC0yNDIsMTEgKzIz
OSw4IEBAIE5TRGljdGlvbmFyeSogRWRpdG9yOjpmb250QXR0cmlidXRlc0ZvclNlbGVjdGlvblN0
YXJ0KCkgY29uc3QKICAgICBpZiAoZGVjb3JhdGlvbiAmIFVOREVSTElORSkKICAgICAgICAgW3Jl
c3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6TlNVbmRlcmxpbmVTdHlsZVNp
bmdsZV0gZm9yS2V5Ok5TVW5kZXJsaW5lU3R5bGVBdHRyaWJ1dGVOYW1lXTsKIAotICAgIGlmIChu
b2RlVG9SZW1vdmUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG5v
ZGVUb1JlbW92ZS0+cmVtb3ZlKGVjKTsKLSAgICAgICAgQVNTRVJUKGVjID09IDApOwotICAgIH0K
KyAgICBpZiAobm9kZVRvUmVtb3ZlKQorICAgICAgICBub2RlVG9SZW1vdmUtPnJlbW92ZShBU1NF
UlRfTk9fRVhDRVBUSU9OKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAKaW5kZXggZGNiZTliOTc5Y2YxYTg2YTBhNTRlNzBmOTVkYzUyYjIwZDFhZjRm
MS4uM2QzMmE1NGU4Njk0ZGFmZjA0YWY2MjIwZWRmM2VhMjBkNTZiMDc5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcApAQCAtNTY0LDEzICs1NjQsMTAgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1
cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJ
bnRlcmMKICAgICBpZiAoZGVsZXRlQnV0dG9uKQogICAgICAgICBkZWxldGVCdXR0b24tPmRpc2Fi
bGUoKTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgY29sbGFwc2VkID0g
dXBkYXRlZFJhbmdlLT5jb2xsYXBzZWQoZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIGJvb2wg
Y29sbGFwc2VkID0gdXBkYXRlZFJhbmdlLT5jb2xsYXBzZWQoQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgaWYgKGNvbGxhcHNlZCkKICAgICAgICAgcmV0dXJuICIiOwotICAgIE5vZGUqIGNvbW1v
bkFuY2VzdG9yID0gdXBkYXRlZFJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihlYyk7Ci0g
ICAgQVNTRVJUKCFlYyk7CisgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSB1cGRhdGVkUmFuZ2Ut
PmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyKEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgIGlmICgh
Y29tbW9uQW5jZXN0b3IpCiAgICAgICAgIHJldHVybiAiIjsKIApAQCAtNTk4LDE0ICs1OTUsMTEg
QEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4q
IG5vZGVzLCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICAgICAgYWNjdW11bGF0b3IuYXBwZW5kU3Ry
aW5nKGludGVyY2hhbmdlTmV3bGluZVN0cmluZyk7CiAgICAgICAgIHN0YXJ0Tm9kZSA9IHZpc2li
bGVTdGFydC5uZXh0KCkuZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpOwogCi0gICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpZiAocGFzdEVuZCAmJiBSYW5nZTo6
Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXJ0Tm9kZSwgMCwgcGFzdEVuZCwgMCwgZWMpID49IDAp
IHsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBpZiAocGFzdEVuZCAmJiBSYW5n
ZTo6Y29tcGFyZUJvdW5kYXJ5UG9pbnRzKHN0YXJ0Tm9kZSwgMCwgcGFzdEVuZCwgMCwgQVNTRVJU
X05PX0VYQ0VQVElPTikgPj0gMCkgewogICAgICAgICAgICAgaWYgKGRlbGV0ZUJ1dHRvbikKICAg
ICAgICAgICAgICAgICBkZWxldGVCdXR0b24tPmVuYWJsZSgpOwogICAgICAgICAgICAgcmV0dXJu
IGludGVyY2hhbmdlTmV3bGluZVN0cmluZzsKICAgICAgICAgfQotICAgICAgICBBU1NFUlQoIWVj
KTsKICAgICB9CiAKICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gYWNjdW11bGF0b3Iuc2VyaWFsaXpl
Tm9kZXMoc3RhcnROb2RlLCBwYXN0RW5kKTsKQEAgLTY5Myw3ICs2ODcsNiBAQCBzdGF0aWMgYm9v
bCBmaW5kTm9kZXNTdXJyb3VuZGluZ0NvbnRleHQoRG9jdW1lbnQqIGRvY3VtZW50LCBSZWZQdHI8
Tm9kZT4mIG5vZGVCZQogCiBzdGF0aWMgdm9pZCB0cmltRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVu
dCogZnJhZ21lbnQsIE5vZGUqIG5vZGVCZWZvcmVDb250ZXh0LCBOb2RlKiBub2RlQWZ0ZXJDb250
ZXh0KQogewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxOb2RlPiBuZXh0
OwogICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBmcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBu
b2RlOyBub2RlID0gbmV4dCkgewogICAgICAgICBpZiAobm9kZUJlZm9yZUNvbnRleHQtPmlzRGVz
Y2VuZGFudE9mKG5vZGUuZ2V0KCkpKSB7CkBAIC03MDIsNyArNjk1LDcgQEAgc3RhdGljIHZvaWQg
dHJpbUZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBOb2RlKiBub2RlQmVmb3Jl
Q29udGV4dCwgTm8KICAgICAgICAgfQogICAgICAgICBuZXh0ID0gTm9kZVRyYXZlcnNhbDo6bmV4
dFNraXBwaW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7CiAgICAgICAgIEFTU0VSVCghbm9kZS0+Y29u
dGFpbnMobm9kZUFmdGVyQ29udGV4dCkpOwotICAgICAgICBub2RlLT5wYXJlbnROb2RlKCktPnJl
bW92ZUNoaWxkKG5vZGUuZ2V0KCksIGVjKTsKKyAgICAgICAgbm9kZS0+cGFyZW50Tm9kZSgpLT5y
ZW1vdmVDaGlsZChub2RlLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgaWYg
KG5vZGVCZWZvcmVDb250ZXh0ID09IG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBA
IC03MTAsOCArNzAzLDcgQEAgc3RhdGljIHZvaWQgdHJpbUZyYWdtZW50KERvY3VtZW50RnJhZ21l
bnQqIGZyYWdtZW50LCBOb2RlKiBub2RlQmVmb3JlQ29udGV4dCwgTm8KICAgICBBU1NFUlQobm9k
ZUFmdGVyQ29udGV4dC0+cGFyZW50Tm9kZSgpKTsKICAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2Rl
ID0gbm9kZUFmdGVyQ29udGV4dDsgbm9kZTsgbm9kZSA9IG5leHQpIHsKICAgICAgICAgbmV4dCA9
IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5vZGUuZ2V0KCkpOwotICAgICAg
ICBub2RlLT5wYXJlbnROb2RlKCktPnJlbW92ZUNoaWxkKG5vZGUuZ2V0KCksIGVjKTsKLSAgICAg
ICAgQVNTRVJUKCFlYyk7CisgICAgICAgIG5vZGUtPnBhcmVudE5vZGUoKS0+cmVtb3ZlQ2hpbGQo
bm9kZS5nZXQoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQogfQogCkBAIC03NDEsMTkg
KzczMywxNiBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJv
bU1hcmt1cFdpdGhDb250ZXh0KERvY3VtZW50KiBkb2N1bQogICAgICAgICBwb3NpdGlvbkFmdGVy
Tm9kZShub2RlQmVmb3JlQ29udGV4dC5nZXQoKSkucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCks
CiAgICAgICAgIHBvc2l0aW9uQmVmb3JlTm9kZShub2RlQWZ0ZXJDb250ZXh0LmdldCgpKS5wYXJl
bnRBbmNob3JlZEVxdWl2YWxlbnQoKSk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBOb2RlKiBjb21tb25BbmNlc3RvciA9IHJhbmdlLT5jb21tb25BbmNlc3RvckNvbnRhaW5lcihl
Yyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgTm9kZSogY29tbW9uQW5jZXN0b3IgPSByYW5nZS0+
Y29tbW9uQW5jZXN0b3JDb250YWluZXIoQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgTm9kZSog
c3BlY2lhbENvbW1vbkFuY2VzdG9yID0gYW5jZXN0b3JUb1JldGFpblN0cnVjdHVyZUFuZEFwcGVh
cmFuY2VXaXRoTm9SZW5kZXJlcihjb21tb25BbmNlc3Rvcik7CiAKICAgICAvLyBXaGVuIHRoZXJl
J3MgYSBzcGVjaWFsIGNvbW1vbiBhbmNlc3RvciBvdXRzaWRlIG9mIHRoZSBmcmFnbWVudCwgd2Ug
bXVzdCBpbmNsdWRlIGl0IGFzIHdlbGwgdG8KICAgICAvLyBwcmVzZXJ2ZSB0aGUgc3RydWN0dXJl
IGFuZCBhcHBlYXJhbmNlIG9mIHRoZSBmcmFnbWVudC4gRm9yIGV4YW1wbGUsIGlmIHRoZSBmcmFn
bWVudCBjb250YWlucwogICAgIC8vIFRELCB3ZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGVuY2xvc2lu
ZyBUQUJMRSB0YWcgYXMgd2VsbC4KICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwotICAgIGlmIChzcGVjaWFs
Q29tbW9uQW5jZXN0b3IpIHsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKHNwZWNpYWxD
b21tb25BbmNlc3RvciwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9IGVsc2UKKyAg
ICBpZiAoc3BlY2lhbENvbW1vbkFuY2VzdG9yKQorICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hp
bGQoc3BlY2lhbENvbW1vbkFuY2VzdG9yLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBlbHNl
CiAgICAgICAgIGZyYWdtZW50LT50YWtlQWxsQ2hpbGRyZW5Gcm9tKHN0YXRpY19jYXN0PENvbnRh
aW5lck5vZGUqPihjb21tb25BbmNlc3RvcikpOwogCiAgICAgdHJpbUZyYWdtZW50KGZyYWdtZW50
LmdldCgpLCBub2RlQmVmb3JlQ29udGV4dC5nZXQoKSwgbm9kZUFmdGVyQ29udGV4dC5nZXQoKSk7
CkBAIC03ODEsMTAgKzc3MCw4IEBAIHN0YXRpYyB2b2lkIGZpbGxDb250YWluZXJGcm9tU3RyaW5n
KENvbnRhaW5lck5vZGUqIHBhcmFncmFwaCwgY29uc3QgU3RyaW5nJiBzdHJpCiB7CiAgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gcGFyYWdyYXBoLT5kb2N1bWVudCgpOwogCi0gICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CiAgICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgcGFyYWdy
YXBoLT5hcHBlbmRDaGlsZChjcmVhdGVCbG9ja1BsYWNlaG9sZGVyRWxlbWVudChkb2N1bWVudCks
IGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHBhcmFncmFwaC0+YXBwZW5kQ2hp
bGQoY3JlYXRlQmxvY2tQbGFjZWhvbGRlckVsZW1lbnQoZG9jdW1lbnQpLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtODAxLDI0ICs3ODgsMjAgQEAg
c3RhdGljIHZvaWQgZmlsbENvbnRhaW5lckZyb21TdHJpbmcoQ29udGFpbmVyTm9kZSogcGFyYWdy
YXBoLCBjb25zdCBTdHJpbmcmIHN0cmkKICAgICAgICAgLy8gYXBwZW5kIHRoZSBub24tdGFiIHRl
eHR1YWwgcGFydAogICAgICAgICBpZiAoIXMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAo
IXRhYlRleHQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRD
aGlsZChjcmVhdGVUYWJTcGFuRWxlbWVudChkb2N1bWVudCwgdGFiVGV4dCksIGVjKTsKLSAgICAg
ICAgICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVu
ZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50KGRvY3VtZW50LCB0YWJUZXh0KSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgICAgICAgICAgICAgdGFiVGV4dCA9IGVtcHR5U3RyaW5nKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gdGV4dE5vZGUgPSBkb2N1bWVu
dC0+Y3JlYXRlVGV4dE5vZGUoc3RyaW5nV2l0aFJlYmFsYW5jZWRXaGl0ZXNwYWNlKHMsIGZpcnN0
LCBpICsgMSA9PSBudW1FbnRyaWVzKSk7Ci0gICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENo
aWxkKHRleHROb2RlLnJlbGVhc2UoKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Cisg
ICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKHRleHROb2RlLnJlbGVhc2UoKSwgQVNT
RVJUX05PX0VYQ0VQVElPTik7CiAgICAgICAgIH0KIAogICAgICAgICAvLyB0aGVyZSBpcyBhIHRh
YiBhZnRlciBldmVyeSBlbnRyeSwgZXhjZXB0IHRoZSBsYXN0IGVudHJ5CiAgICAgICAgIC8vIChp
ZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgYSB0YWIsIHRoZSBsaXN0IGdldHMgYW4gZXh0cmEgZW1w
dHkgZW50cnkpCiAgICAgICAgIGlmIChpICsgMSAhPSBudW1FbnRyaWVzKQogICAgICAgICAgICAg
dGFiVGV4dC5hcHBlbmQoJ1x0Jyk7Ci0gICAgICAgIGVsc2UgaWYgKCF0YWJUZXh0LmlzRW1wdHko
KSkgewotICAgICAgICAgICAgcGFyYWdyYXBoLT5hcHBlbmRDaGlsZChjcmVhdGVUYWJTcGFuRWxl
bWVudChkb2N1bWVudCwgdGFiVGV4dCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwot
ICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICBlbHNlIGlmICghdGFiVGV4dC5pc0VtcHR5KCkp
CisgICAgICAgICAgICBwYXJhZ3JhcGgtPmFwcGVuZENoaWxkKGNyZWF0ZVRhYlNwYW5FbGVtZW50
KGRvY3VtZW50LCB0YWJUZXh0KSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisKICAgICAgICAgZmly
c3QgPSBmYWxzZTsKICAgICB9CiB9CkBAIC04NTYsMTYgKzgzOSwxMyBAQCBQYXNzUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQsIGNv
bnN0IFN0cmluZwogICAgIHN0cmluZy5yZXBsYWNlKCJcclxuIiwgIlxuIik7CiAgICAgc3RyaW5n
LnJlcGxhY2UoJ1xyJywgJ1xuJyk7CiAKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3R5bGVOb2RlLT5yZW5kZXJlcigpOwogICAgIGlmIChy
ZW5kZXJlciAmJiByZW5kZXJlci0+c3R5bGUoKS0+cHJlc2VydmVOZXdsaW5lKCkpIHsKLSAgICAg
ICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZShzdHJpbmcp
LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hp
bGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHN0cmluZyksIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgICAgICBpZiAoc3RyaW5nLmVuZHNXaXRoKCdcbicpKSB7CiAgICAgICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gZWxlbWVudCA9IGNyZWF0ZUJyZWFrRWxlbWVudChkb2N1bWVudCk7CiAgICAg
ICAgICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1dGUoY2xhc3NBdHRyLCBBcHBsZUludGVyY2hhbmdl
TmV3bGluZSk7ICAgICAgICAgICAgCi0gICAgICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQo
ZWxlbWVudC5yZWxlYXNlKCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOworICAgICAg
ICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgpLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgp
OwogICAgIH0KQEAgLTkwNyw4ICs4ODcsNyBAQCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUZyYWdtZW50RnJvbVRleHQoUmFuZ2UqIGNvbnRleHQsIGNvbnN0IFN0cmluZwogICAg
ICAgICAgICAgICAgIGVsZW1lbnQgPSBjcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudChkb2N1
bWVudCk7CiAgICAgICAgICAgICBmaWxsQ29udGFpbmVyRnJvbVN0cmluZyhlbGVtZW50LmdldCgp
LCBzKTsKICAgICAgICAgfQotICAgICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoZWxlbWVudC5y
ZWxlYXNlKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIGZyYWdtZW50LT5h
cHBlbmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
fQogICAgIHJldHVybiBmcmFnbWVudC5yZWxlYXNlKCk7CiB9CkBAIC05MjQsMTQgKzkwMywxMSBA
QCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUZyYWdtZW50RnJvbU5vZGVzKERv
Y3VtZW50ICpkb2N1bWVudCwgY29uc3QgVgogCiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGZyYWdtZW50ID0gZG9jdW1lbnQtPmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKIAotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHNpemVfdCBzaXplID0gbm9kZXMuc2l6ZSgpOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxFbGVt
ZW50PiBlbGVtZW50ID0gY3JlYXRlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQoZG9jdW1lbnQpOwot
ICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGlsZChub2Rlc1tpXSwgZWMpOwotICAgICAgICBBU1NF
UlQoIWVjKTsKLSAgICAgICAgZnJhZ21lbnQtPmFwcGVuZENoaWxkKGVsZW1lbnQucmVsZWFzZSgp
LCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICBlbGVtZW50LT5hcHBlbmRDaGls
ZChub2Rlc1tpXSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgICAgIGZyYWdtZW50LT5hcHBl
bmRDaGlsZChlbGVtZW50LnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQog
CiAgICAgaWYgKGRvY3VtZW50LT5mcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9Db2xvcklucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRU
eXBlLmNwcAppbmRleCA0OTA2M2IzNDhjZTJmYjc2OGUwOWI0NjQ1YTBkZjYwZjZhNDQ1MzJmLi4w
N2ZhMWJiYWYxNzI3OGMzZGU5MTYxOGI0MDZhMTgyZjBmNTQ5YmFmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0NvbG9ySW5wdXRUeXBlLmNwcApAQCAtMTI2LDExICsxMjYsOCBAQCB2b2lkIENvbG9ySW5w
dXRUeXBlOjpjcmVhdGVTaGFkb3dTdWJ0cmVlKCkKICAgICB3cmFwcGVyRWxlbWVudC0+c2V0UHNl
dWRvKEF0b21pY1N0cmluZygiLXdlYmtpdC1jb2xvci1zd2F0Y2gtd3JhcHBlciIsIEF0b21pY1N0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+
IGNvbG9yU3dhdGNoID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCk7CiAgICAgY29s
b3JTd2F0Y2gtPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtY29sb3Itc3dhdGNoIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIHdyYXBwZXJFbGVtZW50LT5hcHBlbmRDaGlsZChjb2xvclN3YXRjaC5yZWxl
YXNlKCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICBlbGVtZW50KCktPnVzZXJBZ2VudFNo
YWRvd1Jvb3QoKS0+YXBwZW5kQ2hpbGQod3JhcHBlckVsZW1lbnQucmVsZWFzZSgpLCBlYyk7Ci0g
ICAgQVNTRVJUKCFlYyk7CisgICAgd3JhcHBlckVsZW1lbnQtPmFwcGVuZENoaWxkKGNvbG9yU3dh
dGNoLnJlbGVhc2UoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgZWxlbWVudCgpLT51c2Vy
QWdlbnRTaGFkb3dSb290KCktPmFwcGVuZENoaWxkKHdyYXBwZXJFbGVtZW50LnJlbGVhc2UoKSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgCiAgICAgdXBkYXRlQ29sb3JTd2F0Y2goKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbnNDb2xsZWN0aW9uLmNwcAppbmRleCBk
N2MyNjdiYTE3Yjc5NzBkNmZhMmM0N2EwN2Y0MzE3NWI1MmU4YjhiLi5mMjk0MmEyODNiNTQzZDNl
OThjYzA4ODdlZjZmNGRlMTU4MTEzNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxPcHRpb25zQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T3B0aW9uc0NvbGxlY3Rpb24uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgSFRNTE9wdGlvbnND
b2xsZWN0aW9uOjphZGQoUGFzc1JlZlB0cjxIVE1MT3B0aW9uRWxlbWVudD4gZWxlbWVudCwgaW50
IGluZGV4CiAgICAgZWxzZQogICAgICAgICBzZWxlY3QtPmFkZChuZXdPcHRpb24sIHN0YXRpY19j
YXN0PEhUTUxPcHRpb25FbGVtZW50Kj4oaXRlbShpbmRleCkpLCBlYyk7CiAKLSAgICBBU1NFUlQo
ZWMgPT0gMCk7CisgICAgQVNTRVJUKCFlYyk7CiB9CiAKIHZvaWQgSFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpyZW1vdmUoaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKaW5kZXggNzYxOGEzM2YxMjI4NGY4MDA4NmQyN2UzNTEwNGUxODAyMDdjZTBl
My4uYmZmZjRiZjY4YWEyM2JlZGRiMmZkMGVlMGYxMDc2MzU1NThhYjYyNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCkBAIC01MzksMTIgKzUzOSwxMCBA
QCBib29sIEhUTUxUZXh0QXJlYUVsZW1lbnQ6Om1hdGNoZXNSZWFkV3JpdGVQc2V1ZG9DbGFzcygp
IGNvbnN0CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6dXBkYXRlUGxhY2Vob2xkZXJUZXh0
KCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBTdHJpbmcgcGxhY2Vob2xkZXJU
ZXh0ID0gc3RyaXBwZWRQbGFjZWhvbGRlcigpOwogICAgIGlmIChwbGFjZWhvbGRlclRleHQuaXNF
bXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNlaG9sZGVyKSB7Ci0gICAgICAgICAgICB1c2Vy
QWdlbnRTaGFkb3dSb290KCktPnJlbW92ZUNoaWxkKG1fcGxhY2Vob2xkZXIsIGVjKTsKLSAgICAg
ICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICAgICAgdXNlckFnZW50U2hhZG93Um9vdCgpLT5y
ZW1vdmVDaGlsZChtX3BsYWNlaG9sZGVyLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAg
ICAgIG1fcGxhY2Vob2xkZXIgPSAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKQEAgLTU1
MywxMSArNTUxLDkgQEAgdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp1cGRhdGVQbGFjZWhvbGRl
clRleHQoKQogICAgICAgICBSZWZQdHI8SFRNTERpdkVsZW1lbnQ+IHBsYWNlaG9sZGVyID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCgpKTsKICAgICAgICAgbV9wbGFjZWhvbGRlciA9
IHBsYWNlaG9sZGVyLmdldCgpOwogICAgICAgICBtX3BsYWNlaG9sZGVyLT5zZXRQc2V1ZG8oQXRv
bWljU3RyaW5nKCItd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIiwgQXRvbWljU3RyaW5nOjpDb25z
dHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgICAgICB1c2VyQWdlbnRTaGFkb3dSb290KCktPmluc2Vy
dEJlZm9yZShtX3BsYWNlaG9sZGVyLCBpbm5lclRleHRFbGVtZW50KCktPm5leHRTaWJsaW5nKCks
IGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAgIHVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIsIGlubmVyVGV4dEVsZW1lbnQoKS0+bmV4dFNp
YmxpbmcoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQotICAgIG1fcGxhY2Vob2xkZXIt
PnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAg
ICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5lclRleHQocGxhY2Vob2xkZXJUZXh0LCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICBmaXhQbGFjZWhvbGRlclJlbmRlcmVyKG1fcGxhY2Vob2xkZXIsIGlu
bmVyVGV4dEVsZW1lbnQoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNjJmNGExNjJmY2UzMWM5ODVhMzM0NTc5
OTAxNTg1OGYzYzEwMDBhMS4uOTczOTUyMzRhYTMwZTkyZjhhMmFjMjI3MTFmOWNmYzE1ZjQzNzlh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudC5jcHAKQEAgLTM1MCwxMiArMzUwLDkgQEAgaW50IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50OjppbmRleEZvclZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHAKICAg
ICBQb3NpdGlvbiBpbmRleFBvc2l0aW9uID0gcG9zLmRlZXBFcXVpdmFsZW50KCkucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCk7CiAgICAgaWYgKGVuY2xvc2luZ1RleHRGb3JtQ29udHJvbChpbmRl
eFBvc2l0aW9uKSAhPSB0aGlzKQogICAgICAgICByZXR1cm4gMDsKLSAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShpbmRleFBv
c2l0aW9uLmRvY3VtZW50KCkpOwotICAgIHJhbmdlLT5zZXRTdGFydChpbm5lclRleHRFbGVtZW50
KCksIDAsIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKLSAgICByYW5nZS0+c2V0RW5kKGluZGV4UG9z
aXRpb24uY29udGFpbmVyTm9kZSgpLCBpbmRleFBvc2l0aW9uLm9mZnNldEluQ29udGFpbmVyTm9k
ZSgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgcmFuZ2UtPnNldFN0YXJ0KGlubmVyVGV4
dEVsZW1lbnQoKSwgMCwgQVNTRVJUX05PX0VYQ0VQVElPTik7CisgICAgcmFuZ2UtPnNldEVuZChp
bmRleFBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSwgaW5kZXhQb3NpdGlvbi5vZmZzZXRJbkNvbnRh
aW5lck5vZGUoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgcmV0dXJuIFRleHRJdGVyYXRv
cjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCkpOwogfQogCkBAIC01MzksMTQgKzUzNiwxMCBAQCB2
b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpzZXRJbm5lclRleHRWYWx1ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQogICAgICAgICBpZiAodGV4dElzQ2hhbmdlZCAmJiBkb2N1bWVudCgpICYm
IHJlbmRlcmVyKCkgJiYgQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSkKICAg
ICAgICAgICAgIGRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbih0
aGlzLCBBWE9iamVjdENhY2hlOjpBWFZhbHVlQ2hhbmdlZCwgZmFsc2UpOwogCi0gICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBpbm5lclRleHRFbGVtZW50KCktPnNldElubmVy
VGV4dCh2YWx1ZSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgaW5uZXJUZXh0
RWxlbWVudCgpLT5zZXRJbm5lclRleHQodmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCi0g
ICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnXG4nKSB8fCB2YWx1ZS5lbmRzV2l0aCgnXHInKSkg
ewotICAgICAgICAgICAgaW5uZXJUZXh0RWxlbWVudCgpLT5hcHBlbmRDaGlsZChIVE1MQlJFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwot
ICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZS5lbmRzV2l0aCgnXG4nKSB8fCB2YWx1ZS5lbmRz
V2l0aCgnXHInKSkKKyAgICAgICAgICAgIGlubmVyVGV4dEVsZW1lbnQoKS0+YXBwZW5kQ2hpbGQo
SFRNTEJSRWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
ICAgICB9CiAKICAgICBzZXRGb3JtQ29udHJvbFZhbHVlTWF0Y2hlc1JlbmRlcmVyKHRydWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9UZXh0RmllbGRJbnB1dFR5cGUuY3BwCmluZGV4IDAyZWYyZDU2
MjQ2MjQ4N2QzNjM4MDM0YTZkNzVmZjgwYWNmMjNmNzIuLjU4ZjJhYTRlNWM0OGRmODJhNWVhOGFi
YjE2ODExNjRiNTFkNjE4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dEZp
ZWxkSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRGaWVsZElucHV0
VHlwZS5jcHAKQEAgLTQwNiwxMiArNDA2LDEwIEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1
cGRhdGVQbGFjZWhvbGRlclRleHQoKQogewogICAgIGlmICghc3VwcG9ydHNQbGFjZWhvbGRlcigp
KQogICAgICAgICByZXR1cm47Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU3RyaW5n
IHBsYWNlaG9sZGVyVGV4dCA9IGVsZW1lbnQoKS0+c3RyaXBwZWRQbGFjZWhvbGRlcigpOwogICAg
IGlmIChwbGFjZWhvbGRlclRleHQuaXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChtX3BsYWNlaG9s
ZGVyKSB7Ci0gICAgICAgICAgICBtX3BsYWNlaG9sZGVyLT5wYXJlbnROb2RlKCktPnJlbW92ZUNo
aWxkKG1fcGxhY2Vob2xkZXIuZ2V0KCksIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwor
ICAgICAgICAgICAgbV9wbGFjZWhvbGRlci0+cGFyZW50Tm9kZSgpLT5yZW1vdmVDaGlsZChtX3Bs
YWNlaG9sZGVyLmdldCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgICAgIG1fcGxh
Y2Vob2xkZXIuY2xlYXIoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CkBAIC00MTksMTEg
KzQxNyw5IEBAIHZvaWQgVGV4dEZpZWxkSW5wdXRUeXBlOjp1cGRhdGVQbGFjZWhvbGRlclRleHQo
KQogICAgIGlmICghbV9wbGFjZWhvbGRlcikgewogICAgICAgICBtX3BsYWNlaG9sZGVyID0gSFRN
TERpdkVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50KCktPmRvY3VtZW50KCkpOwogICAgICAgICBtX3Bs
YWNlaG9sZGVyLT5zZXRQc2V1ZG8oQXRvbWljU3RyaW5nKCItd2Via2l0LWlucHV0LXBsYWNlaG9s
ZGVyIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwotICAgICAgICBlbGVt
ZW50KCktPnVzZXJBZ2VudFNoYWRvd1Jvb3QoKS0+aW5zZXJ0QmVmb3JlKG1fcGxhY2Vob2xkZXIs
IG1fY29udGFpbmVyID8gbV9jb250YWluZXItPm5leHRTaWJsaW5nKCkgOiBpbm5lclRleHRFbGVt
ZW50KCktPm5leHRTaWJsaW5nKCksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgICAg
IGVsZW1lbnQoKS0+dXNlckFnZW50U2hhZG93Um9vdCgpLT5pbnNlcnRCZWZvcmUobV9wbGFjZWhv
bGRlciwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5lci0+bmV4dFNpYmxpbmcoKSA6IGlubmVyVGV4
dEVsZW1lbnQoKS0+bmV4dFNpYmxpbmcoKSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgfQot
ICAgIG1fcGxhY2Vob2xkZXItPnNldElubmVyVGV4dChwbGFjZWhvbGRlclRleHQsIGVjKTsKLSAg
ICBBU1NFUlQoIWVjKTsKKyAgICBtX3BsYWNlaG9sZGVyLT5zZXRJbm5lclRleHQocGxhY2Vob2xk
ZXJUZXh0LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICBlbGVtZW50KCktPmZpeFBsYWNlaG9s
ZGVyUmVuZGVyZXIobV9wbGFjZWhvbGRlci5nZXQoKSwgbV9jb250YWluZXIgPyBtX2NvbnRhaW5l
ci5nZXQoKSA6IG1faW5uZXJUZXh0LmdldCgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9WYWxpZGF0aW9uTWVzc2FnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1Zh
bGlkYXRpb25NZXNzYWdlLmNwcAppbmRleCBhNjM0M2Y5MjEzNGEwYzc5NGY0MWFiZTM1MzE5MmQ1
YWQzYWJiZjRmLi4zOWQ1NjI1MDRhMzQ3MGJjNDU1NmZjYjY1MTUwYmIyNDZhOTA1N2ViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL1ZhbGlkYXRpb25NZXNzYWdlLmNwcApAQCAtMTgzLDkgKzE4Myw3
IEBAIHZvaWQgVmFsaWRhdGlvbk1lc3NhZ2U6OmJ1aWxkQnViYmxlVHJlZShUaW1lcjxWYWxpZGF0
aW9uTWVzc2FnZT4qKQogICAgIC8vIE5lZWQgdG8gZm9yY2UgcG9zaXRpb246YWJzb2x1dGUgYmVj
YXVzZSBSZW5kZXJNZW51TGlzdCBkb2Vzbid0IGFzc3VtZSBpdAogICAgIC8vIGNvbnRhaW5zIG5v
bi1hYnNvbHV0ZSBvciBub24tZml4ZWQgcmVuZGVyZXJzIGFzIGNoaWxkcmVuLgogICAgIG1fYnVi
YmxlLT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5UG9zaXRpb24sIENTU1ZhbHVl
QWJzb2x1dGUpOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIHNoYWRvd1Jvb3QtPmFw
cGVuZENoaWxkKG1fYnViYmxlLmdldCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgc2hh
ZG93Um9vdC0+YXBwZW5kQ2hpbGQobV9idWJibGUuZ2V0KCksIEFTU0VSVF9OT19FWENFUFRJT04p
OwogICAgIG1fZWxlbWVudC0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CiAgICAgYWRqdXN0
QnViYmxlUG9zaXRpb24obV9lbGVtZW50LT5ib3VuZGluZ0JveCgpLCBtX2J1YmJsZS5nZXQoKSk7
CiAKQEAgLTE5MywxMCArMTkxLDggQEAgdm9pZCBWYWxpZGF0aW9uTWVzc2FnZTo6YnVpbGRCdWJi
bGVUcmVlKFRpbWVyPFZhbGlkYXRpb25NZXNzYWdlPiopCiAgICAgY2xpcHBlci0+c2V0UHNldWRv
KEF0b21pY1N0cmluZygiLXdlYmtpdC12YWxpZGF0aW9uLWJ1YmJsZS1hcnJvdy1jbGlwcGVyIiwg
QXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOwogICAgIFJlZlB0cjxIVE1MRGl2
RWxlbWVudD4gYnViYmxlQXJyb3cgPSBIVE1MRGl2RWxlbWVudDo6Y3JlYXRlKGRvYyk7CiAgICAg
YnViYmxlQXJyb3ctPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1i
dWJibGUtYXJyb3ciLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7Ci0gICAg
Y2xpcHBlci0+YXBwZW5kQ2hpbGQoYnViYmxlQXJyb3cucmVsZWFzZSgpLCBlYyk7Ci0gICAgQVNT
RVJUKCFlYyk7Ci0gICAgbV9idWJibGUtPmFwcGVuZENoaWxkKGNsaXBwZXIucmVsZWFzZSgpLCBl
Yyk7Ci0gICAgQVNTRVJUKCFlYyk7CisgICAgY2xpcHBlci0+YXBwZW5kQ2hpbGQoYnViYmxlQXJy
b3cucmVsZWFzZSgpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBtX2J1YmJsZS0+YXBwZW5k
Q2hpbGQoY2xpcHBlci5yZWxlYXNlKCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBtZXNzYWdlID0gSFRNTERpdkVsZW1lbnQ6OmNyZWF0ZShkb2MpOwog
ICAgIG1lc3NhZ2UtPnNldFBzZXVkbyhBdG9taWNTdHJpbmcoIi13ZWJraXQtdmFsaWRhdGlvbi1i
dWJibGUtbWVzc2FnZSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRU
eXBlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50
VHlwZXMuY3BwCmluZGV4IDk4ZDgwMWI5ODVkY2Q1OGFkNDZmN2U0ZWFiZjc5MzgwMTVlNWZkODgu
LmEwNDMxMzQ3ZjE0OTU3YmNiMGMwN2VhNzg1MWNhZTdlOWI4MWYzOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRUeXBlcy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudFR5cGVzLmNw
cApAQCAtMjkzLDExICsyOTMsOCBAQCB2b2lkIE1lZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1l
bnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICByZXR1cm47CiAK
ICAgICBmbG9hdCB2b2x1bWUgPSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHZhbHVlKCkudG9Eb3Vi
bGUoKSk7Ci0gICAgaWYgKHZvbHVtZSAhPSBtZWRpYUNvbnRyb2xsZXIoKS0+dm9sdW1lKCkpIHsK
LSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1lZGlhQ29udHJvbGxlcigp
LT5zZXRWb2x1bWUodm9sdW1lLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0KKyAg
ICBpZiAodm9sdW1lICE9IG1lZGlhQ29udHJvbGxlcigpLT52b2x1bWUoKSkKKyAgICAgICAgbWVk
aWFDb250cm9sbGVyKCktPnNldFZvbHVtZSh2b2x1bWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwog
ICAgIGlmIChtX2NsZWFyTXV0ZWRPblVzZXJJbnRlcmFjdGlvbikKICAgICAgICAgbWVkaWFDb250
cm9sbGVyKCktPnNldE11dGVkKGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNWY0MWI1MDc0NGQwODgxNzM1ZGFkOGNk
ODA4ODRkMTlkZDUwYTBkZi4uMTU4M2JlYjYxM2JiN2ZmZjZkZDk0MDI3M2YxY2FiODYzMjJmZTA4
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5j
cHAKQEAgLTU1MCwxMSArNTUwLDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29r
aWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlCiAgICAgICAg
ICAgICByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBnZXRSYXdDb29raWVzKGRvY3VtZW50LCBLVVJM
KFBhcnNlZFVSTFN0cmluZywgKml0KSwgZG9jQ29va2llc0xpc3QpOwogICAgICAgICAgICAgaWYg
KCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2Ug
bmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRhdGlvbiBv
ZiBjb29raWVzLgotICAgICAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAg
ICAgICAgICAgIHN0cmluZ0Nvb2tpZXNMaXN0LmFwcGVuZChkb2N1bWVudC0+Y29va2llKGVjKSk7
CisgICAgICAgICAgICAgICAgLy8KICAgICAgICAgICAgICAgICAvLyBFeGNlcHRpb25zIGFyZSB0
aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3b24ndCBoYXBwZW4g
aGVyZQogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRvY3VtZW50IiBpcyB0aGUgZG9jdW1l
bnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCi0gICAgICAgICAgICAgICAgQVNTRVJU
KCFlYyk7CisgICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QuYXBwZW5kKGRvY3VtZW50
LT5jb29raWUoQVNTRVJUX05PX0VYQ0VQVElPTikpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXplKCk7CiAg
ICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsrKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5k
ZXggNjNlNjM5ZWQ3M2RhMTdmNjU1NWQwZGY2YTZjYzZjYTU0ZTY4ZmZhZC4uZGFhY2I5NzA4NGU3
MTFhNmY1ODYxYWFiYjFkMmI1NGQwMmIzODE0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtODYyLDggKzg2Miw3IEBAIENTU1N0
eWxlUnVsZSogSW5zcGVjdG9yU3R5bGVTaGVldDo6YWRkUnVsZShjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBFeGNlcHRpb25Db2RlCiAgICAgaWYgKCFzdHlsZVJ1bGUpIHsKICAgICAgICAgLy8gV2hh
dCB3ZSBqdXN0IGFkZGVkIGhhcyB0byBiZSBhIENTU1N0eWxlUnVsZSAtIHdlIGNhbm5vdCBoYW5k
bGUgb3RoZXIgdHlwZXMgb2YgcnVsZXMgeWV0LgogICAgICAgICAvLyBJZiBpdCBpcyBub3QgYSBz
dHlsZSBydWxlLCBwcmV0ZW5kIHdlIG5ldmVyIHRvdWNoZWQgdGhlIHN0eWxlc2hlZXQuCi0gICAg
ICAgIG1fcGFnZVN0eWxlU2hlZXQtPmRlbGV0ZVJ1bGUobGFzdFJ1bGVJbmRleCwgZWMpOwotICAg
ICAgICBBU1NFUlQoIWVjKTsKKyAgICAgICAgbV9wYWdlU3R5bGVTaGVldC0+ZGVsZXRlUnVsZShs
YXN0UnVsZUluZGV4LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgZWMgPSBTWU5UQVhf
RVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAppbmRleCA1MTNmMDY2
ZmRlNzQyODhkNDVkMTg4YjEyMDFjODVhNzRiZTgxYWRkLi4xOGZjZTY1Y2Y2MDk1MGY5NjQ0Njcz
MGY5NzQzNWY1ZjUxMzFkZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTMwOCwxNCArMzA4LDEyIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQoRXZlbnRJRCBpZCwg
aW50IHRvdGFsLCBpbnQgZG9uZSkKIHsKICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7
CiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gRE9NQXBwbGljYXRpb25D
YWNoZTo6dG9FdmVudFR5cGUoaWQpOwotICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKICAgICAgICAgaWYgKGlkID09IFBST0dSRVNTX0VW
RU5UKQogICAgICAgICAgICAgZXZlbnQgPSBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBl
LCB0cnVlLCBkb25lLCB0b3RhbCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGV2ZW50ID0g
RXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgIG1fZG9tQXBw
bGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOwotICAgICAgICBBU1NFUlQo
IWVjKTsKKyAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KGV2ZW50
LCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2Vs
ZWN0aW9uLmNwcAppbmRleCBlMmQ3NzFhMTViMjIzODRiZWY2YmQ0NjgyYWFjNGY2YTkwZjQzNTA5
Li4yZDMxOTJiNmIzOTgyM2M4OTIzMTkwNTlmZTYwODA1MzE5MTkzNDZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01TZWxlY3Rpb24uY3BwCkBAIC00MzgsMTIgKzQzOCw5IEBAIHZvaWQgRE9NU2VsZWN0
aW9uOjpkZWxldGVGcm9tRG9jdW1lbnQoKQogICAgIGlmICghc2VsZWN0ZWRSYW5nZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgc2VsZWN0ZWRSYW5n
ZS0+ZGVsZXRlQ29udGVudHMoZWMpOwotICAgIEFTU0VSVCghZWMpOworICAgIHNlbGVjdGVkUmFu
Z2UtPmRlbGV0ZUNvbnRlbnRzKEFTU0VSVF9OT19FWENFUFRJT04pOwogCi0gICAgc2V0QmFzZUFu
ZEV4dGVudChzZWxlY3RlZFJhbmdlLT5zdGFydENvbnRhaW5lcihlYyksIHNlbGVjdGVkUmFuZ2Ut
PnN0YXJ0T2Zmc2V0KCksIHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCksIHNlbGVjdGVk
UmFuZ2UtPnN0YXJ0T2Zmc2V0KCksIGVjKTsKLSAgICBBU1NFUlQoIWVjKTsKKyAgICBzZXRCYXNl
QW5kRXh0ZW50KHNlbGVjdGVkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKEFTU0VSVF9OT19FWENFUFRJ
T04pLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgpLCBzZWxlY3RlZFJhbmdlLT5zdGFydENv
bnRhaW5lcigpLCBzZWxlY3RlZFJhbmdlLT5zdGFydE9mZnNldCgpLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKIH0KIAogYm9vbCBET01TZWxlY3Rpb246OmNvbnRhaW5zTm9kZShjb25zdCBOb2RlKiBu
LCBib29sIGFsbG93UGFydGlhbCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxl
ci5jcHAKaW5kZXggMTAzMjI4MzdhMjAzMjE2MDI1ZTMxOWI0YjgzMzUyMDk2NDQyMGJkMy4uZTE3
MTY1MzQ1OTQ5YmI4YzgxMjU4Yzk5MDE2OGJmNjIyNWQ3N2U5YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTcwMSw5ICs3MDEsNyBAQCBzdGF0aWMgdm9pZCBwcmVw
YXJlQ2xpcGJvYXJkRm9ySW1hZ2VEcmFnKEZyYW1lKiBzb3VyY2UsIENsaXBib2FyZCogY2xpcGJv
YXJkLCBFbAogewogICAgIGlmIChub2RlLT5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgpKSB7CiAg
ICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBzb3VyY2UtPmRvY3VtZW50KCktPmNyZWF0ZVJh
bmdlKCk7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICByYW5nZS0+c2Vs
ZWN0Tm9kZShub2RlLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOworICAgICAgICByYW5nZS0+
c2VsZWN0Tm9kZShub2RlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKICAgICAgICAgc291cmNlLT5z
ZWxlY3Rpb24oKS0+c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERP
V05TVFJFQU0pKTsKICAgICB9CiAgICAgY2xpcGJvYXJkLT5kZWNsYXJlQW5kV3JpdGVEcmFnSW1h
Z2Uobm9kZSwgIWxpbmtVUkwuaXNFbXB0eSgpID8gbGlua1VSTCA6IGltYWdlVVJMLCBsYWJlbCwg
c291cmNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wu
Y3BwCmluZGV4IGY5M2FkZGI0OTJlZTU0M2I0MjQxMTNmMjkzZWQ5MGVmOWRkZmEyYzQuLmM3YzU3
Njg5NjBiZjg0YWI0M2NkNTIxZWMwNjdmNDkxZDVmMDVkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMTI5LDEwICsxMjksOCBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyVGV4dENvbnRyb2w6OnZpc2libGVQb3NpdGlvbkZvckluZGV4
KGludCBpbmRleCkgY29uc3QKIHsKICAgICBpZiAoaW5kZXggPD0gMCkKICAgICAgICAgcmV0dXJu
IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2RlKGlubmVyVGV4dEVsZW1lbnQoKSks
IERPV05TVFJFQU0pOwotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50KCkpOwotICAgIHJhbmdlLT5zZWxlY3RO
b2RlQ29udGVudHMoaW5uZXJUZXh0RWxlbWVudCgpLCBlYyk7Ci0gICAgQVNTRVJUKCFlYyk7Cisg
ICAgcmFuZ2UtPnNlbGVjdE5vZGVDb250ZW50cyhpbm5lclRleHRFbGVtZW50KCksIEFTU0VSVF9O
T19FWENFUFRJT04pOwogICAgIENoYXJhY3Rlckl0ZXJhdG9yIGl0KHJhbmdlLmdldCgpKTsKICAg
ICBpdC5hZHZhbmNlKGluZGV4IC0gMSk7CiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbihpdC5y
YW5nZSgpLT5lbmRQb3NpdGlvbigpLCBVUFNUUkVBTSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>